From: Roman Bazalevsky Date: Sat, 6 Dec 2014 19:26:44 +0000 (+0300) Subject: Forked from git://github.com/merbanan/rtl_433.git X-Git-Url: https://git.rvb.name/rtl-433.git/commitdiff_plain/d608f7f08edef0577b9613f4ea36ffb7753287c3 Forked from git://github.com/merbanan/rtl_433.git - WH2 (Hame etc.) weather sensor protocol added - Sensors data printed to stdout instead of stderr - Unified single-line output format for simplified autoprocessing --- d608f7f08edef0577b9613f4ea36ffb7753287c3 diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..36da22f --- /dev/null +++ b/AUTHORS @@ -0,0 +1,4 @@ +Steve Markgraf +Dimitri Stolnikov +Hoernchen +Kyle Keen diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..61ceb08 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,145 @@ +# Copyright 2012 OSMOCOM Project +# +# This file is part of rtl-sdr +# +# GNU Radio is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GNU Radio is distributed in the hope that it will be useful, +# but WITHOUT 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 GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + + +######################################################################## +# Project setup +######################################################################## +cmake_minimum_required(VERSION 2.6) +project(rtlsdr C) + +#select the release build type by default to get optimization flags +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Release") + message(STATUS "Build type not specified: defaulting to release.") +endif(NOT CMAKE_BUILD_TYPE) +set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "") + +list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules) + +######################################################################## +# Compiler specific setup +######################################################################## +if(CMAKE_COMPILER_IS_GNUCC AND NOT WIN32) + ADD_DEFINITIONS(-Wall) + ADD_DEFINITIONS(-Wextra) + ADD_DEFINITIONS(-Wno-unused) + ADD_DEFINITIONS(-Wsign-compare) + ADD_DEFINITIONS(-g3 -O0) + #http://gcc.gnu.org/wiki/Visibility + add_definitions(-fvisibility=hidden) +endif() + +######################################################################## +# Find build dependencies +######################################################################## +find_package(PkgConfig) +find_package(LibUSB) +set(THREADS_USE_PTHREADS_WIN32 true) +find_package(Threads) + +if(NOT LIBUSB_FOUND) + message(FATAL_ERROR "LibUSB 1.0 required to compile rtl-sdr") +endif() +if(NOT THREADS_FOUND) + message(FATAL_ERROR "pthreads(-win32) required to compile rtl-sdr") +endif() +######################################################################## +# Setup the include and linker paths +######################################################################## +include_directories( + ${CMAKE_SOURCE_DIR}/include + ${LIBUSB_INCLUDE_DIR} + ${THREADS_PTHREADS_INCLUDE_DIR} +) + +#link_directories( +# ... +#) + +# Set component parameters +#set(INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include CACHE INTERNAL "" FORCE) + +######################################################################## +# Create uninstall target +######################################################################## +configure_file( + ${CMAKE_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake +@ONLY) + +add_custom_target(uninstall + ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake +) + +######################################################################## +# Install udev rules +######################################################################## +option(INSTALL_UDEV_RULES "Install udev rules for RTL-SDR" OFF) +if (INSTALL_UDEV_RULES) + install ( + FILES rtl-sdr.rules + DESTINATION "/etc/udev/rules.d" + COMPONENT "udev" + ) +else (INSTALL_UDEV_RULES) + message (STATUS "Udev rules not being installed, install them with -DINSTALL_UDEV_RULES=ON") +endif (INSTALL_UDEV_RULES) + +######################################################################## +# Add subdirectories +######################################################################## +add_subdirectory(include) +add_subdirectory(src) + +######################################################################## +# Create Pkg Config File +######################################################################## +FOREACH(inc ${LIBUSB_INCLUDE_DIR}) + LIST(APPEND RTLSDR_PC_CFLAGS "-I${inc}") +ENDFOREACH(inc) + +FOREACH(lib ${LIBUSB_LIBRARY_DIRS}) + LIST(APPEND RTLSDR_PC_LIBS "-L${lib}") +ENDFOREACH(lib) + +# use space-separation format for the pc file +STRING(REPLACE ";" " " RTLSDR_PC_CFLAGS "${RTLSDR_PC_CFLAGS}") +STRING(REPLACE ";" " " RTLSDR_PC_LIBS "${RTLSDR_PC_LIBS}") + +# unset these vars to avoid hard-coded paths to cross environment +IF(CMAKE_CROSSCOMPILING) + UNSET(RTLSDR_PC_CFLAGS) + UNSET(RTLSDR_PC_LIBS) +ENDIF(CMAKE_CROSSCOMPILING) + +set(prefix ${CMAKE_INSTALL_PREFIX}) +set(exec_prefix \${prefix}) +set(libdir \${exec_prefix}/lib) +set(includedir \${prefix}/include) + +CONFIGURE_FILE( + ${CMAKE_CURRENT_SOURCE_DIR}/librtlsdr.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/librtlsdr.pc +@ONLY) + +INSTALL( + FILES ${CMAKE_CURRENT_BINARY_DIR}/librtlsdr.pc + DESTINATION lib/pkgconfig +) diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..d511905 --- /dev/null +++ b/COPYING @@ -0,0 +1,339 @@ + GNU 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. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 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. + + , 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. diff --git a/Doxyfile.in b/Doxyfile.in new file mode 100644 index 0000000..9278d4e --- /dev/null +++ b/Doxyfile.in @@ -0,0 +1,1716 @@ +# Doxyfile 1.7.4 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" "). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = librtlsdr + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = @VERSION@ + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer +# a quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = "RTL-SDR library" + +# With the PROJECT_LOGO tag one can specify an logo or icon that is +# included in the documentation. The maximum height of the logo should not +# exceed 55 pixels and the maximum width should not exceed 200 pixels. +# Doxygen will copy the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = doc + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, +# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English +# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, +# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, +# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful if your file system +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given extension. +# Doxygen has a built-in mapping, but you can override or extend it using this +# tag. The format is ext=language, where ext is a file extension, and language +# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, +# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make +# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C +# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions +# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also makes the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and +# unions are shown inside the group in which they are included (e.g. using +# @ingroup) instead of on a separate page (for HTML and Man pages) or +# section (for LaTeX and RTF). + +INLINE_GROUPED_CLASSES = NO + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to +# determine which symbols to keep in memory and which to flush to disk. +# When the cache is full, less often used symbols will be written to disk. +# For small to medium size projects (<1000 input files) the default value is +# probably good enough. For larger projects a too small cache size can cause +# doxygen to be busy swapping symbols to and from disk most of the time +# causing a significant performance penalty. +# If the system has enough physical memory increasing the cache will improve the +# performance by keeping more symbols in memory. Note that the value works on +# a logarithmic scale so increasing the size by one will roughly double the +# memory usage. The cache size is given by this formula: +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, +# corresponding to a cache size of 2^16 = 65536 symbols + +SYMBOL_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespaces are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen +# will list include files with double quotes in the documentation +# rather than with sharp brackets. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen +# will sort the (brief and detailed) documentation of class members so that +# constructors and destructors are listed first. If set to NO (the default) +# the constructors will appear in the respective orders defined by +# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. +# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO +# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to +# do proper type resolution of all parameters of a function it will reject a +# match between the prototype and the implementation of a member function even +# if there is only one candidate or it is obvious which candidate to choose +# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen +# will still accept a match between prototype and implementation in such cases. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or macro consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and macros in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. +# This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. The create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. +# You can optionally specify a file name after the option, if omitted +# DoxygenLayout.xml will be used as the name of the layout file. + +LAYOUT_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# The WARN_NO_PARAMDOC option can be enabled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = include src + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh +# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py +# *.f90 *.f *.for *.vhd *.vhdl + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = images/ + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. +# If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. +# Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. +# The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty or if +# non of the patterns match the file name, INPUT_FILTER is applied. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) +# and it is also possible to disable source filtering for a specific pattern +# using *.ext= (so without naming a filter). This option only has effect when +# FILTER_SOURCE_FILES is enabled. + +FILTER_SOURCE_PATTERNS = + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. +# Otherwise they will link to the documentation. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. Note that when using a custom header you are responsible +# for the proper inclusion of any scripts and style sheets that doxygen +# needs, which is dependent on the configuration options used. +# It is adviced to generate a default header using "doxygen -w html +# header.html footer.html stylesheet.css YourConfigFile" and then modify +# that header. Note that the header is subject to change so you typically +# have to redo this when upgrading to a newer version of doxygen or when changing the value of configuration settings such as GENERATE_TREEVIEW! + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that +# the files will be copied as-is; there are no commands or markers available. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. +# Doxygen will adjust the colors in the stylesheet and background images +# according to this color. Hue is specified as an angle on a colorwheel, +# see http://en.wikipedia.org/wiki/Hue for more information. +# For instance the value 0 represents red, 60 is yellow, 120 is green, +# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. +# The allowed range is 0 to 359. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of +# the colors in the HTML output. For a value of 0 the output will use +# grayscales only. A value of 255 will produce the most vivid colors. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to +# the luminance component of the colors in the HTML output. Values below +# 100 gradually make the output lighter, whereas values above 100 make +# the output darker. The value divided by 100 is the actual gamma applied, +# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, +# and 100 does not change the gamma. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting +# this to NO can help when comparing the output of multiple runs. + +HTML_TIMESTAMP = YES + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. For this to work a browser that supports +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). + +HTML_DYNAMIC_SECTIONS = NO + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated +# that can be used as input for Qt's qhelpgenerator to generate a +# Qt Compressed Help (.qch) of the generated HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#namespace + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#virtual-folders + +QHP_VIRTUAL_FOLDER = doc + +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to +# add. For more information please see +# http://doc.trolltech.com/qthelpproject.html#custom-filters + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see +# +# Qt Help Project / Custom Filters. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's +# filter section matches. +# +# Qt Help Project / Filter Attributes. + +QHP_SECT_FILTER_ATTRS = + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files +# will be generated, which together with the HTML files, form an Eclipse help +# plugin. To install this plugin and make it available under the help contents +# menu in Eclipse, the contents of the directory containing the HTML and XML +# files needs to be copied into the plugins directory of eclipse. The name of +# the directory within the plugins directory should be the same as +# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before +# the help appears. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have +# this name. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values +# (range [0,1..20]) that doxygen will group on one line in the generated HTML +# documentation. Note that a value of 0 will completely suppress the enum +# values from appearing in the overview section. + +ENUM_VALUES_PER_LINE = 4 + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to YES, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). +# Windows users are probably better off using the HTML help feature. + +GENERATE_TREEVIEW = YES + +# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, +# and Class Hierarchy pages using a tree view instead of an ordered list. + +USE_INLINE_TREES = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open +# links to external symbols imported via tag files in a separate window. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are +# not supported properly for IE 6.0, but are supported on all modern browsers. +# Note that when changing this option you need to delete any form_*.png files +# in the HTML output before the changes have effect. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax +# (see http://www.mathjax.org) which uses client side Javascript for the +# rendering instead of using prerendered bitmaps. Use this if you do not +# have LaTeX installed or if you want to formulas look prettier in the HTML +# output. When enabled you also need to install MathJax separately and +# configure the path to it using the MATHJAX_RELPATH option. + +USE_MATHJAX = NO + +# When MathJax is enabled you need to specify the location relative to the +# HTML output directory using the MATHJAX_RELPATH option. The destination +# directory should contain the MathJax.js script. For instance, if the mathjax +# directory is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the +# mathjax.org site, so you can quickly see the result without installing +# MathJax, but it is strongly recommended to install a local copy of MathJax +# before deployment. + +MATHJAX_RELPATH = http://www.mathjax.org/mathjax + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box +# for the HTML output. The underlying search engine uses javascript +# and DHTML and should work on any modern browser. Note that when using +# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets +# (GENERATE_DOCSET) there is already a search function so this one should +# typically be disabled. For large projects the javascript based search engine +# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. + +SEARCHENGINE = NO + +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be +# implemented using a PHP enabled web server instead of at the web client +# using Javascript. Doxygen will generate the search PHP script and index +# file to put on the web server. The advantage of the server +# based approach is that it scales better to large projects and allows +# full text search. The disadvantages are that it is more difficult to setup +# and does not have live searching capabilities. + +SERVER_BASED_SEARCH = NO + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = YES + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. +# Note that when enabling USE_PDFLATEX this option is only used for +# generating bitmaps for formulas in the HTML output, but not in the +# Makefile that is written to the output directory. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for +# the generated latex document. The footer should contain everything after +# the last chapter. If it is left blank doxygen will generate a +# standard footer. Notice: only use this tag if you know what you are doing! + +LATEX_FOOTER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +# If LATEX_SOURCE_CODE is set to YES then doxygen will include +# source code with syntax highlighting in the LaTeX output. +# Note that which sources are shown also depends on other settings +# such as SOURCE_BROWSER. + +LATEX_SOURCE_CODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. +# This is useful +# if you want to understand what is going on. +# On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = NO + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# pointed to by INCLUDE_PATH will be searched when a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition that +# overrules the definition found in the source code. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all references to function-like macros +# that are alone on a line, have an all uppercase name, and do not end with a +# semicolon, because these will confuse the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option also works with HAVE_DOT disabled, but it is recommended to +# install and use dot, since it yields more powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is +# allowed to run in parallel. When set to 0 (the default) doxygen will +# base this on the number of processors available in the system. You can set it +# explicitly to a value larger than 0 to get control over the balance +# between CPU load and processing speed. + +DOT_NUM_THREADS = 0 + +# By default doxygen will write a font called Helvetica to the output +# directory and reference it in all dot files that doxygen generates. +# When you want a differently looking font you can specify the font name +# using DOT_FONTNAME. You need to make sure dot is able to find the font, +# which can be done by putting it in a standard location or by setting the +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory +# containing the font. + +DOT_FONTNAME = Helvetica + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the output directory to look for the +# FreeSans.ttf font (which doxygen will put there itself). If you specify a +# different font using DOT_FONTNAME you can set the path where dot +# can find it using this tag. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will generate a graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are svg, png, jpg, or gif. +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = /usr/bin/dot + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the +# \mscfile command). + +MSCFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..2ffa532 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,49 @@ +AUTOMAKE_OPTIONS = foreign dist-bzip2 1.6 +ACLOCAL_AMFLAGS = -I m4 + +INCLUDES = $(all_includes) -I$(top_srcdir)/include +SUBDIRS = include src + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = librtlsdr.pc + +BUILT_SOURCES = $(top_srcdir)/.version +$(top_srcdir)/.version: + echo $(VERSION) > $@-t && mv $@-t $@ +dist-hook: + echo $(VERSION) > $(distdir)/.tarball-version + +install-udev-rules: + $(INSTALL_DATA) rtl-sdr.rules /etc/udev/rules.d + +uninstall-udev-rules: + rm -rf /etc/udev/rules.d/rtl-sdr.rules + +EXTRA_DIST = git-version-gen + +if HAVE_DOXYGEN + +pkgdocdir=$(docdir)/$(PACKAGE)-$(VERSION) +doc_htmldir=$(pkgdocdir)/html + +doc_html_DATA = $(top_builddir)/doc/html.tar + +$(doc_html_DATA): $(top_builddir)/doc/html/index.html + cd $(top_builddir)/doc && tar cf html.tar html + +$(top_builddir)/doc/html/index.html: $(SOURCES) Doxyfile + @rm -rf doc + mkdir -p doc + $(DOXYGEN) Doxyfile + +install-data-hook: + cd $(DESTDIR)$(doc_htmldir) && tar xf html.tar --strip-components 1 && rm -f html.tar + +uninstall-hook: + cd $(DESTDIR) && rm -rf $(doc_htmldir) + +DX_CLEAN = doc/{html,latex}/* doc/html.tar + +endif + +MOSTLYCLEANFILES = $(DX_CLEAN) diff --git a/README b/README new file mode 100644 index 0000000..acc298b --- /dev/null +++ b/README @@ -0,0 +1,31 @@ +rtl_433, turns your Realtek RTL2832 based DVB dongle into a 433.92MHz generic data receiver +====================================================================== + +Installation instructions: + +cd rtl_433/ +mkdir build +cd build +cmake ../ +make + + +Running: + +./rtl_433 -h + +Usage: [-d device_index (default: 0)] + [-g gain (default: 0 for auto)] + [-a analyze mode, print a textual description of the signal] + [-l change the detection level used to determine pulses (0-32000) default 10000] + [-f change the receive frequency, default is 433.92MHz] + [-S force sync output (default: async)] + [-r read data from file instead of from a receiver] + filename (a '-' dumps samples to stdout) + + +./rtl_433 -a will run in analyze mode and you will get a text log of the received signal. +./rtl_433 -a file_name will save the demodulated signal in a file. The format of the file is 48kHz 16 bit samples. +./rtl_433 will run the software in receive mode. Some sensor data can be receviced. + +This software is mostly useable for developers right now. diff --git a/build/CMakeCache.txt b/build/CMakeCache.txt new file mode 100644 index 0000000..592a85f --- /dev/null +++ b/build/CMakeCache.txt @@ -0,0 +1,350 @@ +# This is the CMakeCache file. +# For build in directory: /home/rvb/git/rtl_433/build +# It was generated by CMake: /usr/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Path to a program. +CMAKE_AR:FILEPATH=/usr/bin/ar + +//Choose the type of build, options are: None(CMAKE_CXX_FLAGS or +// CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel. +CMAKE_BUILD_TYPE:STRING= + +//Enable/Disable color output during build. +CMAKE_COLOR_MAKEFILE:BOOL=ON + +//C compiler. +CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc + +//Flags used by the compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_C_FLAGS_DEBUG:STRING=-g + +//Flags used by the compiler during release minsize builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds (/MD /Ob1 /Oi +// /Ot /Oy /Gs will produce slightly less optimized but smaller +// files). +CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the compiler during Release with Debug Info builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Flags used by the linker. +CMAKE_EXE_LINKER_FLAGS:STRING=' ' + +//Flags used by the linker during debug builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during release minsize builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during release builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during Release with Debug Info builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Path to a program. +CMAKE_LINKER:FILEPATH=/usr/bin/ld + +//Path to a program. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make + +//Flags used by the linker during the creation of modules. +CMAKE_MODULE_LINKER_FLAGS:STRING=' ' + +//Flags used by the linker during debug builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during release minsize builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during release builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during Release with Debug Info builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=rtlsdr + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib + +//Flags used by the linker during the creation of dll's. +CMAKE_SHARED_LINKER_FLAGS:STRING=' ' + +//Flags used by the linker during debug builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during release minsize builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during release builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during Release with Debug Info builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during debug builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during release minsize builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during release builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during Release with Debug Info builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/usr/bin/strip + +//If true, cmake will use relative paths in makefiles and projects. +CMAKE_USE_RELATIVE_PATHS:BOOL=OFF + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Install udev rules for RTL-SDR +INSTALL_UDEV_RULES:BOOL=OFF + +//Path to a file. +LIBUSB_INCLUDE_DIR:PATH=/usr/include/libusb-1.0 + +//Path to a library. +LIBUSB_LIBRARIES:FILEPATH=/usr/lib/x86_64-linux-gnu/libusb-1.0.so + +//pkg-config executable +PKG_CONFIG_EXECUTABLE:FILEPATH=/usr/bin/pkg-config + +//Value Computed by CMake +rtlsdr_BINARY_DIR:STATIC=/home/rvb/git/rtl_433/build + +//Value Computed by CMake +rtlsdr_SOURCE_DIR:STATIC=/home/rvb/git/rtl_433 + +//Dependencies for the target +rtlsdr_shared_LIB_DEPENDS:STATIC=general;/usr/lib/x86_64-linux-gnu/libusb-1.0.so; + +//Dependencies for the target +rtlsdr_static_LIB_DEPENDS:STATIC=general;/usr/lib/x86_64-linux-gnu/libusb-1.0.so; + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_BUILD_TOOL +CMAKE_BUILD_TOOL-ADVANCED:INTERNAL=1 +//What is the target build tool cmake is generating for. +CMAKE_BUILD_TOOL:INTERNAL=/usr/bin/make +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/home/rvb/git/rtl_433/build +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=2 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=8 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=12 +//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE +CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest +//ADVANCED property for variable: CMAKE_C_COMPILER +CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Unix Makefiles +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Have library pthreads +CMAKE_HAVE_PTHREADS_CREATE:INTERNAL= +//Have library pthread +CMAKE_HAVE_PTHREAD_CREATE:INTERNAL=1 +//Have include pthread.h +CMAKE_HAVE_PTHREAD_H:INTERNAL=1 +//Start directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/home/rvb/git/rtl_433 +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_LOCAL_GENERATORS:INTERNAL=3 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/share/cmake-2.8 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/bin/uname +//ADVANCED property for variable: CMAKE_USE_RELATIVE_PATHS +CMAKE_USE_RELATIVE_PATHS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//Details about finding PkgConfig +FIND_PACKAGE_MESSAGE_DETAILS_PkgConfig:INTERNAL=[/usr/bin/pkg-config][v0.26()] +//Details about finding Threads +FIND_PACKAGE_MESSAGE_DETAILS_Threads:INTERNAL=[TRUE][v()] +//libusb-1.0 found +LIBUSB_FOUND:INTERNAL=TRUE +//ADVANCED property for variable: LIBUSB_INCLUDE_DIR +LIBUSB_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: LIBUSB_LIBRARIES +LIBUSB_LIBRARIES-ADVANCED:INTERNAL=1 +LIBUSB_PKG_CFLAGS:INTERNAL=-I/usr/include/libusb-1.0 +LIBUSB_PKG_CFLAGS_I:INTERNAL= +LIBUSB_PKG_CFLAGS_OTHER:INTERNAL= +LIBUSB_PKG_FOUND:INTERNAL=1 +LIBUSB_PKG_INCLUDEDIR:INTERNAL=/usr/include +LIBUSB_PKG_INCLUDE_DIRS:INTERNAL=/usr/include/libusb-1.0 +LIBUSB_PKG_LDFLAGS:INTERNAL=-lusb-1.0 +LIBUSB_PKG_LDFLAGS_OTHER:INTERNAL= +LIBUSB_PKG_LIBDIR:INTERNAL=/usr/lib/x86_64-linux-gnu +LIBUSB_PKG_LIBRARIES:INTERNAL=usb-1.0 +LIBUSB_PKG_LIBRARY_DIRS:INTERNAL= +LIBUSB_PKG_LIBS:INTERNAL= +LIBUSB_PKG_LIBS_L:INTERNAL= +LIBUSB_PKG_LIBS_OTHER:INTERNAL= +LIBUSB_PKG_LIBS_PATHS:INTERNAL= +LIBUSB_PKG_PREFIX:INTERNAL=/usr +LIBUSB_PKG_STATIC_CFLAGS:INTERNAL=-I/usr/include/libusb-1.0 +LIBUSB_PKG_STATIC_CFLAGS_I:INTERNAL= +LIBUSB_PKG_STATIC_CFLAGS_OTHER:INTERNAL= +LIBUSB_PKG_STATIC_INCLUDE_DIRS:INTERNAL=/usr/include/libusb-1.0 +LIBUSB_PKG_STATIC_LDFLAGS:INTERNAL=-pthread;-lusb-1.0;-ludev +LIBUSB_PKG_STATIC_LDFLAGS_OTHER:INTERNAL=-pthread +LIBUSB_PKG_STATIC_LIBDIR:INTERNAL= +LIBUSB_PKG_STATIC_LIBRARIES:INTERNAL=usb-1.0;udev +LIBUSB_PKG_STATIC_LIBRARY_DIRS:INTERNAL= +LIBUSB_PKG_STATIC_LIBS:INTERNAL= +LIBUSB_PKG_STATIC_LIBS_L:INTERNAL= +LIBUSB_PKG_STATIC_LIBS_OTHER:INTERNAL= +LIBUSB_PKG_STATIC_LIBS_PATHS:INTERNAL= +LIBUSB_PKG_VERSION:INTERNAL=1.0.17 +LIBUSB_PKG_libusb-1.0_INCLUDEDIR:INTERNAL= +LIBUSB_PKG_libusb-1.0_LIBDIR:INTERNAL= +LIBUSB_PKG_libusb-1.0_PREFIX:INTERNAL= +LIBUSB_PKG_libusb-1.0_VERSION:INTERNAL= +//ADVANCED property for variable: PKG_CONFIG_EXECUTABLE +PKG_CONFIG_EXECUTABLE-ADVANCED:INTERNAL=1 +__pkg_config_checked_LIBUSB_PKG:INTERNAL=1 + diff --git a/build/CMakeFiles/2.8.12.2/CMakeCCompiler.cmake b/build/CMakeFiles/2.8.12.2/CMakeCCompiler.cmake new file mode 100644 index 0000000..83254ce --- /dev/null +++ b/build/CMakeFiles/2.8.12.2/CMakeCCompiler.cmake @@ -0,0 +1,56 @@ +set(CMAKE_C_COMPILER "/usr/bin/cc") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "GNU") +set(CMAKE_C_COMPILER_VERSION "4.8.2") +set(CMAKE_C_PLATFORM_ID "Linux") + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_COMPILER_IS_GNUCC 1) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) +set(CMAKE_COMPILER_IS_MINGW ) +set(CMAKE_COMPILER_IS_CYGWIN ) +if(CMAKE_COMPILER_IS_CYGWIN) + set(CYGWIN 1) + set(UNIX 1) +endif() + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +if(CMAKE_COMPILER_IS_MINGW) + set(MINGW 1) +endif() +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "8") +set(CMAKE_C_COMPILER_ABI "ELF") +set(CMAKE_C_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") +endif() + + + + +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "c") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/4.8;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") + + + diff --git a/build/CMakeFiles/2.8.12.2/CMakeDetermineCompilerABI_C.bin b/build/CMakeFiles/2.8.12.2/CMakeDetermineCompilerABI_C.bin new file mode 100755 index 0000000..2f2ebe4 Binary files /dev/null and b/build/CMakeFiles/2.8.12.2/CMakeDetermineCompilerABI_C.bin differ diff --git a/build/CMakeFiles/2.8.12.2/CMakeSystem.cmake b/build/CMakeFiles/2.8.12.2/CMakeSystem.cmake new file mode 100644 index 0000000..e8bbe02 --- /dev/null +++ b/build/CMakeFiles/2.8.12.2/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Linux-3.13.0-40-generic") +set(CMAKE_HOST_SYSTEM_NAME "Linux") +set(CMAKE_HOST_SYSTEM_VERSION "3.13.0-40-generic") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + + + +set(CMAKE_SYSTEM "Linux-3.13.0-40-generic") +set(CMAKE_SYSTEM_NAME "Linux") +set(CMAKE_SYSTEM_VERSION "3.13.0-40-generic") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/build/CMakeFiles/2.8.12.2/CompilerIdC/CMakeCCompilerId.c b/build/CMakeFiles/2.8.12.2/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000..cba81d4 --- /dev/null +++ b/build/CMakeFiles/2.8.12.2/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,389 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH HEX(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC(__WATCOMC__ % 100) + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_C = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) +# if defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" +# else +# if __IBMC__ >= 800 +# define COMPILER_ID "XL" +# else +# define COMPILER_ID "VisualAge" +# endif + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +/* Analog VisualDSP++ >= 4.5.6 */ +#elif defined(__VISUALDSPVERSION__) +# define COMPILER_ID "ADSP" + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) + +/* Analog VisualDSP++ < 4.5.6 */ +#elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" + +/* IAR Systems compiler for embedded systems. + http://www.iar.com */ +#elif defined(__IAR_SYSTEMS_ICC__ ) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" + +/* sdcc, the small devices C compiler for embedded systems, + http://sdcc.sourceforge.net */ +#elif defined(SDCC) +# define COMPILER_ID "SDCC" + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) + +#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION) +# define COMPILER_ID "MIPSpro" +# if defined(_SGI_COMPILER_VERSION) + /* _SGI_COMPILER_VERSION = VRP */ +# define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100) +# define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10) +# define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION % 10) +# else + /* _COMPILER_VERSION = VRP */ +# define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100) +# define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10) +# define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION % 10) +# endif + +/* This compiler is either not known or is too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__sgi) +# define COMPILER_ID "MIPSpro" + +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" + +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__sgi) || defined(__sgi__) || defined(_SGI) +# define PLATFORM_ID "IRIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#else /* unknown platform */ +# define PLATFORM_ID "" + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM) +# define ARCHITECTURE_ID "ARM" + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID "" +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif + (void)argv; + return require; +} +#endif diff --git a/build/CMakeFiles/2.8.12.2/CompilerIdC/a.out b/build/CMakeFiles/2.8.12.2/CompilerIdC/a.out new file mode 100755 index 0000000..33a3d2b Binary files /dev/null and b/build/CMakeFiles/2.8.12.2/CompilerIdC/a.out differ diff --git a/build/CMakeFiles/CMakeDirectoryInformation.cmake b/build/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..277cdd8 --- /dev/null +++ b/build/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +# Relative path conversion top directories. +SET(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/rvb/git/rtl_433") +SET(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/rvb/git/rtl_433/build") + +# Force unix paths in dependencies. +SET(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +SET(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +SET(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +SET(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +SET(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/build/CMakeFiles/CMakeError.log b/build/CMakeFiles/CMakeError.log new file mode 100644 index 0000000..7a9c36e --- /dev/null +++ b/build/CMakeFiles/CMakeError.log @@ -0,0 +1,19 @@ +Determining if the function pthread_create exists in the pthreads failed with the following output: +Change Dir: /home/rvb/git/rtl_433/build/CMakeFiles/CMakeTmp + +Run Build Command:/usr/bin/make "cmTryCompileExec505551368/fast" +/usr/bin/make -f CMakeFiles/cmTryCompileExec505551368.dir/build.make CMakeFiles/cmTryCompileExec505551368.dir/build +make[1]: Вход в каталог `/home/rvb/git/rtl_433/build/CMakeFiles/CMakeTmp' +/usr/bin/cmake -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles/CMakeTmp/CMakeFiles 1 +Building C object CMakeFiles/cmTryCompileExec505551368.dir/CheckFunctionExists.c.o +/usr/bin/cc -DCHECK_FUNCTION_EXISTS=pthread_create -o CMakeFiles/cmTryCompileExec505551368.dir/CheckFunctionExists.c.o -c /usr/share/cmake-2.8/Modules/CheckFunctionExists.c +Linking C executable cmTryCompileExec505551368 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec505551368.dir/link.txt --verbose=1 +/usr/bin/cc -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTryCompileExec505551368.dir/CheckFunctionExists.c.o -o cmTryCompileExec505551368 -rdynamic -lpthreads +/usr/bin/ld: cannot find -lpthreads +collect2: error: ld returned 1 exit status +make[1]: *** [cmTryCompileExec505551368] Ошибка 1 +make[1]: Выход из каталога `/home/rvb/git/rtl_433/build/CMakeFiles/CMakeTmp' +make: *** [cmTryCompileExec505551368/fast] Ошибка 2 + + diff --git a/build/CMakeFiles/CMakeOutput.log b/build/CMakeFiles/CMakeOutput.log new file mode 100644 index 0000000..440dd62 --- /dev/null +++ b/build/CMakeFiles/CMakeOutput.log @@ -0,0 +1,163 @@ +The system is: Linux - 3.13.0-40-generic - x86_64 +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: /usr/bin/cc +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out" + +The C compiler identification is GNU, found in "/home/rvb/git/rtl_433/build/CMakeFiles/2.8.12.2/CompilerIdC/a.out" + +Determining if the C compiler works passed with the following output: +Change Dir: /home/rvb/git/rtl_433/build/CMakeFiles/CMakeTmp + +Run Build Command:/usr/bin/make "cmTryCompileExec101314951/fast" +/usr/bin/make -f CMakeFiles/cmTryCompileExec101314951.dir/build.make CMakeFiles/cmTryCompileExec101314951.dir/build +make[1]: Вход в каталог `/home/rvb/git/rtl_433/build/CMakeFiles/CMakeTmp' +/usr/bin/cmake -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles/CMakeTmp/CMakeFiles 1 +Building C object CMakeFiles/cmTryCompileExec101314951.dir/testCCompiler.c.o +/usr/bin/cc -o CMakeFiles/cmTryCompileExec101314951.dir/testCCompiler.c.o -c /home/rvb/git/rtl_433/build/CMakeFiles/CMakeTmp/testCCompiler.c +Linking C executable cmTryCompileExec101314951 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec101314951.dir/link.txt --verbose=1 +/usr/bin/cc CMakeFiles/cmTryCompileExec101314951.dir/testCCompiler.c.o -o cmTryCompileExec101314951 -rdynamic +make[1]: Выход из каталога `/home/rvb/git/rtl_433/build/CMakeFiles/CMakeTmp' + + +Detecting C compiler ABI info compiled with the following output: +Change Dir: /home/rvb/git/rtl_433/build/CMakeFiles/CMakeTmp + +Run Build Command:/usr/bin/make "cmTryCompileExec2457921890/fast" +/usr/bin/make -f CMakeFiles/cmTryCompileExec2457921890.dir/build.make CMakeFiles/cmTryCompileExec2457921890.dir/build +make[1]: Вход в каталог `/home/rvb/git/rtl_433/build/CMakeFiles/CMakeTmp' +/usr/bin/cmake -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles/CMakeTmp/CMakeFiles 1 +Building C object CMakeFiles/cmTryCompileExec2457921890.dir/CMakeCCompilerABI.c.o +/usr/bin/cc -o CMakeFiles/cmTryCompileExec2457921890.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-2.8/Modules/CMakeCCompilerABI.c +Linking C executable cmTryCompileExec2457921890 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec2457921890.dir/link.txt --verbose=1 +/usr/bin/cc -v CMakeFiles/cmTryCompileExec2457921890.dir/CMakeCCompilerABI.c.o -o cmTryCompileExec2457921890 -rdynamic +Using built-in specs. +COLLECT_GCC=/usr/bin/cc +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.2-19ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTryCompileExec2457921890' '-rdynamic' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/4.8/collect2 --sysroot=/ --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o cmTryCompileExec2457921890 /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/4.8 -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.. CMakeFiles/cmTryCompileExec2457921890.dir/CMakeCCompilerABI.c.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-linux-gnu/4.8/crtend.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o +make[1]: Выход из каталога `/home/rvb/git/rtl_433/build/CMakeFiles/CMakeTmp' + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/rvb/git/rtl_433/build/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command:/usr/bin/make "cmTryCompileExec2457921890/fast"] + ignore line: [/usr/bin/make -f CMakeFiles/cmTryCompileExec2457921890.dir/build.make CMakeFiles/cmTryCompileExec2457921890.dir/build] + ignore line: [make[1]: Вход в каталог `/home/rvb/git/rtl_433/build/CMakeFiles/CMakeTmp'] + ignore line: [/usr/bin/cmake -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles/CMakeTmp/CMakeFiles 1] + ignore line: [Building C object CMakeFiles/cmTryCompileExec2457921890.dir/CMakeCCompilerABI.c.o] + ignore line: [/usr/bin/cc -o CMakeFiles/cmTryCompileExec2457921890.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-2.8/Modules/CMakeCCompilerABI.c] + ignore line: [Linking C executable cmTryCompileExec2457921890] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec2457921890.dir/link.txt --verbose=1] + ignore line: [/usr/bin/cc -v CMakeFiles/cmTryCompileExec2457921890.dir/CMakeCCompilerABI.c.o -o cmTryCompileExec2457921890 -rdynamic ] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/cc] + ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.2-19ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) ] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTryCompileExec2457921890' '-rdynamic' '-mtune=generic' '-march=x86-64'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/4.8/collect2 --sysroot=/ --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o cmTryCompileExec2457921890 /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/4.8 -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.. CMakeFiles/cmTryCompileExec2457921890.dir/CMakeCCompilerABI.c.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-linux-gnu/4.8/crtend.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o] + arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/collect2] ==> ignore + arg [--sysroot=/] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--as-needed] ==> ignore + arg [-export-dynamic] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-zrelro] ==> ignore + arg [-o] ==> ignore + arg [cmTryCompileExec2457921890] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o] ==> ignore + arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.8] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.8] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib] + arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] + arg [-L/lib/../lib] ==> dir [/lib/../lib] + arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] + arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../..] + arg [CMakeFiles/cmTryCompileExec2457921890.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [-lgcc] ==> lib [gcc] + arg [--as-needed] ==> ignore + arg [-lgcc_s] ==> lib [gcc_s] + arg [--no-as-needed] ==> ignore + arg [-lc] ==> lib [c] + arg [-lgcc] ==> lib [gcc] + arg [--as-needed] ==> ignore + arg [-lgcc_s] ==> lib [gcc_s] + arg [--no-as-needed] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/crtend.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o] ==> ignore + remove lib [gcc] + remove lib [gcc_s] + remove lib [gcc] + remove lib [gcc_s] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/4.8] ==> [/usr/lib/gcc/x86_64-linux-gnu/4.8] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib] ==> [/usr/lib] + collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] + collapse library dir [/lib/../lib] ==> [/lib] + collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/../lib] ==> [/usr/lib] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../..] ==> [/usr/lib] + implicit libs: [c] + implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/4.8;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib] + implicit fwks: [] + + +Determining if files pthread.h exist passed with the following output: +Change Dir: /home/rvb/git/rtl_433/build/CMakeFiles/CMakeTmp + +Run Build Command:/usr/bin/make "cmTryCompileExec2733461284/fast" +/usr/bin/make -f CMakeFiles/cmTryCompileExec2733461284.dir/build.make CMakeFiles/cmTryCompileExec2733461284.dir/build +make[1]: Вход в каталог `/home/rvb/git/rtl_433/build/CMakeFiles/CMakeTmp' +/usr/bin/cmake -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles/CMakeTmp/CMakeFiles 1 +Building C object CMakeFiles/cmTryCompileExec2733461284.dir/CheckIncludeFiles.c.o +/usr/bin/cc -o CMakeFiles/cmTryCompileExec2733461284.dir/CheckIncludeFiles.c.o -c /home/rvb/git/rtl_433/build/CMakeFiles/CMakeTmp/CheckIncludeFiles.c +Linking C executable cmTryCompileExec2733461284 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec2733461284.dir/link.txt --verbose=1 +/usr/bin/cc CMakeFiles/cmTryCompileExec2733461284.dir/CheckIncludeFiles.c.o -o cmTryCompileExec2733461284 -rdynamic +make[1]: Выход из каталога `/home/rvb/git/rtl_433/build/CMakeFiles/CMakeTmp' + + +Determining if the function pthread_create exists in the pthread passed with the following output: +Change Dir: /home/rvb/git/rtl_433/build/CMakeFiles/CMakeTmp + +Run Build Command:/usr/bin/make "cmTryCompileExec3300727535/fast" +/usr/bin/make -f CMakeFiles/cmTryCompileExec3300727535.dir/build.make CMakeFiles/cmTryCompileExec3300727535.dir/build +make[1]: Вход в каталог `/home/rvb/git/rtl_433/build/CMakeFiles/CMakeTmp' +/usr/bin/cmake -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles/CMakeTmp/CMakeFiles 1 +Building C object CMakeFiles/cmTryCompileExec3300727535.dir/CheckFunctionExists.c.o +/usr/bin/cc -DCHECK_FUNCTION_EXISTS=pthread_create -o CMakeFiles/cmTryCompileExec3300727535.dir/CheckFunctionExists.c.o -c /usr/share/cmake-2.8/Modules/CheckFunctionExists.c +Linking C executable cmTryCompileExec3300727535 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec3300727535.dir/link.txt --verbose=1 +/usr/bin/cc -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTryCompileExec3300727535.dir/CheckFunctionExists.c.o -o cmTryCompileExec3300727535 -rdynamic -lpthread +make[1]: Выход из каталога `/home/rvb/git/rtl_433/build/CMakeFiles/CMakeTmp' + + diff --git a/build/CMakeFiles/CMakeRuleHashes.txt b/build/CMakeFiles/CMakeRuleHashes.txt new file mode 100644 index 0000000..797a413 --- /dev/null +++ b/build/CMakeFiles/CMakeRuleHashes.txt @@ -0,0 +1,2 @@ +# Hashes of file build rules. +0db8b50fb6254a99627991da835cfe0c CMakeFiles/uninstall diff --git a/build/CMakeFiles/Makefile.cmake b/build/CMakeFiles/Makefile.cmake new file mode 100644 index 0000000..543e99a --- /dev/null +++ b/build/CMakeFiles/Makefile.cmake @@ -0,0 +1,65 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +# The generator used is: +SET(CMAKE_DEPENDS_GENERATOR "Unix Makefiles") + +# The top level Makefile was generated from the following files: +SET(CMAKE_MAKEFILE_DEPENDS + "CMakeCache.txt" + "../CMakeLists.txt" + "CMakeFiles/2.8.12.2/CMakeCCompiler.cmake" + "CMakeFiles/2.8.12.2/CMakeSystem.cmake" + "../cmake/Modules/FindLibUSB.cmake" + "../cmake/Modules/FindThreads.cmake" + "../cmake/cmake_uninstall.cmake.in" + "../include/CMakeLists.txt" + "../librtlsdr.pc.in" + "../src/CMakeLists.txt" + "/usr/share/cmake-2.8/Modules/CMakeCInformation.cmake" + "/usr/share/cmake-2.8/Modules/CMakeCommonLanguageInclude.cmake" + "/usr/share/cmake-2.8/Modules/CMakeGenericSystem.cmake" + "/usr/share/cmake-2.8/Modules/CMakeParseArguments.cmake" + "/usr/share/cmake-2.8/Modules/CMakeSystemSpecificInformation.cmake" + "/usr/share/cmake-2.8/Modules/CheckIncludeFiles.cmake" + "/usr/share/cmake-2.8/Modules/CheckLibraryExists.cmake" + "/usr/share/cmake-2.8/Modules/Compiler/GNU-C.cmake" + "/usr/share/cmake-2.8/Modules/Compiler/GNU.cmake" + "/usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake" + "/usr/share/cmake-2.8/Modules/FindPackageMessage.cmake" + "/usr/share/cmake-2.8/Modules/FindPkgConfig.cmake" + "/usr/share/cmake-2.8/Modules/MultiArchCross.cmake" + "/usr/share/cmake-2.8/Modules/Platform/Linux-GNU-C.cmake" + "/usr/share/cmake-2.8/Modules/Platform/Linux-GNU.cmake" + "/usr/share/cmake-2.8/Modules/Platform/Linux.cmake" + "/usr/share/cmake-2.8/Modules/Platform/UnixPaths.cmake" + ) + +# The corresponding makefile is: +SET(CMAKE_MAKEFILE_OUTPUTS + "Makefile" + "CMakeFiles/cmake.check_cache" + ) + +# Byproducts of CMake generate step: +SET(CMAKE_MAKEFILE_PRODUCTS + "cmake_uninstall.cmake" + "librtlsdr.pc" + "CMakeFiles/CMakeDirectoryInformation.cmake" + "include/CMakeFiles/CMakeDirectoryInformation.cmake" + "src/CMakeFiles/CMakeDirectoryInformation.cmake" + ) + +# Dependency information for all targets: +SET(CMAKE_DEPEND_INFO_FILES + "CMakeFiles/uninstall.dir/DependInfo.cmake" + "src/CMakeFiles/rtl_433.dir/DependInfo.cmake" + "src/CMakeFiles/rtl_adsb.dir/DependInfo.cmake" + "src/CMakeFiles/rtl_eeprom.dir/DependInfo.cmake" + "src/CMakeFiles/rtl_fm.dir/DependInfo.cmake" + "src/CMakeFiles/rtl_sdr.dir/DependInfo.cmake" + "src/CMakeFiles/rtl_tcp.dir/DependInfo.cmake" + "src/CMakeFiles/rtl_test.dir/DependInfo.cmake" + "src/CMakeFiles/rtlsdr_shared.dir/DependInfo.cmake" + "src/CMakeFiles/rtlsdr_static.dir/DependInfo.cmake" + ) diff --git a/build/CMakeFiles/Makefile2 b/build/CMakeFiles/Makefile2 new file mode 100644 index 0000000..db11875 --- /dev/null +++ b/build/CMakeFiles/Makefile2 @@ -0,0 +1,456 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +# The main recursive all target +all: +.PHONY : all + +# The main recursive preinstall target +preinstall: +.PHONY : preinstall + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/rvb/git/rtl_433 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/rvb/git/rtl_433/build + +#============================================================================= +# Target rules for target CMakeFiles/uninstall.dir + +# All Build rule for target. +CMakeFiles/uninstall.dir/all: + $(MAKE) -f CMakeFiles/uninstall.dir/build.make CMakeFiles/uninstall.dir/depend + $(MAKE) -f CMakeFiles/uninstall.dir/build.make CMakeFiles/uninstall.dir/build + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles + @echo "Built target uninstall" +.PHONY : CMakeFiles/uninstall.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/uninstall.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles 0 + $(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/uninstall.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles 0 +.PHONY : CMakeFiles/uninstall.dir/rule + +# Convenience name for target. +uninstall: CMakeFiles/uninstall.dir/rule +.PHONY : uninstall + +# clean rule for target. +CMakeFiles/uninstall.dir/clean: + $(MAKE) -f CMakeFiles/uninstall.dir/build.make CMakeFiles/uninstall.dir/clean +.PHONY : CMakeFiles/uninstall.dir/clean + +# clean rule for target. +clean: CMakeFiles/uninstall.dir/clean +.PHONY : clean + +#============================================================================= +# Directory level rules for directory include + +# Convenience name for "all" pass in the directory. +include/all: +.PHONY : include/all + +# Convenience name for "clean" pass in the directory. +include/clean: +.PHONY : include/clean + +# Convenience name for "preinstall" pass in the directory. +include/preinstall: +.PHONY : include/preinstall + +#============================================================================= +# Directory level rules for directory src + +# Convenience name for "all" pass in the directory. +src/all: src/CMakeFiles/rtl_433.dir/all +src/all: src/CMakeFiles/rtl_adsb.dir/all +src/all: src/CMakeFiles/rtl_eeprom.dir/all +src/all: src/CMakeFiles/rtl_fm.dir/all +src/all: src/CMakeFiles/rtl_sdr.dir/all +src/all: src/CMakeFiles/rtl_tcp.dir/all +src/all: src/CMakeFiles/rtl_test.dir/all +src/all: src/CMakeFiles/rtlsdr_shared.dir/all +src/all: src/CMakeFiles/rtlsdr_static.dir/all +.PHONY : src/all + +# Convenience name for "clean" pass in the directory. +src/clean: src/CMakeFiles/rtl_433.dir/clean +src/clean: src/CMakeFiles/rtl_adsb.dir/clean +src/clean: src/CMakeFiles/rtl_eeprom.dir/clean +src/clean: src/CMakeFiles/rtl_fm.dir/clean +src/clean: src/CMakeFiles/rtl_sdr.dir/clean +src/clean: src/CMakeFiles/rtl_tcp.dir/clean +src/clean: src/CMakeFiles/rtl_test.dir/clean +src/clean: src/CMakeFiles/rtlsdr_shared.dir/clean +src/clean: src/CMakeFiles/rtlsdr_static.dir/clean +.PHONY : src/clean + +# Convenience name for "preinstall" pass in the directory. +src/preinstall: +.PHONY : src/preinstall + +#============================================================================= +# Target rules for target src/CMakeFiles/rtl_433.dir + +# All Build rule for target. +src/CMakeFiles/rtl_433.dir/all: src/CMakeFiles/rtlsdr_shared.dir/all + $(MAKE) -f src/CMakeFiles/rtl_433.dir/build.make src/CMakeFiles/rtl_433.dir/depend + $(MAKE) -f src/CMakeFiles/rtl_433.dir/build.make src/CMakeFiles/rtl_433.dir/build + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles 1 + @echo "Built target rtl_433" +.PHONY : src/CMakeFiles/rtl_433.dir/all + +# Include target in all. +all: src/CMakeFiles/rtl_433.dir/all +.PHONY : all + +# Build rule for subdir invocation for target. +src/CMakeFiles/rtl_433.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles 7 + $(MAKE) -f CMakeFiles/Makefile2 src/CMakeFiles/rtl_433.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles 0 +.PHONY : src/CMakeFiles/rtl_433.dir/rule + +# Convenience name for target. +rtl_433: src/CMakeFiles/rtl_433.dir/rule +.PHONY : rtl_433 + +# clean rule for target. +src/CMakeFiles/rtl_433.dir/clean: + $(MAKE) -f src/CMakeFiles/rtl_433.dir/build.make src/CMakeFiles/rtl_433.dir/clean +.PHONY : src/CMakeFiles/rtl_433.dir/clean + +# clean rule for target. +clean: src/CMakeFiles/rtl_433.dir/clean +.PHONY : clean + +#============================================================================= +# Target rules for target src/CMakeFiles/rtl_adsb.dir + +# All Build rule for target. +src/CMakeFiles/rtl_adsb.dir/all: src/CMakeFiles/rtlsdr_shared.dir/all + $(MAKE) -f src/CMakeFiles/rtl_adsb.dir/build.make src/CMakeFiles/rtl_adsb.dir/depend + $(MAKE) -f src/CMakeFiles/rtl_adsb.dir/build.make src/CMakeFiles/rtl_adsb.dir/build + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles 2 + @echo "Built target rtl_adsb" +.PHONY : src/CMakeFiles/rtl_adsb.dir/all + +# Include target in all. +all: src/CMakeFiles/rtl_adsb.dir/all +.PHONY : all + +# Build rule for subdir invocation for target. +src/CMakeFiles/rtl_adsb.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles 7 + $(MAKE) -f CMakeFiles/Makefile2 src/CMakeFiles/rtl_adsb.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles 0 +.PHONY : src/CMakeFiles/rtl_adsb.dir/rule + +# Convenience name for target. +rtl_adsb: src/CMakeFiles/rtl_adsb.dir/rule +.PHONY : rtl_adsb + +# clean rule for target. +src/CMakeFiles/rtl_adsb.dir/clean: + $(MAKE) -f src/CMakeFiles/rtl_adsb.dir/build.make src/CMakeFiles/rtl_adsb.dir/clean +.PHONY : src/CMakeFiles/rtl_adsb.dir/clean + +# clean rule for target. +clean: src/CMakeFiles/rtl_adsb.dir/clean +.PHONY : clean + +#============================================================================= +# Target rules for target src/CMakeFiles/rtl_eeprom.dir + +# All Build rule for target. +src/CMakeFiles/rtl_eeprom.dir/all: src/CMakeFiles/rtlsdr_shared.dir/all + $(MAKE) -f src/CMakeFiles/rtl_eeprom.dir/build.make src/CMakeFiles/rtl_eeprom.dir/depend + $(MAKE) -f src/CMakeFiles/rtl_eeprom.dir/build.make src/CMakeFiles/rtl_eeprom.dir/build + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles 3 + @echo "Built target rtl_eeprom" +.PHONY : src/CMakeFiles/rtl_eeprom.dir/all + +# Include target in all. +all: src/CMakeFiles/rtl_eeprom.dir/all +.PHONY : all + +# Build rule for subdir invocation for target. +src/CMakeFiles/rtl_eeprom.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles 7 + $(MAKE) -f CMakeFiles/Makefile2 src/CMakeFiles/rtl_eeprom.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles 0 +.PHONY : src/CMakeFiles/rtl_eeprom.dir/rule + +# Convenience name for target. +rtl_eeprom: src/CMakeFiles/rtl_eeprom.dir/rule +.PHONY : rtl_eeprom + +# clean rule for target. +src/CMakeFiles/rtl_eeprom.dir/clean: + $(MAKE) -f src/CMakeFiles/rtl_eeprom.dir/build.make src/CMakeFiles/rtl_eeprom.dir/clean +.PHONY : src/CMakeFiles/rtl_eeprom.dir/clean + +# clean rule for target. +clean: src/CMakeFiles/rtl_eeprom.dir/clean +.PHONY : clean + +#============================================================================= +# Target rules for target src/CMakeFiles/rtl_fm.dir + +# All Build rule for target. +src/CMakeFiles/rtl_fm.dir/all: src/CMakeFiles/rtlsdr_shared.dir/all + $(MAKE) -f src/CMakeFiles/rtl_fm.dir/build.make src/CMakeFiles/rtl_fm.dir/depend + $(MAKE) -f src/CMakeFiles/rtl_fm.dir/build.make src/CMakeFiles/rtl_fm.dir/build + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles 4 + @echo "Built target rtl_fm" +.PHONY : src/CMakeFiles/rtl_fm.dir/all + +# Include target in all. +all: src/CMakeFiles/rtl_fm.dir/all +.PHONY : all + +# Build rule for subdir invocation for target. +src/CMakeFiles/rtl_fm.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles 7 + $(MAKE) -f CMakeFiles/Makefile2 src/CMakeFiles/rtl_fm.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles 0 +.PHONY : src/CMakeFiles/rtl_fm.dir/rule + +# Convenience name for target. +rtl_fm: src/CMakeFiles/rtl_fm.dir/rule +.PHONY : rtl_fm + +# clean rule for target. +src/CMakeFiles/rtl_fm.dir/clean: + $(MAKE) -f src/CMakeFiles/rtl_fm.dir/build.make src/CMakeFiles/rtl_fm.dir/clean +.PHONY : src/CMakeFiles/rtl_fm.dir/clean + +# clean rule for target. +clean: src/CMakeFiles/rtl_fm.dir/clean +.PHONY : clean + +#============================================================================= +# Target rules for target src/CMakeFiles/rtl_sdr.dir + +# All Build rule for target. +src/CMakeFiles/rtl_sdr.dir/all: src/CMakeFiles/rtlsdr_shared.dir/all + $(MAKE) -f src/CMakeFiles/rtl_sdr.dir/build.make src/CMakeFiles/rtl_sdr.dir/depend + $(MAKE) -f src/CMakeFiles/rtl_sdr.dir/build.make src/CMakeFiles/rtl_sdr.dir/build + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles 5 + @echo "Built target rtl_sdr" +.PHONY : src/CMakeFiles/rtl_sdr.dir/all + +# Include target in all. +all: src/CMakeFiles/rtl_sdr.dir/all +.PHONY : all + +# Build rule for subdir invocation for target. +src/CMakeFiles/rtl_sdr.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles 7 + $(MAKE) -f CMakeFiles/Makefile2 src/CMakeFiles/rtl_sdr.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles 0 +.PHONY : src/CMakeFiles/rtl_sdr.dir/rule + +# Convenience name for target. +rtl_sdr: src/CMakeFiles/rtl_sdr.dir/rule +.PHONY : rtl_sdr + +# clean rule for target. +src/CMakeFiles/rtl_sdr.dir/clean: + $(MAKE) -f src/CMakeFiles/rtl_sdr.dir/build.make src/CMakeFiles/rtl_sdr.dir/clean +.PHONY : src/CMakeFiles/rtl_sdr.dir/clean + +# clean rule for target. +clean: src/CMakeFiles/rtl_sdr.dir/clean +.PHONY : clean + +#============================================================================= +# Target rules for target src/CMakeFiles/rtl_tcp.dir + +# All Build rule for target. +src/CMakeFiles/rtl_tcp.dir/all: src/CMakeFiles/rtlsdr_shared.dir/all + $(MAKE) -f src/CMakeFiles/rtl_tcp.dir/build.make src/CMakeFiles/rtl_tcp.dir/depend + $(MAKE) -f src/CMakeFiles/rtl_tcp.dir/build.make src/CMakeFiles/rtl_tcp.dir/build + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles 6 + @echo "Built target rtl_tcp" +.PHONY : src/CMakeFiles/rtl_tcp.dir/all + +# Include target in all. +all: src/CMakeFiles/rtl_tcp.dir/all +.PHONY : all + +# Build rule for subdir invocation for target. +src/CMakeFiles/rtl_tcp.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles 7 + $(MAKE) -f CMakeFiles/Makefile2 src/CMakeFiles/rtl_tcp.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles 0 +.PHONY : src/CMakeFiles/rtl_tcp.dir/rule + +# Convenience name for target. +rtl_tcp: src/CMakeFiles/rtl_tcp.dir/rule +.PHONY : rtl_tcp + +# clean rule for target. +src/CMakeFiles/rtl_tcp.dir/clean: + $(MAKE) -f src/CMakeFiles/rtl_tcp.dir/build.make src/CMakeFiles/rtl_tcp.dir/clean +.PHONY : src/CMakeFiles/rtl_tcp.dir/clean + +# clean rule for target. +clean: src/CMakeFiles/rtl_tcp.dir/clean +.PHONY : clean + +#============================================================================= +# Target rules for target src/CMakeFiles/rtl_test.dir + +# All Build rule for target. +src/CMakeFiles/rtl_test.dir/all: src/CMakeFiles/rtlsdr_shared.dir/all + $(MAKE) -f src/CMakeFiles/rtl_test.dir/build.make src/CMakeFiles/rtl_test.dir/depend + $(MAKE) -f src/CMakeFiles/rtl_test.dir/build.make src/CMakeFiles/rtl_test.dir/build + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles 7 + @echo "Built target rtl_test" +.PHONY : src/CMakeFiles/rtl_test.dir/all + +# Include target in all. +all: src/CMakeFiles/rtl_test.dir/all +.PHONY : all + +# Build rule for subdir invocation for target. +src/CMakeFiles/rtl_test.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles 7 + $(MAKE) -f CMakeFiles/Makefile2 src/CMakeFiles/rtl_test.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles 0 +.PHONY : src/CMakeFiles/rtl_test.dir/rule + +# Convenience name for target. +rtl_test: src/CMakeFiles/rtl_test.dir/rule +.PHONY : rtl_test + +# clean rule for target. +src/CMakeFiles/rtl_test.dir/clean: + $(MAKE) -f src/CMakeFiles/rtl_test.dir/build.make src/CMakeFiles/rtl_test.dir/clean +.PHONY : src/CMakeFiles/rtl_test.dir/clean + +# clean rule for target. +clean: src/CMakeFiles/rtl_test.dir/clean +.PHONY : clean + +#============================================================================= +# Target rules for target src/CMakeFiles/rtlsdr_shared.dir + +# All Build rule for target. +src/CMakeFiles/rtlsdr_shared.dir/all: + $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/depend + $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/build + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles 8 9 10 11 12 13 + @echo "Built target rtlsdr_shared" +.PHONY : src/CMakeFiles/rtlsdr_shared.dir/all + +# Include target in all. +all: src/CMakeFiles/rtlsdr_shared.dir/all +.PHONY : all + +# Build rule for subdir invocation for target. +src/CMakeFiles/rtlsdr_shared.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles 6 + $(MAKE) -f CMakeFiles/Makefile2 src/CMakeFiles/rtlsdr_shared.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles 0 +.PHONY : src/CMakeFiles/rtlsdr_shared.dir/rule + +# Convenience name for target. +rtlsdr_shared: src/CMakeFiles/rtlsdr_shared.dir/rule +.PHONY : rtlsdr_shared + +# clean rule for target. +src/CMakeFiles/rtlsdr_shared.dir/clean: + $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/clean +.PHONY : src/CMakeFiles/rtlsdr_shared.dir/clean + +# clean rule for target. +clean: src/CMakeFiles/rtlsdr_shared.dir/clean +.PHONY : clean + +#============================================================================= +# Target rules for target src/CMakeFiles/rtlsdr_static.dir + +# All Build rule for target. +src/CMakeFiles/rtlsdr_static.dir/all: + $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/depend + $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/build + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles 14 15 16 17 18 19 + @echo "Built target rtlsdr_static" +.PHONY : src/CMakeFiles/rtlsdr_static.dir/all + +# Include target in all. +all: src/CMakeFiles/rtlsdr_static.dir/all +.PHONY : all + +# Build rule for subdir invocation for target. +src/CMakeFiles/rtlsdr_static.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles 6 + $(MAKE) -f CMakeFiles/Makefile2 src/CMakeFiles/rtlsdr_static.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles 0 +.PHONY : src/CMakeFiles/rtlsdr_static.dir/rule + +# Convenience name for target. +rtlsdr_static: src/CMakeFiles/rtlsdr_static.dir/rule +.PHONY : rtlsdr_static + +# clean rule for target. +src/CMakeFiles/rtlsdr_static.dir/clean: + $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/clean +.PHONY : src/CMakeFiles/rtlsdr_static.dir/clean + +# clean rule for target. +clean: src/CMakeFiles/rtlsdr_static.dir/clean +.PHONY : clean + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/build/CMakeFiles/TargetDirectories.txt b/build/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..659fd5d --- /dev/null +++ b/build/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,10 @@ +/home/rvb/git/rtl_433/build/src/CMakeFiles/rtl_433.dir +/home/rvb/git/rtl_433/build/src/CMakeFiles/rtl_adsb.dir +/home/rvb/git/rtl_433/build/src/CMakeFiles/rtl_eeprom.dir +/home/rvb/git/rtl_433/build/src/CMakeFiles/rtl_fm.dir +/home/rvb/git/rtl_433/build/src/CMakeFiles/rtl_sdr.dir +/home/rvb/git/rtl_433/build/src/CMakeFiles/rtl_tcp.dir +/home/rvb/git/rtl_433/build/src/CMakeFiles/rtl_test.dir +/home/rvb/git/rtl_433/build/src/CMakeFiles/rtlsdr_shared.dir +/home/rvb/git/rtl_433/build/src/CMakeFiles/rtlsdr_static.dir +/home/rvb/git/rtl_433/build/CMakeFiles/uninstall.dir diff --git a/build/CMakeFiles/cmake.check_cache b/build/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/build/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/build/CMakeFiles/progress.marks b/build/CMakeFiles/progress.marks new file mode 100644 index 0000000..d6b2404 --- /dev/null +++ b/build/CMakeFiles/progress.marks @@ -0,0 +1 @@ +19 diff --git a/build/CMakeFiles/uninstall.dir/DependInfo.cmake b/build/CMakeFiles/uninstall.dir/DependInfo.cmake new file mode 100644 index 0000000..f60a001 --- /dev/null +++ b/build/CMakeFiles/uninstall.dir/DependInfo.cmake @@ -0,0 +1,17 @@ +# The set of languages for which implicit dependencies are needed: +SET(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +SET(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# The include file search paths: +SET(CMAKE_C_TARGET_INCLUDE_PATH + "../include" + "/usr/include/libusb-1.0" + ) +SET(CMAKE_CXX_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_Fortran_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_ASM_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) diff --git a/build/CMakeFiles/uninstall.dir/build.make b/build/CMakeFiles/uninstall.dir/build.make new file mode 100644 index 0000000..cf0c099 --- /dev/null +++ b/build/CMakeFiles/uninstall.dir/build.make @@ -0,0 +1,66 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/rvb/git/rtl_433 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/rvb/git/rtl_433/build + +# Utility rule file for uninstall. + +# Include the progress variables for this target. +include CMakeFiles/uninstall.dir/progress.make + +CMakeFiles/uninstall: + /usr/bin/cmake -P /home/rvb/git/rtl_433/build/cmake_uninstall.cmake + +uninstall: CMakeFiles/uninstall +uninstall: CMakeFiles/uninstall.dir/build.make +.PHONY : uninstall + +# Rule to build all files generated by this target. +CMakeFiles/uninstall.dir/build: uninstall +.PHONY : CMakeFiles/uninstall.dir/build + +CMakeFiles/uninstall.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/uninstall.dir/cmake_clean.cmake +.PHONY : CMakeFiles/uninstall.dir/clean + +CMakeFiles/uninstall.dir/depend: + cd /home/rvb/git/rtl_433/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/rvb/git/rtl_433 /home/rvb/git/rtl_433 /home/rvb/git/rtl_433/build /home/rvb/git/rtl_433/build /home/rvb/git/rtl_433/build/CMakeFiles/uninstall.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/uninstall.dir/depend + diff --git a/build/CMakeFiles/uninstall.dir/cmake_clean.cmake b/build/CMakeFiles/uninstall.dir/cmake_clean.cmake new file mode 100644 index 0000000..828e2a2 --- /dev/null +++ b/build/CMakeFiles/uninstall.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +FILE(REMOVE_RECURSE + "CMakeFiles/uninstall" +) + +# Per-language clean rules from dependency scanning. +FOREACH(lang) + INCLUDE(CMakeFiles/uninstall.dir/cmake_clean_${lang}.cmake OPTIONAL) +ENDFOREACH(lang) diff --git a/build/CMakeFiles/uninstall.dir/progress.make b/build/CMakeFiles/uninstall.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/build/CMakeFiles/uninstall.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/Makefile b/build/Makefile new file mode 100644 index 0000000..5f680bc --- /dev/null +++ b/build/Makefile @@ -0,0 +1,307 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/rvb/git/rtl_433 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/rvb/git/rtl_433/build + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running interactive CMake command-line interface..." + /usr/bin/cmake -i . +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: install/local +.PHONY : install/local/fast + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: install/strip +.PHONY : install/strip/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components +.PHONY : list_install_components/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# The main all target +all: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles /home/rvb/git/rtl_433/build/CMakeFiles/progress.marks + $(MAKE) -f CMakeFiles/Makefile2 all + $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + $(MAKE) -f CMakeFiles/Makefile2 clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + $(MAKE) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + $(MAKE) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +#============================================================================= +# Target rules for targets named uninstall + +# Build rule for target. +uninstall: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 uninstall +.PHONY : uninstall + +# fast build rule for target. +uninstall/fast: + $(MAKE) -f CMakeFiles/uninstall.dir/build.make CMakeFiles/uninstall.dir/build +.PHONY : uninstall/fast + +#============================================================================= +# Target rules for targets named rtl_433 + +# Build rule for target. +rtl_433: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 rtl_433 +.PHONY : rtl_433 + +# fast build rule for target. +rtl_433/fast: + $(MAKE) -f src/CMakeFiles/rtl_433.dir/build.make src/CMakeFiles/rtl_433.dir/build +.PHONY : rtl_433/fast + +#============================================================================= +# Target rules for targets named rtl_adsb + +# Build rule for target. +rtl_adsb: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 rtl_adsb +.PHONY : rtl_adsb + +# fast build rule for target. +rtl_adsb/fast: + $(MAKE) -f src/CMakeFiles/rtl_adsb.dir/build.make src/CMakeFiles/rtl_adsb.dir/build +.PHONY : rtl_adsb/fast + +#============================================================================= +# Target rules for targets named rtl_eeprom + +# Build rule for target. +rtl_eeprom: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 rtl_eeprom +.PHONY : rtl_eeprom + +# fast build rule for target. +rtl_eeprom/fast: + $(MAKE) -f src/CMakeFiles/rtl_eeprom.dir/build.make src/CMakeFiles/rtl_eeprom.dir/build +.PHONY : rtl_eeprom/fast + +#============================================================================= +# Target rules for targets named rtl_fm + +# Build rule for target. +rtl_fm: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 rtl_fm +.PHONY : rtl_fm + +# fast build rule for target. +rtl_fm/fast: + $(MAKE) -f src/CMakeFiles/rtl_fm.dir/build.make src/CMakeFiles/rtl_fm.dir/build +.PHONY : rtl_fm/fast + +#============================================================================= +# Target rules for targets named rtl_sdr + +# Build rule for target. +rtl_sdr: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 rtl_sdr +.PHONY : rtl_sdr + +# fast build rule for target. +rtl_sdr/fast: + $(MAKE) -f src/CMakeFiles/rtl_sdr.dir/build.make src/CMakeFiles/rtl_sdr.dir/build +.PHONY : rtl_sdr/fast + +#============================================================================= +# Target rules for targets named rtl_tcp + +# Build rule for target. +rtl_tcp: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 rtl_tcp +.PHONY : rtl_tcp + +# fast build rule for target. +rtl_tcp/fast: + $(MAKE) -f src/CMakeFiles/rtl_tcp.dir/build.make src/CMakeFiles/rtl_tcp.dir/build +.PHONY : rtl_tcp/fast + +#============================================================================= +# Target rules for targets named rtl_test + +# Build rule for target. +rtl_test: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 rtl_test +.PHONY : rtl_test + +# fast build rule for target. +rtl_test/fast: + $(MAKE) -f src/CMakeFiles/rtl_test.dir/build.make src/CMakeFiles/rtl_test.dir/build +.PHONY : rtl_test/fast + +#============================================================================= +# Target rules for targets named rtlsdr_shared + +# Build rule for target. +rtlsdr_shared: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 rtlsdr_shared +.PHONY : rtlsdr_shared + +# fast build rule for target. +rtlsdr_shared/fast: + $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/build +.PHONY : rtlsdr_shared/fast + +#============================================================================= +# Target rules for targets named rtlsdr_static + +# Build rule for target. +rtlsdr_static: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 rtlsdr_static +.PHONY : rtlsdr_static + +# fast build rule for target. +rtlsdr_static/fast: + $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/build +.PHONY : rtlsdr_static/fast + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... install" + @echo "... install/local" + @echo "... install/strip" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... uninstall" + @echo "... rtl_433" + @echo "... rtl_adsb" + @echo "... rtl_eeprom" + @echo "... rtl_fm" + @echo "... rtl_sdr" + @echo "... rtl_tcp" + @echo "... rtl_test" + @echo "... rtlsdr_shared" + @echo "... rtlsdr_static" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/build/cmake_install.cmake b/build/cmake_install.cmake new file mode 100644 index 0000000..5cd8e65 --- /dev/null +++ b/build/cmake_install.cmake @@ -0,0 +1,55 @@ +# Install script for directory: /home/rvb/git/rtl_433 + +# Set the install prefix +IF(NOT DEFINED CMAKE_INSTALL_PREFIX) + SET(CMAKE_INSTALL_PREFIX "/usr/local") +ENDIF(NOT DEFINED CMAKE_INSTALL_PREFIX) +STRING(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +IF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + IF(BUILD_TYPE) + STRING(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + ELSE(BUILD_TYPE) + SET(CMAKE_INSTALL_CONFIG_NAME "Release") + ENDIF(BUILD_TYPE) + MESSAGE(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +ENDIF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + +# Set the component getting installed. +IF(NOT CMAKE_INSTALL_COMPONENT) + IF(COMPONENT) + MESSAGE(STATUS "Install component: \"${COMPONENT}\"") + SET(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + ELSE(COMPONENT) + SET(CMAKE_INSTALL_COMPONENT) + ENDIF(COMPONENT) +ENDIF(NOT CMAKE_INSTALL_COMPONENT) + +# Install shared libraries without execute permission? +IF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + SET(CMAKE_INSTALL_SO_NO_EXE "1") +ENDIF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + +IF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified") + FILE(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig" TYPE FILE FILES "/home/rvb/git/rtl_433/build/librtlsdr.pc") +ENDIF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified") + +IF(NOT CMAKE_INSTALL_LOCAL_ONLY) + # Include the install script for each subdirectory. + INCLUDE("/home/rvb/git/rtl_433/build/include/cmake_install.cmake") + INCLUDE("/home/rvb/git/rtl_433/build/src/cmake_install.cmake") + +ENDIF(NOT CMAKE_INSTALL_LOCAL_ONLY) + +IF(CMAKE_INSTALL_COMPONENT) + SET(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +ELSE(CMAKE_INSTALL_COMPONENT) + SET(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +ENDIF(CMAKE_INSTALL_COMPONENT) + +FILE(WRITE "/home/rvb/git/rtl_433/build/${CMAKE_INSTALL_MANIFEST}" "") +FOREACH(file ${CMAKE_INSTALL_MANIFEST_FILES}) + FILE(APPEND "/home/rvb/git/rtl_433/build/${CMAKE_INSTALL_MANIFEST}" "${file}\n") +ENDFOREACH(file) diff --git a/build/cmake_uninstall.cmake b/build/cmake_uninstall.cmake new file mode 100644 index 0000000..edf516d --- /dev/null +++ b/build/cmake_uninstall.cmake @@ -0,0 +1,32 @@ +# http://www.vtk.org/Wiki/CMake_FAQ#Can_I_do_.22make_uninstall.22_with_CMake.3F + +IF(NOT EXISTS "/home/rvb/git/rtl_433/build/install_manifest.txt") + MESSAGE(FATAL_ERROR "Cannot find install manifest: \"/home/rvb/git/rtl_433/build/install_manifest.txt\"") +ENDIF(NOT EXISTS "/home/rvb/git/rtl_433/build/install_manifest.txt") + +FILE(READ "/home/rvb/git/rtl_433/build/install_manifest.txt" files) +STRING(REGEX REPLACE "\n" ";" files "${files}") +FOREACH(file ${files}) + MESSAGE(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"") + IF(EXISTS "$ENV{DESTDIR}${file}") + EXEC_PROGRAM( + "/usr/bin/cmake" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" + OUTPUT_VARIABLE rm_out + RETURN_VALUE rm_retval + ) + IF(NOT "${rm_retval}" STREQUAL 0) + MESSAGE(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") + ENDIF(NOT "${rm_retval}" STREQUAL 0) + ELSEIF(IS_SYMLINK "$ENV{DESTDIR}${file}") + EXEC_PROGRAM( + "/usr/bin/cmake" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" + OUTPUT_VARIABLE rm_out + RETURN_VALUE rm_retval + ) + IF(NOT "${rm_retval}" STREQUAL 0) + MESSAGE(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") + ENDIF(NOT "${rm_retval}" STREQUAL 0) + ELSE(EXISTS "$ENV{DESTDIR}${file}") + MESSAGE(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.") + ENDIF(EXISTS "$ENV{DESTDIR}${file}") +ENDFOREACH(file) diff --git a/build/include/CMakeFiles/CMakeDirectoryInformation.cmake b/build/include/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..277cdd8 --- /dev/null +++ b/build/include/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +# Relative path conversion top directories. +SET(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/rvb/git/rtl_433") +SET(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/rvb/git/rtl_433/build") + +# Force unix paths in dependencies. +SET(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +SET(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +SET(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +SET(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +SET(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/build/include/CMakeFiles/progress.marks b/build/include/CMakeFiles/progress.marks new file mode 100644 index 0000000..573541a --- /dev/null +++ b/build/include/CMakeFiles/progress.marks @@ -0,0 +1 @@ +0 diff --git a/build/include/Makefile b/build/include/Makefile new file mode 100644 index 0000000..11278e2 --- /dev/null +++ b/build/include/Makefile @@ -0,0 +1,167 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/rvb/git/rtl_433 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/rvb/git/rtl_433/build + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running interactive CMake command-line interface..." + /usr/bin/cmake -i . +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: install/local +.PHONY : install/local/fast + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: install/strip +.PHONY : install/strip/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components +.PHONY : list_install_components/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# The main all target +all: cmake_check_build_system + cd /home/rvb/git/rtl_433/build && $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles /home/rvb/git/rtl_433/build/include/CMakeFiles/progress.marks + cd /home/rvb/git/rtl_433/build && $(MAKE) -f CMakeFiles/Makefile2 include/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f CMakeFiles/Makefile2 include/clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /home/rvb/git/rtl_433/build && $(MAKE) -f CMakeFiles/Makefile2 include/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f CMakeFiles/Makefile2 include/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /home/rvb/git/rtl_433/build && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... install" + @echo "... install/local" + @echo "... install/strip" + @echo "... list_install_components" + @echo "... rebuild_cache" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /home/rvb/git/rtl_433/build && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/build/include/cmake_install.cmake b/build/include/cmake_install.cmake new file mode 100644 index 0000000..86256b8 --- /dev/null +++ b/build/include/cmake_install.cmake @@ -0,0 +1,41 @@ +# Install script for directory: /home/rvb/git/rtl_433/include + +# Set the install prefix +IF(NOT DEFINED CMAKE_INSTALL_PREFIX) + SET(CMAKE_INSTALL_PREFIX "/usr/local") +ENDIF(NOT DEFINED CMAKE_INSTALL_PREFIX) +STRING(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +IF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + IF(BUILD_TYPE) + STRING(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + ELSE(BUILD_TYPE) + SET(CMAKE_INSTALL_CONFIG_NAME "Release") + ENDIF(BUILD_TYPE) + MESSAGE(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +ENDIF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + +# Set the component getting installed. +IF(NOT CMAKE_INSTALL_COMPONENT) + IF(COMPONENT) + MESSAGE(STATUS "Install component: \"${COMPONENT}\"") + SET(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + ELSE(COMPONENT) + SET(CMAKE_INSTALL_COMPONENT) + ENDIF(COMPONENT) +ENDIF(NOT CMAKE_INSTALL_COMPONENT) + +# Install shared libraries without execute permission? +IF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + SET(CMAKE_INSTALL_SO_NO_EXE "1") +ENDIF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + +IF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified") + FILE(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/include" TYPE FILE FILES + "/home/rvb/git/rtl_433/include/rtl-sdr.h" + "/home/rvb/git/rtl_433/include/rtl-sdr_export.h" + ) +ENDIF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified") + diff --git a/build/librtlsdr.pc b/build/librtlsdr.pc new file mode 100644 index 0000000..7f0f276 --- /dev/null +++ b/build/librtlsdr.pc @@ -0,0 +1,11 @@ +prefix=/usr/local +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: RTL-SDR Library +Description: C Utility Library +Version: +Cflags: -I${includedir}/ -I/usr/include/libusb-1.0 +Libs: -L${libdir} -lrtlsdr -lusb-1.0 +Libs.private: diff --git a/build/src/CMakeFiles/CMakeDirectoryInformation.cmake b/build/src/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..277cdd8 --- /dev/null +++ b/build/src/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +# Relative path conversion top directories. +SET(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/rvb/git/rtl_433") +SET(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/rvb/git/rtl_433/build") + +# Force unix paths in dependencies. +SET(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +SET(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +SET(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +SET(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +SET(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/build/src/CMakeFiles/progress.marks b/build/src/CMakeFiles/progress.marks new file mode 100644 index 0000000..d6b2404 --- /dev/null +++ b/build/src/CMakeFiles/progress.marks @@ -0,0 +1 @@ +19 diff --git a/build/src/CMakeFiles/rtl_433.dir/C.includecache b/build/src/CMakeFiles/rtl_433.dir/C.includecache new file mode 100644 index 0000000..4e6ee4d --- /dev/null +++ b/build/src/CMakeFiles/rtl_433.dir/C.includecache @@ -0,0 +1,46 @@ +#IncludeRegexLine: ^[ ]*#[ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +../include/rtl-sdr.h +stdint.h +- +rtl-sdr_export.h +- + +../include/rtl-sdr_export.h + +/home/rvb/git/rtl_433/src/getopt/getopt.h +ctype.h +- + +/home/rvb/git/rtl_433/src/rtl_433.c +errno.h +- +signal.h +- +string.h +- +stdio.h +- +stdlib.h +- +time.h +- +unistd.h +- +Windows.h +- +io.h +- +fcntl.h +- +getopt/getopt.h +/home/rvb/git/rtl_433/src/getopt/getopt.h +rtl-sdr.h +/home/rvb/git/rtl_433/src/rtl-sdr.h + diff --git a/build/src/CMakeFiles/rtl_433.dir/DependInfo.cmake b/build/src/CMakeFiles/rtl_433.dir/DependInfo.cmake new file mode 100644 index 0000000..9f4cb01 --- /dev/null +++ b/build/src/CMakeFiles/rtl_433.dir/DependInfo.cmake @@ -0,0 +1,23 @@ +# The set of languages for which implicit dependencies are needed: +SET(CMAKE_DEPENDS_LANGUAGES + "C" + ) +# The set of files for implicit dependencies of each language: +SET(CMAKE_DEPENDS_CHECK_C + "/home/rvb/git/rtl_433/src/rtl_433.c" "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtl_433.dir/rtl_433.c.o" + ) +SET(CMAKE_C_COMPILER_ID "GNU") + +# Targets to which this target links. +SET(CMAKE_TARGET_LINKED_INFO_FILES + "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtlsdr_shared.dir/DependInfo.cmake" + ) + +# The include file search paths: +SET(CMAKE_C_TARGET_INCLUDE_PATH + "../include" + "/usr/include/libusb-1.0" + ) +SET(CMAKE_CXX_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_Fortran_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_ASM_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) diff --git a/build/src/CMakeFiles/rtl_433.dir/build.make b/build/src/CMakeFiles/rtl_433.dir/build.make new file mode 100644 index 0000000..8907f6e --- /dev/null +++ b/build/src/CMakeFiles/rtl_433.dir/build.make @@ -0,0 +1,104 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/rvb/git/rtl_433 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/rvb/git/rtl_433/build + +# Include any dependencies generated for this target. +include src/CMakeFiles/rtl_433.dir/depend.make + +# Include the progress variables for this target. +include src/CMakeFiles/rtl_433.dir/progress.make + +# Include the compile flags for this target's objects. +include src/CMakeFiles/rtl_433.dir/flags.make + +src/CMakeFiles/rtl_433.dir/rtl_433.c.o: src/CMakeFiles/rtl_433.dir/flags.make +src/CMakeFiles/rtl_433.dir/rtl_433.c.o: ../src/rtl_433.c + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles $(CMAKE_PROGRESS_1) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building C object src/CMakeFiles/rtl_433.dir/rtl_433.c.o" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/rtl_433.dir/rtl_433.c.o -c /home/rvb/git/rtl_433/src/rtl_433.c + +src/CMakeFiles/rtl_433.dir/rtl_433.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/rtl_433.dir/rtl_433.c.i" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -E /home/rvb/git/rtl_433/src/rtl_433.c > CMakeFiles/rtl_433.dir/rtl_433.c.i + +src/CMakeFiles/rtl_433.dir/rtl_433.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/rtl_433.dir/rtl_433.c.s" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -S /home/rvb/git/rtl_433/src/rtl_433.c -o CMakeFiles/rtl_433.dir/rtl_433.c.s + +src/CMakeFiles/rtl_433.dir/rtl_433.c.o.requires: +.PHONY : src/CMakeFiles/rtl_433.dir/rtl_433.c.o.requires + +src/CMakeFiles/rtl_433.dir/rtl_433.c.o.provides: src/CMakeFiles/rtl_433.dir/rtl_433.c.o.requires + $(MAKE) -f src/CMakeFiles/rtl_433.dir/build.make src/CMakeFiles/rtl_433.dir/rtl_433.c.o.provides.build +.PHONY : src/CMakeFiles/rtl_433.dir/rtl_433.c.o.provides + +src/CMakeFiles/rtl_433.dir/rtl_433.c.o.provides.build: src/CMakeFiles/rtl_433.dir/rtl_433.c.o + +# Object files for target rtl_433 +rtl_433_OBJECTS = \ +"CMakeFiles/rtl_433.dir/rtl_433.c.o" + +# External object files for target rtl_433 +rtl_433_EXTERNAL_OBJECTS = + +src/rtl_433: src/CMakeFiles/rtl_433.dir/rtl_433.c.o +src/rtl_433: src/CMakeFiles/rtl_433.dir/build.make +src/rtl_433: src/librtlsdr.so.0.0.0 +src/rtl_433: /usr/lib/x86_64-linux-gnu/libusb-1.0.so +src/rtl_433: src/CMakeFiles/rtl_433.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking C executable rtl_433" + cd /home/rvb/git/rtl_433/build/src && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/rtl_433.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +src/CMakeFiles/rtl_433.dir/build: src/rtl_433 +.PHONY : src/CMakeFiles/rtl_433.dir/build + +src/CMakeFiles/rtl_433.dir/requires: src/CMakeFiles/rtl_433.dir/rtl_433.c.o.requires +.PHONY : src/CMakeFiles/rtl_433.dir/requires + +src/CMakeFiles/rtl_433.dir/clean: + cd /home/rvb/git/rtl_433/build/src && $(CMAKE_COMMAND) -P CMakeFiles/rtl_433.dir/cmake_clean.cmake +.PHONY : src/CMakeFiles/rtl_433.dir/clean + +src/CMakeFiles/rtl_433.dir/depend: + cd /home/rvb/git/rtl_433/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/rvb/git/rtl_433 /home/rvb/git/rtl_433/src /home/rvb/git/rtl_433/build /home/rvb/git/rtl_433/build/src /home/rvb/git/rtl_433/build/src/CMakeFiles/rtl_433.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : src/CMakeFiles/rtl_433.dir/depend + diff --git a/build/src/CMakeFiles/rtl_433.dir/cmake_clean.cmake b/build/src/CMakeFiles/rtl_433.dir/cmake_clean.cmake new file mode 100644 index 0000000..8d44e31 --- /dev/null +++ b/build/src/CMakeFiles/rtl_433.dir/cmake_clean.cmake @@ -0,0 +1,10 @@ +FILE(REMOVE_RECURSE + "CMakeFiles/rtl_433.dir/rtl_433.c.o" + "rtl_433.pdb" + "rtl_433" +) + +# Per-language clean rules from dependency scanning. +FOREACH(lang C) + INCLUDE(CMakeFiles/rtl_433.dir/cmake_clean_${lang}.cmake OPTIONAL) +ENDFOREACH(lang) diff --git a/build/src/CMakeFiles/rtl_433.dir/depend.internal b/build/src/CMakeFiles/rtl_433.dir/depend.internal new file mode 100644 index 0000000..fb86867 --- /dev/null +++ b/build/src/CMakeFiles/rtl_433.dir/depend.internal @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +src/CMakeFiles/rtl_433.dir/rtl_433.c.o + ../include/rtl-sdr.h + ../include/rtl-sdr_export.h + /home/rvb/git/rtl_433/src/getopt/getopt.h + /home/rvb/git/rtl_433/src/rtl_433.c diff --git a/build/src/CMakeFiles/rtl_433.dir/depend.make b/build/src/CMakeFiles/rtl_433.dir/depend.make new file mode 100644 index 0000000..e2b0445 --- /dev/null +++ b/build/src/CMakeFiles/rtl_433.dir/depend.make @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +src/CMakeFiles/rtl_433.dir/rtl_433.c.o: ../include/rtl-sdr.h +src/CMakeFiles/rtl_433.dir/rtl_433.c.o: ../include/rtl-sdr_export.h +src/CMakeFiles/rtl_433.dir/rtl_433.c.o: ../src/getopt/getopt.h +src/CMakeFiles/rtl_433.dir/rtl_433.c.o: ../src/rtl_433.c + diff --git a/build/src/CMakeFiles/rtl_433.dir/flags.make b/build/src/CMakeFiles/rtl_433.dir/flags.make new file mode 100644 index 0000000..f4dc571 --- /dev/null +++ b/build/src/CMakeFiles/rtl_433.dir/flags.make @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +# compile C with /usr/bin/cc +C_FLAGS = -O3 -DNDEBUG -I/home/rvb/git/rtl_433/include -I/usr/include/libusb-1.0 -Wall -Wextra -Wno-unused -Wsign-compare -g3 -O0 -fvisibility=hidden + +C_DEFINES = + diff --git a/build/src/CMakeFiles/rtl_433.dir/link.txt b/build/src/CMakeFiles/rtl_433.dir/link.txt new file mode 100644 index 0000000..d40f48d --- /dev/null +++ b/build/src/CMakeFiles/rtl_433.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/cc -O3 -DNDEBUG CMakeFiles/rtl_433.dir/rtl_433.c.o -o rtl_433 -rdynamic librtlsdr.so.0.0.0 -lusb-1.0 -lpthread -lm -Wl,-rpath,/home/rvb/git/rtl_433/build/src: diff --git a/build/src/CMakeFiles/rtl_433.dir/progress.make b/build/src/CMakeFiles/rtl_433.dir/progress.make new file mode 100644 index 0000000..781c7de --- /dev/null +++ b/build/src/CMakeFiles/rtl_433.dir/progress.make @@ -0,0 +1,2 @@ +CMAKE_PROGRESS_1 = 1 + diff --git a/build/src/CMakeFiles/rtl_433.dir/rtl_433.c.o b/build/src/CMakeFiles/rtl_433.dir/rtl_433.c.o new file mode 100644 index 0000000..41f32e2 Binary files /dev/null and b/build/src/CMakeFiles/rtl_433.dir/rtl_433.c.o differ diff --git a/build/src/CMakeFiles/rtl_adsb.dir/C.includecache b/build/src/CMakeFiles/rtl_adsb.dir/C.includecache new file mode 100644 index 0000000..0f4623a --- /dev/null +++ b/build/src/CMakeFiles/rtl_adsb.dir/C.includecache @@ -0,0 +1,68 @@ +#IncludeRegexLine: ^[ ]*#[ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +../include/rtl-sdr.h +stdint.h +- +rtl-sdr_export.h +- + +../include/rtl-sdr_export.h + +/home/rvb/git/rtl_433/src/getopt/getopt.h +ctype.h +- + +/home/rvb/git/rtl_433/src/rtl_adsb.c +errno.h +- +signal.h +- +string.h +- +stdio.h +- +stdlib.h +- +math.h +- +unistd.h +- +Windows.h +- +fcntl.h +- +io.h +- +getopt/getopt.h +/home/rvb/git/rtl_433/src/getopt/getopt.h +semaphore.h +- +pthread.h +- +libusb.h +- +rtl-sdr.h +/home/rvb/git/rtl_433/src/rtl-sdr.h + +/usr/include/libusb-1.0/libusb.h +stdint.h +- +sys/types.h +- +sys/time.h +- +time.h +- +limits.h +- +windows.h +- +winsock.h +- + diff --git a/build/src/CMakeFiles/rtl_adsb.dir/DependInfo.cmake b/build/src/CMakeFiles/rtl_adsb.dir/DependInfo.cmake new file mode 100644 index 0000000..43732d9 --- /dev/null +++ b/build/src/CMakeFiles/rtl_adsb.dir/DependInfo.cmake @@ -0,0 +1,23 @@ +# The set of languages for which implicit dependencies are needed: +SET(CMAKE_DEPENDS_LANGUAGES + "C" + ) +# The set of files for implicit dependencies of each language: +SET(CMAKE_DEPENDS_CHECK_C + "/home/rvb/git/rtl_433/src/rtl_adsb.c" "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o" + ) +SET(CMAKE_C_COMPILER_ID "GNU") + +# Targets to which this target links. +SET(CMAKE_TARGET_LINKED_INFO_FILES + "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtlsdr_shared.dir/DependInfo.cmake" + ) + +# The include file search paths: +SET(CMAKE_C_TARGET_INCLUDE_PATH + "../include" + "/usr/include/libusb-1.0" + ) +SET(CMAKE_CXX_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_Fortran_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_ASM_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) diff --git a/build/src/CMakeFiles/rtl_adsb.dir/build.make b/build/src/CMakeFiles/rtl_adsb.dir/build.make new file mode 100644 index 0000000..67d0164 --- /dev/null +++ b/build/src/CMakeFiles/rtl_adsb.dir/build.make @@ -0,0 +1,104 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/rvb/git/rtl_433 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/rvb/git/rtl_433/build + +# Include any dependencies generated for this target. +include src/CMakeFiles/rtl_adsb.dir/depend.make + +# Include the progress variables for this target. +include src/CMakeFiles/rtl_adsb.dir/progress.make + +# Include the compile flags for this target's objects. +include src/CMakeFiles/rtl_adsb.dir/flags.make + +src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o: src/CMakeFiles/rtl_adsb.dir/flags.make +src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o: ../src/rtl_adsb.c + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles $(CMAKE_PROGRESS_1) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building C object src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o -c /home/rvb/git/rtl_433/src/rtl_adsb.c + +src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/rtl_adsb.dir/rtl_adsb.c.i" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -E /home/rvb/git/rtl_433/src/rtl_adsb.c > CMakeFiles/rtl_adsb.dir/rtl_adsb.c.i + +src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/rtl_adsb.dir/rtl_adsb.c.s" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -S /home/rvb/git/rtl_433/src/rtl_adsb.c -o CMakeFiles/rtl_adsb.dir/rtl_adsb.c.s + +src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o.requires: +.PHONY : src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o.requires + +src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o.provides: src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o.requires + $(MAKE) -f src/CMakeFiles/rtl_adsb.dir/build.make src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o.provides.build +.PHONY : src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o.provides + +src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o.provides.build: src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o + +# Object files for target rtl_adsb +rtl_adsb_OBJECTS = \ +"CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o" + +# External object files for target rtl_adsb +rtl_adsb_EXTERNAL_OBJECTS = + +src/rtl_adsb: src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o +src/rtl_adsb: src/CMakeFiles/rtl_adsb.dir/build.make +src/rtl_adsb: src/librtlsdr.so.0.0.0 +src/rtl_adsb: /usr/lib/x86_64-linux-gnu/libusb-1.0.so +src/rtl_adsb: src/CMakeFiles/rtl_adsb.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking C executable rtl_adsb" + cd /home/rvb/git/rtl_433/build/src && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/rtl_adsb.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +src/CMakeFiles/rtl_adsb.dir/build: src/rtl_adsb +.PHONY : src/CMakeFiles/rtl_adsb.dir/build + +src/CMakeFiles/rtl_adsb.dir/requires: src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o.requires +.PHONY : src/CMakeFiles/rtl_adsb.dir/requires + +src/CMakeFiles/rtl_adsb.dir/clean: + cd /home/rvb/git/rtl_433/build/src && $(CMAKE_COMMAND) -P CMakeFiles/rtl_adsb.dir/cmake_clean.cmake +.PHONY : src/CMakeFiles/rtl_adsb.dir/clean + +src/CMakeFiles/rtl_adsb.dir/depend: + cd /home/rvb/git/rtl_433/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/rvb/git/rtl_433 /home/rvb/git/rtl_433/src /home/rvb/git/rtl_433/build /home/rvb/git/rtl_433/build/src /home/rvb/git/rtl_433/build/src/CMakeFiles/rtl_adsb.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : src/CMakeFiles/rtl_adsb.dir/depend + diff --git a/build/src/CMakeFiles/rtl_adsb.dir/cmake_clean.cmake b/build/src/CMakeFiles/rtl_adsb.dir/cmake_clean.cmake new file mode 100644 index 0000000..24dbd16 --- /dev/null +++ b/build/src/CMakeFiles/rtl_adsb.dir/cmake_clean.cmake @@ -0,0 +1,10 @@ +FILE(REMOVE_RECURSE + "CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o" + "rtl_adsb.pdb" + "rtl_adsb" +) + +# Per-language clean rules from dependency scanning. +FOREACH(lang C) + INCLUDE(CMakeFiles/rtl_adsb.dir/cmake_clean_${lang}.cmake OPTIONAL) +ENDFOREACH(lang) diff --git a/build/src/CMakeFiles/rtl_adsb.dir/depend.internal b/build/src/CMakeFiles/rtl_adsb.dir/depend.internal new file mode 100644 index 0000000..53eb7fe --- /dev/null +++ b/build/src/CMakeFiles/rtl_adsb.dir/depend.internal @@ -0,0 +1,9 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o + ../include/rtl-sdr.h + ../include/rtl-sdr_export.h + /home/rvb/git/rtl_433/src/getopt/getopt.h + /home/rvb/git/rtl_433/src/rtl_adsb.c + /usr/include/libusb-1.0/libusb.h diff --git a/build/src/CMakeFiles/rtl_adsb.dir/depend.make b/build/src/CMakeFiles/rtl_adsb.dir/depend.make new file mode 100644 index 0000000..09a34a6 --- /dev/null +++ b/build/src/CMakeFiles/rtl_adsb.dir/depend.make @@ -0,0 +1,9 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o: ../include/rtl-sdr.h +src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o: ../include/rtl-sdr_export.h +src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o: ../src/getopt/getopt.h +src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o: ../src/rtl_adsb.c +src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o: /usr/include/libusb-1.0/libusb.h + diff --git a/build/src/CMakeFiles/rtl_adsb.dir/flags.make b/build/src/CMakeFiles/rtl_adsb.dir/flags.make new file mode 100644 index 0000000..f4dc571 --- /dev/null +++ b/build/src/CMakeFiles/rtl_adsb.dir/flags.make @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +# compile C with /usr/bin/cc +C_FLAGS = -O3 -DNDEBUG -I/home/rvb/git/rtl_433/include -I/usr/include/libusb-1.0 -Wall -Wextra -Wno-unused -Wsign-compare -g3 -O0 -fvisibility=hidden + +C_DEFINES = + diff --git a/build/src/CMakeFiles/rtl_adsb.dir/link.txt b/build/src/CMakeFiles/rtl_adsb.dir/link.txt new file mode 100644 index 0000000..2f4ac84 --- /dev/null +++ b/build/src/CMakeFiles/rtl_adsb.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/cc -O3 -DNDEBUG CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o -o rtl_adsb -rdynamic librtlsdr.so.0.0.0 -lusb-1.0 -lpthread -lm -Wl,-rpath,/home/rvb/git/rtl_433/build/src: diff --git a/build/src/CMakeFiles/rtl_adsb.dir/progress.make b/build/src/CMakeFiles/rtl_adsb.dir/progress.make new file mode 100644 index 0000000..164e1d2 --- /dev/null +++ b/build/src/CMakeFiles/rtl_adsb.dir/progress.make @@ -0,0 +1,2 @@ +CMAKE_PROGRESS_1 = 2 + diff --git a/build/src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o b/build/src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o new file mode 100644 index 0000000..c66c8a6 Binary files /dev/null and b/build/src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o differ diff --git a/build/src/CMakeFiles/rtl_eeprom.dir/C.includecache b/build/src/CMakeFiles/rtl_eeprom.dir/C.includecache new file mode 100644 index 0000000..a07c414 --- /dev/null +++ b/build/src/CMakeFiles/rtl_eeprom.dir/C.includecache @@ -0,0 +1,36 @@ +#IncludeRegexLine: ^[ ]*#[ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +../include/rtl-sdr.h +stdint.h +- +rtl-sdr_export.h +- + +../include/rtl-sdr_export.h + +/home/rvb/git/rtl_433/src/getopt/getopt.h +ctype.h +- + +/home/rvb/git/rtl_433/src/rtl_eeprom.c +string.h +- +stdio.h +- +stdlib.h +- +unistd.h +- +Windows.h +- +getopt/getopt.h +/home/rvb/git/rtl_433/src/getopt/getopt.h +rtl-sdr.h +/home/rvb/git/rtl_433/src/rtl-sdr.h + diff --git a/build/src/CMakeFiles/rtl_eeprom.dir/DependInfo.cmake b/build/src/CMakeFiles/rtl_eeprom.dir/DependInfo.cmake new file mode 100644 index 0000000..3ca8016 --- /dev/null +++ b/build/src/CMakeFiles/rtl_eeprom.dir/DependInfo.cmake @@ -0,0 +1,23 @@ +# The set of languages for which implicit dependencies are needed: +SET(CMAKE_DEPENDS_LANGUAGES + "C" + ) +# The set of files for implicit dependencies of each language: +SET(CMAKE_DEPENDS_CHECK_C + "/home/rvb/git/rtl_433/src/rtl_eeprom.c" "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o" + ) +SET(CMAKE_C_COMPILER_ID "GNU") + +# Targets to which this target links. +SET(CMAKE_TARGET_LINKED_INFO_FILES + "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtlsdr_shared.dir/DependInfo.cmake" + ) + +# The include file search paths: +SET(CMAKE_C_TARGET_INCLUDE_PATH + "../include" + "/usr/include/libusb-1.0" + ) +SET(CMAKE_CXX_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_Fortran_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_ASM_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) diff --git a/build/src/CMakeFiles/rtl_eeprom.dir/build.make b/build/src/CMakeFiles/rtl_eeprom.dir/build.make new file mode 100644 index 0000000..728559d --- /dev/null +++ b/build/src/CMakeFiles/rtl_eeprom.dir/build.make @@ -0,0 +1,104 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/rvb/git/rtl_433 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/rvb/git/rtl_433/build + +# Include any dependencies generated for this target. +include src/CMakeFiles/rtl_eeprom.dir/depend.make + +# Include the progress variables for this target. +include src/CMakeFiles/rtl_eeprom.dir/progress.make + +# Include the compile flags for this target's objects. +include src/CMakeFiles/rtl_eeprom.dir/flags.make + +src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o: src/CMakeFiles/rtl_eeprom.dir/flags.make +src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o: ../src/rtl_eeprom.c + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles $(CMAKE_PROGRESS_1) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building C object src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o -c /home/rvb/git/rtl_433/src/rtl_eeprom.c + +src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.i" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -E /home/rvb/git/rtl_433/src/rtl_eeprom.c > CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.i + +src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.s" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -S /home/rvb/git/rtl_433/src/rtl_eeprom.c -o CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.s + +src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o.requires: +.PHONY : src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o.requires + +src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o.provides: src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o.requires + $(MAKE) -f src/CMakeFiles/rtl_eeprom.dir/build.make src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o.provides.build +.PHONY : src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o.provides + +src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o.provides.build: src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o + +# Object files for target rtl_eeprom +rtl_eeprom_OBJECTS = \ +"CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o" + +# External object files for target rtl_eeprom +rtl_eeprom_EXTERNAL_OBJECTS = + +src/rtl_eeprom: src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o +src/rtl_eeprom: src/CMakeFiles/rtl_eeprom.dir/build.make +src/rtl_eeprom: src/librtlsdr.so.0.0.0 +src/rtl_eeprom: /usr/lib/x86_64-linux-gnu/libusb-1.0.so +src/rtl_eeprom: src/CMakeFiles/rtl_eeprom.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking C executable rtl_eeprom" + cd /home/rvb/git/rtl_433/build/src && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/rtl_eeprom.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +src/CMakeFiles/rtl_eeprom.dir/build: src/rtl_eeprom +.PHONY : src/CMakeFiles/rtl_eeprom.dir/build + +src/CMakeFiles/rtl_eeprom.dir/requires: src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o.requires +.PHONY : src/CMakeFiles/rtl_eeprom.dir/requires + +src/CMakeFiles/rtl_eeprom.dir/clean: + cd /home/rvb/git/rtl_433/build/src && $(CMAKE_COMMAND) -P CMakeFiles/rtl_eeprom.dir/cmake_clean.cmake +.PHONY : src/CMakeFiles/rtl_eeprom.dir/clean + +src/CMakeFiles/rtl_eeprom.dir/depend: + cd /home/rvb/git/rtl_433/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/rvb/git/rtl_433 /home/rvb/git/rtl_433/src /home/rvb/git/rtl_433/build /home/rvb/git/rtl_433/build/src /home/rvb/git/rtl_433/build/src/CMakeFiles/rtl_eeprom.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : src/CMakeFiles/rtl_eeprom.dir/depend + diff --git a/build/src/CMakeFiles/rtl_eeprom.dir/cmake_clean.cmake b/build/src/CMakeFiles/rtl_eeprom.dir/cmake_clean.cmake new file mode 100644 index 0000000..72eb064 --- /dev/null +++ b/build/src/CMakeFiles/rtl_eeprom.dir/cmake_clean.cmake @@ -0,0 +1,10 @@ +FILE(REMOVE_RECURSE + "CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o" + "rtl_eeprom.pdb" + "rtl_eeprom" +) + +# Per-language clean rules from dependency scanning. +FOREACH(lang C) + INCLUDE(CMakeFiles/rtl_eeprom.dir/cmake_clean_${lang}.cmake OPTIONAL) +ENDFOREACH(lang) diff --git a/build/src/CMakeFiles/rtl_eeprom.dir/depend.internal b/build/src/CMakeFiles/rtl_eeprom.dir/depend.internal new file mode 100644 index 0000000..72bfb26 --- /dev/null +++ b/build/src/CMakeFiles/rtl_eeprom.dir/depend.internal @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o + ../include/rtl-sdr.h + ../include/rtl-sdr_export.h + /home/rvb/git/rtl_433/src/getopt/getopt.h + /home/rvb/git/rtl_433/src/rtl_eeprom.c diff --git a/build/src/CMakeFiles/rtl_eeprom.dir/depend.make b/build/src/CMakeFiles/rtl_eeprom.dir/depend.make new file mode 100644 index 0000000..3b8517b --- /dev/null +++ b/build/src/CMakeFiles/rtl_eeprom.dir/depend.make @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o: ../include/rtl-sdr.h +src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o: ../include/rtl-sdr_export.h +src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o: ../src/getopt/getopt.h +src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o: ../src/rtl_eeprom.c + diff --git a/build/src/CMakeFiles/rtl_eeprom.dir/flags.make b/build/src/CMakeFiles/rtl_eeprom.dir/flags.make new file mode 100644 index 0000000..f4dc571 --- /dev/null +++ b/build/src/CMakeFiles/rtl_eeprom.dir/flags.make @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +# compile C with /usr/bin/cc +C_FLAGS = -O3 -DNDEBUG -I/home/rvb/git/rtl_433/include -I/usr/include/libusb-1.0 -Wall -Wextra -Wno-unused -Wsign-compare -g3 -O0 -fvisibility=hidden + +C_DEFINES = + diff --git a/build/src/CMakeFiles/rtl_eeprom.dir/link.txt b/build/src/CMakeFiles/rtl_eeprom.dir/link.txt new file mode 100644 index 0000000..3349419 --- /dev/null +++ b/build/src/CMakeFiles/rtl_eeprom.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/cc -O3 -DNDEBUG CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o -o rtl_eeprom -rdynamic librtlsdr.so.0.0.0 -lusb-1.0 -lpthread -Wl,-rpath,/home/rvb/git/rtl_433/build/src: diff --git a/build/src/CMakeFiles/rtl_eeprom.dir/progress.make b/build/src/CMakeFiles/rtl_eeprom.dir/progress.make new file mode 100644 index 0000000..822db75 --- /dev/null +++ b/build/src/CMakeFiles/rtl_eeprom.dir/progress.make @@ -0,0 +1,2 @@ +CMAKE_PROGRESS_1 = 3 + diff --git a/build/src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o b/build/src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o new file mode 100644 index 0000000..bcf2cfc Binary files /dev/null and b/build/src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o differ diff --git a/build/src/CMakeFiles/rtl_fm.dir/C.includecache b/build/src/CMakeFiles/rtl_fm.dir/C.includecache new file mode 100644 index 0000000..8fc9c76 --- /dev/null +++ b/build/src/CMakeFiles/rtl_fm.dir/C.includecache @@ -0,0 +1,68 @@ +#IncludeRegexLine: ^[ ]*#[ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +../include/rtl-sdr.h +stdint.h +- +rtl-sdr_export.h +- + +../include/rtl-sdr_export.h + +/home/rvb/git/rtl_433/src/getopt/getopt.h +ctype.h +- + +/home/rvb/git/rtl_433/src/rtl_fm.c +errno.h +- +signal.h +- +string.h +- +stdio.h +- +stdlib.h +- +math.h +- +unistd.h +- +Windows.h +- +fcntl.h +- +io.h +- +getopt/getopt.h +/home/rvb/git/rtl_433/src/getopt/getopt.h +semaphore.h +- +pthread.h +- +libusb.h +- +rtl-sdr.h +/home/rvb/git/rtl_433/src/rtl-sdr.h + +/usr/include/libusb-1.0/libusb.h +stdint.h +- +sys/types.h +- +sys/time.h +- +time.h +- +limits.h +- +windows.h +- +winsock.h +- + diff --git a/build/src/CMakeFiles/rtl_fm.dir/DependInfo.cmake b/build/src/CMakeFiles/rtl_fm.dir/DependInfo.cmake new file mode 100644 index 0000000..8c3b092 --- /dev/null +++ b/build/src/CMakeFiles/rtl_fm.dir/DependInfo.cmake @@ -0,0 +1,23 @@ +# The set of languages for which implicit dependencies are needed: +SET(CMAKE_DEPENDS_LANGUAGES + "C" + ) +# The set of files for implicit dependencies of each language: +SET(CMAKE_DEPENDS_CHECK_C + "/home/rvb/git/rtl_433/src/rtl_fm.c" "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtl_fm.dir/rtl_fm.c.o" + ) +SET(CMAKE_C_COMPILER_ID "GNU") + +# Targets to which this target links. +SET(CMAKE_TARGET_LINKED_INFO_FILES + "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtlsdr_shared.dir/DependInfo.cmake" + ) + +# The include file search paths: +SET(CMAKE_C_TARGET_INCLUDE_PATH + "../include" + "/usr/include/libusb-1.0" + ) +SET(CMAKE_CXX_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_Fortran_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_ASM_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) diff --git a/build/src/CMakeFiles/rtl_fm.dir/build.make b/build/src/CMakeFiles/rtl_fm.dir/build.make new file mode 100644 index 0000000..95873e0 --- /dev/null +++ b/build/src/CMakeFiles/rtl_fm.dir/build.make @@ -0,0 +1,104 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/rvb/git/rtl_433 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/rvb/git/rtl_433/build + +# Include any dependencies generated for this target. +include src/CMakeFiles/rtl_fm.dir/depend.make + +# Include the progress variables for this target. +include src/CMakeFiles/rtl_fm.dir/progress.make + +# Include the compile flags for this target's objects. +include src/CMakeFiles/rtl_fm.dir/flags.make + +src/CMakeFiles/rtl_fm.dir/rtl_fm.c.o: src/CMakeFiles/rtl_fm.dir/flags.make +src/CMakeFiles/rtl_fm.dir/rtl_fm.c.o: ../src/rtl_fm.c + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles $(CMAKE_PROGRESS_1) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building C object src/CMakeFiles/rtl_fm.dir/rtl_fm.c.o" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/rtl_fm.dir/rtl_fm.c.o -c /home/rvb/git/rtl_433/src/rtl_fm.c + +src/CMakeFiles/rtl_fm.dir/rtl_fm.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/rtl_fm.dir/rtl_fm.c.i" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -E /home/rvb/git/rtl_433/src/rtl_fm.c > CMakeFiles/rtl_fm.dir/rtl_fm.c.i + +src/CMakeFiles/rtl_fm.dir/rtl_fm.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/rtl_fm.dir/rtl_fm.c.s" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -S /home/rvb/git/rtl_433/src/rtl_fm.c -o CMakeFiles/rtl_fm.dir/rtl_fm.c.s + +src/CMakeFiles/rtl_fm.dir/rtl_fm.c.o.requires: +.PHONY : src/CMakeFiles/rtl_fm.dir/rtl_fm.c.o.requires + +src/CMakeFiles/rtl_fm.dir/rtl_fm.c.o.provides: src/CMakeFiles/rtl_fm.dir/rtl_fm.c.o.requires + $(MAKE) -f src/CMakeFiles/rtl_fm.dir/build.make src/CMakeFiles/rtl_fm.dir/rtl_fm.c.o.provides.build +.PHONY : src/CMakeFiles/rtl_fm.dir/rtl_fm.c.o.provides + +src/CMakeFiles/rtl_fm.dir/rtl_fm.c.o.provides.build: src/CMakeFiles/rtl_fm.dir/rtl_fm.c.o + +# Object files for target rtl_fm +rtl_fm_OBJECTS = \ +"CMakeFiles/rtl_fm.dir/rtl_fm.c.o" + +# External object files for target rtl_fm +rtl_fm_EXTERNAL_OBJECTS = + +src/rtl_fm: src/CMakeFiles/rtl_fm.dir/rtl_fm.c.o +src/rtl_fm: src/CMakeFiles/rtl_fm.dir/build.make +src/rtl_fm: src/librtlsdr.so.0.0.0 +src/rtl_fm: /usr/lib/x86_64-linux-gnu/libusb-1.0.so +src/rtl_fm: src/CMakeFiles/rtl_fm.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking C executable rtl_fm" + cd /home/rvb/git/rtl_433/build/src && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/rtl_fm.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +src/CMakeFiles/rtl_fm.dir/build: src/rtl_fm +.PHONY : src/CMakeFiles/rtl_fm.dir/build + +src/CMakeFiles/rtl_fm.dir/requires: src/CMakeFiles/rtl_fm.dir/rtl_fm.c.o.requires +.PHONY : src/CMakeFiles/rtl_fm.dir/requires + +src/CMakeFiles/rtl_fm.dir/clean: + cd /home/rvb/git/rtl_433/build/src && $(CMAKE_COMMAND) -P CMakeFiles/rtl_fm.dir/cmake_clean.cmake +.PHONY : src/CMakeFiles/rtl_fm.dir/clean + +src/CMakeFiles/rtl_fm.dir/depend: + cd /home/rvb/git/rtl_433/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/rvb/git/rtl_433 /home/rvb/git/rtl_433/src /home/rvb/git/rtl_433/build /home/rvb/git/rtl_433/build/src /home/rvb/git/rtl_433/build/src/CMakeFiles/rtl_fm.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : src/CMakeFiles/rtl_fm.dir/depend + diff --git a/build/src/CMakeFiles/rtl_fm.dir/cmake_clean.cmake b/build/src/CMakeFiles/rtl_fm.dir/cmake_clean.cmake new file mode 100644 index 0000000..09229d9 --- /dev/null +++ b/build/src/CMakeFiles/rtl_fm.dir/cmake_clean.cmake @@ -0,0 +1,10 @@ +FILE(REMOVE_RECURSE + "CMakeFiles/rtl_fm.dir/rtl_fm.c.o" + "rtl_fm.pdb" + "rtl_fm" +) + +# Per-language clean rules from dependency scanning. +FOREACH(lang C) + INCLUDE(CMakeFiles/rtl_fm.dir/cmake_clean_${lang}.cmake OPTIONAL) +ENDFOREACH(lang) diff --git a/build/src/CMakeFiles/rtl_fm.dir/depend.internal b/build/src/CMakeFiles/rtl_fm.dir/depend.internal new file mode 100644 index 0000000..3795536 --- /dev/null +++ b/build/src/CMakeFiles/rtl_fm.dir/depend.internal @@ -0,0 +1,9 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +src/CMakeFiles/rtl_fm.dir/rtl_fm.c.o + ../include/rtl-sdr.h + ../include/rtl-sdr_export.h + /home/rvb/git/rtl_433/src/getopt/getopt.h + /home/rvb/git/rtl_433/src/rtl_fm.c + /usr/include/libusb-1.0/libusb.h diff --git a/build/src/CMakeFiles/rtl_fm.dir/depend.make b/build/src/CMakeFiles/rtl_fm.dir/depend.make new file mode 100644 index 0000000..83e1000 --- /dev/null +++ b/build/src/CMakeFiles/rtl_fm.dir/depend.make @@ -0,0 +1,9 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +src/CMakeFiles/rtl_fm.dir/rtl_fm.c.o: ../include/rtl-sdr.h +src/CMakeFiles/rtl_fm.dir/rtl_fm.c.o: ../include/rtl-sdr_export.h +src/CMakeFiles/rtl_fm.dir/rtl_fm.c.o: ../src/getopt/getopt.h +src/CMakeFiles/rtl_fm.dir/rtl_fm.c.o: ../src/rtl_fm.c +src/CMakeFiles/rtl_fm.dir/rtl_fm.c.o: /usr/include/libusb-1.0/libusb.h + diff --git a/build/src/CMakeFiles/rtl_fm.dir/flags.make b/build/src/CMakeFiles/rtl_fm.dir/flags.make new file mode 100644 index 0000000..f4dc571 --- /dev/null +++ b/build/src/CMakeFiles/rtl_fm.dir/flags.make @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +# compile C with /usr/bin/cc +C_FLAGS = -O3 -DNDEBUG -I/home/rvb/git/rtl_433/include -I/usr/include/libusb-1.0 -Wall -Wextra -Wno-unused -Wsign-compare -g3 -O0 -fvisibility=hidden + +C_DEFINES = + diff --git a/build/src/CMakeFiles/rtl_fm.dir/link.txt b/build/src/CMakeFiles/rtl_fm.dir/link.txt new file mode 100644 index 0000000..48aaeca --- /dev/null +++ b/build/src/CMakeFiles/rtl_fm.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/cc -O3 -DNDEBUG CMakeFiles/rtl_fm.dir/rtl_fm.c.o -o rtl_fm -rdynamic librtlsdr.so.0.0.0 -lusb-1.0 -lpthread -lm -Wl,-rpath,/home/rvb/git/rtl_433/build/src: diff --git a/build/src/CMakeFiles/rtl_fm.dir/progress.make b/build/src/CMakeFiles/rtl_fm.dir/progress.make new file mode 100644 index 0000000..8b1fa81 --- /dev/null +++ b/build/src/CMakeFiles/rtl_fm.dir/progress.make @@ -0,0 +1,2 @@ +CMAKE_PROGRESS_1 = 4 + diff --git a/build/src/CMakeFiles/rtl_fm.dir/rtl_fm.c.o b/build/src/CMakeFiles/rtl_fm.dir/rtl_fm.c.o new file mode 100644 index 0000000..717fdb7 Binary files /dev/null and b/build/src/CMakeFiles/rtl_fm.dir/rtl_fm.c.o differ diff --git a/build/src/CMakeFiles/rtl_sdr.dir/C.includecache b/build/src/CMakeFiles/rtl_sdr.dir/C.includecache new file mode 100644 index 0000000..e47bc4b --- /dev/null +++ b/build/src/CMakeFiles/rtl_sdr.dir/C.includecache @@ -0,0 +1,44 @@ +#IncludeRegexLine: ^[ ]*#[ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +../include/rtl-sdr.h +stdint.h +- +rtl-sdr_export.h +- + +../include/rtl-sdr_export.h + +/home/rvb/git/rtl_433/src/getopt/getopt.h +ctype.h +- + +/home/rvb/git/rtl_433/src/rtl_sdr.c +errno.h +- +signal.h +- +string.h +- +stdio.h +- +stdlib.h +- +unistd.h +- +Windows.h +- +io.h +- +fcntl.h +- +getopt/getopt.h +/home/rvb/git/rtl_433/src/getopt/getopt.h +rtl-sdr.h +/home/rvb/git/rtl_433/src/rtl-sdr.h + diff --git a/build/src/CMakeFiles/rtl_sdr.dir/DependInfo.cmake b/build/src/CMakeFiles/rtl_sdr.dir/DependInfo.cmake new file mode 100644 index 0000000..cf16725 --- /dev/null +++ b/build/src/CMakeFiles/rtl_sdr.dir/DependInfo.cmake @@ -0,0 +1,23 @@ +# The set of languages for which implicit dependencies are needed: +SET(CMAKE_DEPENDS_LANGUAGES + "C" + ) +# The set of files for implicit dependencies of each language: +SET(CMAKE_DEPENDS_CHECK_C + "/home/rvb/git/rtl_433/src/rtl_sdr.c" "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o" + ) +SET(CMAKE_C_COMPILER_ID "GNU") + +# Targets to which this target links. +SET(CMAKE_TARGET_LINKED_INFO_FILES + "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtlsdr_shared.dir/DependInfo.cmake" + ) + +# The include file search paths: +SET(CMAKE_C_TARGET_INCLUDE_PATH + "../include" + "/usr/include/libusb-1.0" + ) +SET(CMAKE_CXX_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_Fortran_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_ASM_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) diff --git a/build/src/CMakeFiles/rtl_sdr.dir/build.make b/build/src/CMakeFiles/rtl_sdr.dir/build.make new file mode 100644 index 0000000..c76ac81 --- /dev/null +++ b/build/src/CMakeFiles/rtl_sdr.dir/build.make @@ -0,0 +1,104 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/rvb/git/rtl_433 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/rvb/git/rtl_433/build + +# Include any dependencies generated for this target. +include src/CMakeFiles/rtl_sdr.dir/depend.make + +# Include the progress variables for this target. +include src/CMakeFiles/rtl_sdr.dir/progress.make + +# Include the compile flags for this target's objects. +include src/CMakeFiles/rtl_sdr.dir/flags.make + +src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o: src/CMakeFiles/rtl_sdr.dir/flags.make +src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o: ../src/rtl_sdr.c + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles $(CMAKE_PROGRESS_1) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building C object src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o -c /home/rvb/git/rtl_433/src/rtl_sdr.c + +src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/rtl_sdr.dir/rtl_sdr.c.i" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -E /home/rvb/git/rtl_433/src/rtl_sdr.c > CMakeFiles/rtl_sdr.dir/rtl_sdr.c.i + +src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/rtl_sdr.dir/rtl_sdr.c.s" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -S /home/rvb/git/rtl_433/src/rtl_sdr.c -o CMakeFiles/rtl_sdr.dir/rtl_sdr.c.s + +src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o.requires: +.PHONY : src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o.requires + +src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o.provides: src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o.requires + $(MAKE) -f src/CMakeFiles/rtl_sdr.dir/build.make src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o.provides.build +.PHONY : src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o.provides + +src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o.provides.build: src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o + +# Object files for target rtl_sdr +rtl_sdr_OBJECTS = \ +"CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o" + +# External object files for target rtl_sdr +rtl_sdr_EXTERNAL_OBJECTS = + +src/rtl_sdr: src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o +src/rtl_sdr: src/CMakeFiles/rtl_sdr.dir/build.make +src/rtl_sdr: src/librtlsdr.so.0.0.0 +src/rtl_sdr: /usr/lib/x86_64-linux-gnu/libusb-1.0.so +src/rtl_sdr: src/CMakeFiles/rtl_sdr.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking C executable rtl_sdr" + cd /home/rvb/git/rtl_433/build/src && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/rtl_sdr.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +src/CMakeFiles/rtl_sdr.dir/build: src/rtl_sdr +.PHONY : src/CMakeFiles/rtl_sdr.dir/build + +src/CMakeFiles/rtl_sdr.dir/requires: src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o.requires +.PHONY : src/CMakeFiles/rtl_sdr.dir/requires + +src/CMakeFiles/rtl_sdr.dir/clean: + cd /home/rvb/git/rtl_433/build/src && $(CMAKE_COMMAND) -P CMakeFiles/rtl_sdr.dir/cmake_clean.cmake +.PHONY : src/CMakeFiles/rtl_sdr.dir/clean + +src/CMakeFiles/rtl_sdr.dir/depend: + cd /home/rvb/git/rtl_433/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/rvb/git/rtl_433 /home/rvb/git/rtl_433/src /home/rvb/git/rtl_433/build /home/rvb/git/rtl_433/build/src /home/rvb/git/rtl_433/build/src/CMakeFiles/rtl_sdr.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : src/CMakeFiles/rtl_sdr.dir/depend + diff --git a/build/src/CMakeFiles/rtl_sdr.dir/cmake_clean.cmake b/build/src/CMakeFiles/rtl_sdr.dir/cmake_clean.cmake new file mode 100644 index 0000000..fc4ac8d --- /dev/null +++ b/build/src/CMakeFiles/rtl_sdr.dir/cmake_clean.cmake @@ -0,0 +1,10 @@ +FILE(REMOVE_RECURSE + "CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o" + "rtl_sdr.pdb" + "rtl_sdr" +) + +# Per-language clean rules from dependency scanning. +FOREACH(lang C) + INCLUDE(CMakeFiles/rtl_sdr.dir/cmake_clean_${lang}.cmake OPTIONAL) +ENDFOREACH(lang) diff --git a/build/src/CMakeFiles/rtl_sdr.dir/depend.internal b/build/src/CMakeFiles/rtl_sdr.dir/depend.internal new file mode 100644 index 0000000..b4964a9 --- /dev/null +++ b/build/src/CMakeFiles/rtl_sdr.dir/depend.internal @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o + ../include/rtl-sdr.h + ../include/rtl-sdr_export.h + /home/rvb/git/rtl_433/src/getopt/getopt.h + /home/rvb/git/rtl_433/src/rtl_sdr.c diff --git a/build/src/CMakeFiles/rtl_sdr.dir/depend.make b/build/src/CMakeFiles/rtl_sdr.dir/depend.make new file mode 100644 index 0000000..8f049fa --- /dev/null +++ b/build/src/CMakeFiles/rtl_sdr.dir/depend.make @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o: ../include/rtl-sdr.h +src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o: ../include/rtl-sdr_export.h +src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o: ../src/getopt/getopt.h +src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o: ../src/rtl_sdr.c + diff --git a/build/src/CMakeFiles/rtl_sdr.dir/flags.make b/build/src/CMakeFiles/rtl_sdr.dir/flags.make new file mode 100644 index 0000000..f4dc571 --- /dev/null +++ b/build/src/CMakeFiles/rtl_sdr.dir/flags.make @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +# compile C with /usr/bin/cc +C_FLAGS = -O3 -DNDEBUG -I/home/rvb/git/rtl_433/include -I/usr/include/libusb-1.0 -Wall -Wextra -Wno-unused -Wsign-compare -g3 -O0 -fvisibility=hidden + +C_DEFINES = + diff --git a/build/src/CMakeFiles/rtl_sdr.dir/link.txt b/build/src/CMakeFiles/rtl_sdr.dir/link.txt new file mode 100644 index 0000000..b29aed4 --- /dev/null +++ b/build/src/CMakeFiles/rtl_sdr.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/cc -O3 -DNDEBUG CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o -o rtl_sdr -rdynamic librtlsdr.so.0.0.0 -lusb-1.0 -lpthread -Wl,-rpath,/home/rvb/git/rtl_433/build/src: diff --git a/build/src/CMakeFiles/rtl_sdr.dir/progress.make b/build/src/CMakeFiles/rtl_sdr.dir/progress.make new file mode 100644 index 0000000..b9ea7bd --- /dev/null +++ b/build/src/CMakeFiles/rtl_sdr.dir/progress.make @@ -0,0 +1,2 @@ +CMAKE_PROGRESS_1 = 5 + diff --git a/build/src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o b/build/src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o new file mode 100644 index 0000000..beca2a7 Binary files /dev/null and b/build/src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o differ diff --git a/build/src/CMakeFiles/rtl_tcp.dir/C.includecache b/build/src/CMakeFiles/rtl_tcp.dir/C.includecache new file mode 100644 index 0000000..8d4b0c9 --- /dev/null +++ b/build/src/CMakeFiles/rtl_tcp.dir/C.includecache @@ -0,0 +1,56 @@ +#IncludeRegexLine: ^[ ]*#[ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +../include/rtl-sdr.h +stdint.h +- +rtl-sdr_export.h +- + +../include/rtl-sdr_export.h + +/home/rvb/git/rtl_433/src/getopt/getopt.h +ctype.h +- + +/home/rvb/git/rtl_433/src/rtl_tcp.c +errno.h +- +signal.h +- +string.h +- +stdio.h +- +stdlib.h +- +unistd.h +- +arpa/inet.h +- +sys/socket.h +- +sys/types.h +- +sys/socket.h +- +sys/time.h +- +netinet/in.h +- +fcntl.h +- +WinSock2.h +- +getopt/getopt.h +/home/rvb/git/rtl_433/src/getopt/getopt.h +pthread.h +- +rtl-sdr.h +/home/rvb/git/rtl_433/src/rtl-sdr.h + diff --git a/build/src/CMakeFiles/rtl_tcp.dir/DependInfo.cmake b/build/src/CMakeFiles/rtl_tcp.dir/DependInfo.cmake new file mode 100644 index 0000000..be153c2 --- /dev/null +++ b/build/src/CMakeFiles/rtl_tcp.dir/DependInfo.cmake @@ -0,0 +1,23 @@ +# The set of languages for which implicit dependencies are needed: +SET(CMAKE_DEPENDS_LANGUAGES + "C" + ) +# The set of files for implicit dependencies of each language: +SET(CMAKE_DEPENDS_CHECK_C + "/home/rvb/git/rtl_433/src/rtl_tcp.c" "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o" + ) +SET(CMAKE_C_COMPILER_ID "GNU") + +# Targets to which this target links. +SET(CMAKE_TARGET_LINKED_INFO_FILES + "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtlsdr_shared.dir/DependInfo.cmake" + ) + +# The include file search paths: +SET(CMAKE_C_TARGET_INCLUDE_PATH + "../include" + "/usr/include/libusb-1.0" + ) +SET(CMAKE_CXX_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_Fortran_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_ASM_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) diff --git a/build/src/CMakeFiles/rtl_tcp.dir/build.make b/build/src/CMakeFiles/rtl_tcp.dir/build.make new file mode 100644 index 0000000..1534eb9 --- /dev/null +++ b/build/src/CMakeFiles/rtl_tcp.dir/build.make @@ -0,0 +1,104 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/rvb/git/rtl_433 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/rvb/git/rtl_433/build + +# Include any dependencies generated for this target. +include src/CMakeFiles/rtl_tcp.dir/depend.make + +# Include the progress variables for this target. +include src/CMakeFiles/rtl_tcp.dir/progress.make + +# Include the compile flags for this target's objects. +include src/CMakeFiles/rtl_tcp.dir/flags.make + +src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o: src/CMakeFiles/rtl_tcp.dir/flags.make +src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o: ../src/rtl_tcp.c + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles $(CMAKE_PROGRESS_1) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building C object src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o -c /home/rvb/git/rtl_433/src/rtl_tcp.c + +src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/rtl_tcp.dir/rtl_tcp.c.i" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -E /home/rvb/git/rtl_433/src/rtl_tcp.c > CMakeFiles/rtl_tcp.dir/rtl_tcp.c.i + +src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/rtl_tcp.dir/rtl_tcp.c.s" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -S /home/rvb/git/rtl_433/src/rtl_tcp.c -o CMakeFiles/rtl_tcp.dir/rtl_tcp.c.s + +src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o.requires: +.PHONY : src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o.requires + +src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o.provides: src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o.requires + $(MAKE) -f src/CMakeFiles/rtl_tcp.dir/build.make src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o.provides.build +.PHONY : src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o.provides + +src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o.provides.build: src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o + +# Object files for target rtl_tcp +rtl_tcp_OBJECTS = \ +"CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o" + +# External object files for target rtl_tcp +rtl_tcp_EXTERNAL_OBJECTS = + +src/rtl_tcp: src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o +src/rtl_tcp: src/CMakeFiles/rtl_tcp.dir/build.make +src/rtl_tcp: src/librtlsdr.so.0.0.0 +src/rtl_tcp: /usr/lib/x86_64-linux-gnu/libusb-1.0.so +src/rtl_tcp: src/CMakeFiles/rtl_tcp.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking C executable rtl_tcp" + cd /home/rvb/git/rtl_433/build/src && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/rtl_tcp.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +src/CMakeFiles/rtl_tcp.dir/build: src/rtl_tcp +.PHONY : src/CMakeFiles/rtl_tcp.dir/build + +src/CMakeFiles/rtl_tcp.dir/requires: src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o.requires +.PHONY : src/CMakeFiles/rtl_tcp.dir/requires + +src/CMakeFiles/rtl_tcp.dir/clean: + cd /home/rvb/git/rtl_433/build/src && $(CMAKE_COMMAND) -P CMakeFiles/rtl_tcp.dir/cmake_clean.cmake +.PHONY : src/CMakeFiles/rtl_tcp.dir/clean + +src/CMakeFiles/rtl_tcp.dir/depend: + cd /home/rvb/git/rtl_433/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/rvb/git/rtl_433 /home/rvb/git/rtl_433/src /home/rvb/git/rtl_433/build /home/rvb/git/rtl_433/build/src /home/rvb/git/rtl_433/build/src/CMakeFiles/rtl_tcp.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : src/CMakeFiles/rtl_tcp.dir/depend + diff --git a/build/src/CMakeFiles/rtl_tcp.dir/cmake_clean.cmake b/build/src/CMakeFiles/rtl_tcp.dir/cmake_clean.cmake new file mode 100644 index 0000000..4d200c1 --- /dev/null +++ b/build/src/CMakeFiles/rtl_tcp.dir/cmake_clean.cmake @@ -0,0 +1,10 @@ +FILE(REMOVE_RECURSE + "CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o" + "rtl_tcp.pdb" + "rtl_tcp" +) + +# Per-language clean rules from dependency scanning. +FOREACH(lang C) + INCLUDE(CMakeFiles/rtl_tcp.dir/cmake_clean_${lang}.cmake OPTIONAL) +ENDFOREACH(lang) diff --git a/build/src/CMakeFiles/rtl_tcp.dir/depend.internal b/build/src/CMakeFiles/rtl_tcp.dir/depend.internal new file mode 100644 index 0000000..e317f7b --- /dev/null +++ b/build/src/CMakeFiles/rtl_tcp.dir/depend.internal @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o + ../include/rtl-sdr.h + ../include/rtl-sdr_export.h + /home/rvb/git/rtl_433/src/getopt/getopt.h + /home/rvb/git/rtl_433/src/rtl_tcp.c diff --git a/build/src/CMakeFiles/rtl_tcp.dir/depend.make b/build/src/CMakeFiles/rtl_tcp.dir/depend.make new file mode 100644 index 0000000..732b843 --- /dev/null +++ b/build/src/CMakeFiles/rtl_tcp.dir/depend.make @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o: ../include/rtl-sdr.h +src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o: ../include/rtl-sdr_export.h +src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o: ../src/getopt/getopt.h +src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o: ../src/rtl_tcp.c + diff --git a/build/src/CMakeFiles/rtl_tcp.dir/flags.make b/build/src/CMakeFiles/rtl_tcp.dir/flags.make new file mode 100644 index 0000000..f4dc571 --- /dev/null +++ b/build/src/CMakeFiles/rtl_tcp.dir/flags.make @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +# compile C with /usr/bin/cc +C_FLAGS = -O3 -DNDEBUG -I/home/rvb/git/rtl_433/include -I/usr/include/libusb-1.0 -Wall -Wextra -Wno-unused -Wsign-compare -g3 -O0 -fvisibility=hidden + +C_DEFINES = + diff --git a/build/src/CMakeFiles/rtl_tcp.dir/link.txt b/build/src/CMakeFiles/rtl_tcp.dir/link.txt new file mode 100644 index 0000000..f08ccae --- /dev/null +++ b/build/src/CMakeFiles/rtl_tcp.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/cc -O3 -DNDEBUG CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o -o rtl_tcp -rdynamic librtlsdr.so.0.0.0 -lusb-1.0 -lpthread -Wl,-rpath,/home/rvb/git/rtl_433/build/src: diff --git a/build/src/CMakeFiles/rtl_tcp.dir/progress.make b/build/src/CMakeFiles/rtl_tcp.dir/progress.make new file mode 100644 index 0000000..16d5ea2 --- /dev/null +++ b/build/src/CMakeFiles/rtl_tcp.dir/progress.make @@ -0,0 +1,2 @@ +CMAKE_PROGRESS_1 = 6 + diff --git a/build/src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o b/build/src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o new file mode 100644 index 0000000..4e17c9f Binary files /dev/null and b/build/src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o differ diff --git a/build/src/CMakeFiles/rtl_test.dir/C.includecache b/build/src/CMakeFiles/rtl_test.dir/C.includecache new file mode 100644 index 0000000..2122d99 --- /dev/null +++ b/build/src/CMakeFiles/rtl_test.dir/C.includecache @@ -0,0 +1,46 @@ +#IncludeRegexLine: ^[ ]*#[ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +../include/rtl-sdr.h +stdint.h +- +rtl-sdr_export.h +- + +../include/rtl-sdr_export.h + +/home/rvb/git/rtl_433/src/getopt/getopt.h +ctype.h +- + +/home/rvb/git/rtl_433/src/rtl_test.c +errno.h +- +signal.h +- +string.h +- +stdio.h +- +stdlib.h +- +math.h +- +sys/time.h +- +time.h +- +unistd.h +- +Windows.h +- +getopt/getopt.h +/home/rvb/git/rtl_433/src/getopt/getopt.h +rtl-sdr.h +/home/rvb/git/rtl_433/src/rtl-sdr.h + diff --git a/build/src/CMakeFiles/rtl_test.dir/DependInfo.cmake b/build/src/CMakeFiles/rtl_test.dir/DependInfo.cmake new file mode 100644 index 0000000..6681f04 --- /dev/null +++ b/build/src/CMakeFiles/rtl_test.dir/DependInfo.cmake @@ -0,0 +1,23 @@ +# The set of languages for which implicit dependencies are needed: +SET(CMAKE_DEPENDS_LANGUAGES + "C" + ) +# The set of files for implicit dependencies of each language: +SET(CMAKE_DEPENDS_CHECK_C + "/home/rvb/git/rtl_433/src/rtl_test.c" "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtl_test.dir/rtl_test.c.o" + ) +SET(CMAKE_C_COMPILER_ID "GNU") + +# Targets to which this target links. +SET(CMAKE_TARGET_LINKED_INFO_FILES + "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtlsdr_shared.dir/DependInfo.cmake" + ) + +# The include file search paths: +SET(CMAKE_C_TARGET_INCLUDE_PATH + "../include" + "/usr/include/libusb-1.0" + ) +SET(CMAKE_CXX_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_Fortran_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_ASM_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) diff --git a/build/src/CMakeFiles/rtl_test.dir/build.make b/build/src/CMakeFiles/rtl_test.dir/build.make new file mode 100644 index 0000000..3b48646 --- /dev/null +++ b/build/src/CMakeFiles/rtl_test.dir/build.make @@ -0,0 +1,104 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/rvb/git/rtl_433 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/rvb/git/rtl_433/build + +# Include any dependencies generated for this target. +include src/CMakeFiles/rtl_test.dir/depend.make + +# Include the progress variables for this target. +include src/CMakeFiles/rtl_test.dir/progress.make + +# Include the compile flags for this target's objects. +include src/CMakeFiles/rtl_test.dir/flags.make + +src/CMakeFiles/rtl_test.dir/rtl_test.c.o: src/CMakeFiles/rtl_test.dir/flags.make +src/CMakeFiles/rtl_test.dir/rtl_test.c.o: ../src/rtl_test.c + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles $(CMAKE_PROGRESS_1) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building C object src/CMakeFiles/rtl_test.dir/rtl_test.c.o" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/rtl_test.dir/rtl_test.c.o -c /home/rvb/git/rtl_433/src/rtl_test.c + +src/CMakeFiles/rtl_test.dir/rtl_test.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/rtl_test.dir/rtl_test.c.i" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -E /home/rvb/git/rtl_433/src/rtl_test.c > CMakeFiles/rtl_test.dir/rtl_test.c.i + +src/CMakeFiles/rtl_test.dir/rtl_test.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/rtl_test.dir/rtl_test.c.s" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -S /home/rvb/git/rtl_433/src/rtl_test.c -o CMakeFiles/rtl_test.dir/rtl_test.c.s + +src/CMakeFiles/rtl_test.dir/rtl_test.c.o.requires: +.PHONY : src/CMakeFiles/rtl_test.dir/rtl_test.c.o.requires + +src/CMakeFiles/rtl_test.dir/rtl_test.c.o.provides: src/CMakeFiles/rtl_test.dir/rtl_test.c.o.requires + $(MAKE) -f src/CMakeFiles/rtl_test.dir/build.make src/CMakeFiles/rtl_test.dir/rtl_test.c.o.provides.build +.PHONY : src/CMakeFiles/rtl_test.dir/rtl_test.c.o.provides + +src/CMakeFiles/rtl_test.dir/rtl_test.c.o.provides.build: src/CMakeFiles/rtl_test.dir/rtl_test.c.o + +# Object files for target rtl_test +rtl_test_OBJECTS = \ +"CMakeFiles/rtl_test.dir/rtl_test.c.o" + +# External object files for target rtl_test +rtl_test_EXTERNAL_OBJECTS = + +src/rtl_test: src/CMakeFiles/rtl_test.dir/rtl_test.c.o +src/rtl_test: src/CMakeFiles/rtl_test.dir/build.make +src/rtl_test: src/librtlsdr.so.0.0.0 +src/rtl_test: /usr/lib/x86_64-linux-gnu/libusb-1.0.so +src/rtl_test: src/CMakeFiles/rtl_test.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking C executable rtl_test" + cd /home/rvb/git/rtl_433/build/src && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/rtl_test.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +src/CMakeFiles/rtl_test.dir/build: src/rtl_test +.PHONY : src/CMakeFiles/rtl_test.dir/build + +src/CMakeFiles/rtl_test.dir/requires: src/CMakeFiles/rtl_test.dir/rtl_test.c.o.requires +.PHONY : src/CMakeFiles/rtl_test.dir/requires + +src/CMakeFiles/rtl_test.dir/clean: + cd /home/rvb/git/rtl_433/build/src && $(CMAKE_COMMAND) -P CMakeFiles/rtl_test.dir/cmake_clean.cmake +.PHONY : src/CMakeFiles/rtl_test.dir/clean + +src/CMakeFiles/rtl_test.dir/depend: + cd /home/rvb/git/rtl_433/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/rvb/git/rtl_433 /home/rvb/git/rtl_433/src /home/rvb/git/rtl_433/build /home/rvb/git/rtl_433/build/src /home/rvb/git/rtl_433/build/src/CMakeFiles/rtl_test.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : src/CMakeFiles/rtl_test.dir/depend + diff --git a/build/src/CMakeFiles/rtl_test.dir/cmake_clean.cmake b/build/src/CMakeFiles/rtl_test.dir/cmake_clean.cmake new file mode 100644 index 0000000..aff9013 --- /dev/null +++ b/build/src/CMakeFiles/rtl_test.dir/cmake_clean.cmake @@ -0,0 +1,10 @@ +FILE(REMOVE_RECURSE + "CMakeFiles/rtl_test.dir/rtl_test.c.o" + "rtl_test.pdb" + "rtl_test" +) + +# Per-language clean rules from dependency scanning. +FOREACH(lang C) + INCLUDE(CMakeFiles/rtl_test.dir/cmake_clean_${lang}.cmake OPTIONAL) +ENDFOREACH(lang) diff --git a/build/src/CMakeFiles/rtl_test.dir/depend.internal b/build/src/CMakeFiles/rtl_test.dir/depend.internal new file mode 100644 index 0000000..ba680c3 --- /dev/null +++ b/build/src/CMakeFiles/rtl_test.dir/depend.internal @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +src/CMakeFiles/rtl_test.dir/rtl_test.c.o + ../include/rtl-sdr.h + ../include/rtl-sdr_export.h + /home/rvb/git/rtl_433/src/getopt/getopt.h + /home/rvb/git/rtl_433/src/rtl_test.c diff --git a/build/src/CMakeFiles/rtl_test.dir/depend.make b/build/src/CMakeFiles/rtl_test.dir/depend.make new file mode 100644 index 0000000..5f021ba --- /dev/null +++ b/build/src/CMakeFiles/rtl_test.dir/depend.make @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +src/CMakeFiles/rtl_test.dir/rtl_test.c.o: ../include/rtl-sdr.h +src/CMakeFiles/rtl_test.dir/rtl_test.c.o: ../include/rtl-sdr_export.h +src/CMakeFiles/rtl_test.dir/rtl_test.c.o: ../src/getopt/getopt.h +src/CMakeFiles/rtl_test.dir/rtl_test.c.o: ../src/rtl_test.c + diff --git a/build/src/CMakeFiles/rtl_test.dir/flags.make b/build/src/CMakeFiles/rtl_test.dir/flags.make new file mode 100644 index 0000000..f4dc571 --- /dev/null +++ b/build/src/CMakeFiles/rtl_test.dir/flags.make @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +# compile C with /usr/bin/cc +C_FLAGS = -O3 -DNDEBUG -I/home/rvb/git/rtl_433/include -I/usr/include/libusb-1.0 -Wall -Wextra -Wno-unused -Wsign-compare -g3 -O0 -fvisibility=hidden + +C_DEFINES = + diff --git a/build/src/CMakeFiles/rtl_test.dir/link.txt b/build/src/CMakeFiles/rtl_test.dir/link.txt new file mode 100644 index 0000000..c3afd07 --- /dev/null +++ b/build/src/CMakeFiles/rtl_test.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/cc -O3 -DNDEBUG CMakeFiles/rtl_test.dir/rtl_test.c.o -o rtl_test -rdynamic librtlsdr.so.0.0.0 -lusb-1.0 -lpthread -lm -lrt -Wl,-rpath,/home/rvb/git/rtl_433/build/src: diff --git a/build/src/CMakeFiles/rtl_test.dir/progress.make b/build/src/CMakeFiles/rtl_test.dir/progress.make new file mode 100644 index 0000000..68e0bc5 --- /dev/null +++ b/build/src/CMakeFiles/rtl_test.dir/progress.make @@ -0,0 +1,2 @@ +CMAKE_PROGRESS_1 = 7 + diff --git a/build/src/CMakeFiles/rtl_test.dir/rtl_test.c.o b/build/src/CMakeFiles/rtl_test.dir/rtl_test.c.o new file mode 100644 index 0000000..cd1506d Binary files /dev/null and b/build/src/CMakeFiles/rtl_test.dir/rtl_test.c.o differ diff --git a/build/src/CMakeFiles/rtlsdr_shared.dir/C.includecache b/build/src/CMakeFiles/rtlsdr_shared.dir/C.includecache new file mode 100644 index 0000000..4a128a8 --- /dev/null +++ b/build/src/CMakeFiles/rtlsdr_shared.dir/C.includecache @@ -0,0 +1,132 @@ +#IncludeRegexLine: ^[ ]*#[ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +../include/reg_field.h +stdint.h +- +stdarg.h +- + +../include/rtl-sdr.h +stdint.h +- +rtl-sdr_export.h +- + +../include/rtl-sdr_export.h + +../include/rtlsdr_i2c.h + +../include/tuner_e4k.h + +../include/tuner_fc0012.h + +../include/tuner_fc0013.h + +../include/tuner_fc2580.h + +../include/tuner_r820t.h + +/home/rvb/git/rtl_433/src/librtlsdr.c +errno.h +- +signal.h +- +string.h +- +stdio.h +- +stdlib.h +- +unistd.h +- +libusb.h +- +rtl-sdr.h +/home/rvb/git/rtl_433/src/rtl-sdr.h +tuner_e4k.h +/home/rvb/git/rtl_433/src/tuner_e4k.h +tuner_fc0012.h +/home/rvb/git/rtl_433/src/tuner_fc0012.h +tuner_fc0013.h +/home/rvb/git/rtl_433/src/tuner_fc0013.h +tuner_fc2580.h +/home/rvb/git/rtl_433/src/tuner_fc2580.h +tuner_r820t.h +/home/rvb/git/rtl_433/src/tuner_r820t.h + +/home/rvb/git/rtl_433/src/tuner_e4k.c +limits.h +- +stdint.h +- +errno.h +- +string.h +- +stdio.h +- +reg_field.h +- +tuner_e4k.h +- + +/home/rvb/git/rtl_433/src/tuner_fc0012.c +stdint.h +- +stdio.h +- +rtlsdr_i2c.h +/home/rvb/git/rtl_433/src/rtlsdr_i2c.h +tuner_fc0012.h +/home/rvb/git/rtl_433/src/tuner_fc0012.h + +/home/rvb/git/rtl_433/src/tuner_fc0013.c +stdint.h +- +stdio.h +- +rtlsdr_i2c.h +/home/rvb/git/rtl_433/src/rtlsdr_i2c.h +tuner_fc0013.h +/home/rvb/git/rtl_433/src/tuner_fc0013.h + +/home/rvb/git/rtl_433/src/tuner_fc2580.c +stdint.h +- +rtlsdr_i2c.h +/home/rvb/git/rtl_433/src/rtlsdr_i2c.h +tuner_fc2580.h +/home/rvb/git/rtl_433/src/tuner_fc2580.h + +/home/rvb/git/rtl_433/src/tuner_r820t.c +stdint.h +- +stdio.h +- +rtlsdr_i2c.h +/home/rvb/git/rtl_433/src/rtlsdr_i2c.h +tuner_r820t.h +/home/rvb/git/rtl_433/src/tuner_r820t.h + +/usr/include/libusb-1.0/libusb.h +stdint.h +- +sys/types.h +- +sys/time.h +- +time.h +- +limits.h +- +windows.h +- +winsock.h +- + diff --git a/build/src/CMakeFiles/rtlsdr_shared.dir/DependInfo.cmake b/build/src/CMakeFiles/rtlsdr_shared.dir/DependInfo.cmake new file mode 100644 index 0000000..624ab32 --- /dev/null +++ b/build/src/CMakeFiles/rtlsdr_shared.dir/DependInfo.cmake @@ -0,0 +1,34 @@ +# The set of languages for which implicit dependencies are needed: +SET(CMAKE_DEPENDS_LANGUAGES + "C" + ) +# The set of files for implicit dependencies of each language: +SET(CMAKE_DEPENDS_CHECK_C + "/home/rvb/git/rtl_433/src/librtlsdr.c" "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o" + "/home/rvb/git/rtl_433/src/tuner_e4k.c" "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o" + "/home/rvb/git/rtl_433/src/tuner_fc0012.c" "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o" + "/home/rvb/git/rtl_433/src/tuner_fc0013.c" "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o" + "/home/rvb/git/rtl_433/src/tuner_fc2580.c" "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o" + "/home/rvb/git/rtl_433/src/tuner_r820t.c" "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o" + ) +SET(CMAKE_C_COMPILER_ID "GNU") + +# Pairs of files generated by the same build rule. +SET(CMAKE_MULTIPLE_OUTPUT_PAIRS + "/home/rvb/git/rtl_433/build/src/librtlsdr.so" "/home/rvb/git/rtl_433/build/src/librtlsdr.so.0.0.0" + "/home/rvb/git/rtl_433/build/src/librtlsdr.so.0" "/home/rvb/git/rtl_433/build/src/librtlsdr.so.0.0.0" + ) + + +# Targets to which this target links. +SET(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# The include file search paths: +SET(CMAKE_C_TARGET_INCLUDE_PATH + "../include" + "/usr/include/libusb-1.0" + ) +SET(CMAKE_CXX_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_Fortran_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_ASM_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) diff --git a/build/src/CMakeFiles/rtlsdr_shared.dir/build.make b/build/src/CMakeFiles/rtlsdr_shared.dir/build.make new file mode 100644 index 0000000..c44c058 --- /dev/null +++ b/build/src/CMakeFiles/rtlsdr_shared.dir/build.make @@ -0,0 +1,238 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/rvb/git/rtl_433 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/rvb/git/rtl_433/build + +# Include any dependencies generated for this target. +include src/CMakeFiles/rtlsdr_shared.dir/depend.make + +# Include the progress variables for this target. +include src/CMakeFiles/rtlsdr_shared.dir/progress.make + +# Include the compile flags for this target's objects. +include src/CMakeFiles/rtlsdr_shared.dir/flags.make + +src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o: src/CMakeFiles/rtlsdr_shared.dir/flags.make +src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o: ../src/librtlsdr.c + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles $(CMAKE_PROGRESS_1) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building C object src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o -c /home/rvb/git/rtl_433/src/librtlsdr.c + +src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.i" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -E /home/rvb/git/rtl_433/src/librtlsdr.c > CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.i + +src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.s" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -S /home/rvb/git/rtl_433/src/librtlsdr.c -o CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.s + +src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o.requires: +.PHONY : src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o.requires + +src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o.provides: src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o.requires + $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o.provides.build +.PHONY : src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o.provides + +src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o.provides.build: src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o + +src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o: src/CMakeFiles/rtlsdr_shared.dir/flags.make +src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o: ../src/tuner_e4k.c + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles $(CMAKE_PROGRESS_2) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building C object src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o -c /home/rvb/git/rtl_433/src/tuner_e4k.c + +src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.i" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -E /home/rvb/git/rtl_433/src/tuner_e4k.c > CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.i + +src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.s" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -S /home/rvb/git/rtl_433/src/tuner_e4k.c -o CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.s + +src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o.requires: +.PHONY : src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o.requires + +src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o.provides: src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o.requires + $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o.provides.build +.PHONY : src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o.provides + +src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o.provides.build: src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o + +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o: src/CMakeFiles/rtlsdr_shared.dir/flags.make +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o: ../src/tuner_fc0012.c + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles $(CMAKE_PROGRESS_3) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building C object src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o -c /home/rvb/git/rtl_433/src/tuner_fc0012.c + +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.i" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -E /home/rvb/git/rtl_433/src/tuner_fc0012.c > CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.i + +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.s" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -S /home/rvb/git/rtl_433/src/tuner_fc0012.c -o CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.s + +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o.requires: +.PHONY : src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o.requires + +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o.provides: src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o.requires + $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o.provides.build +.PHONY : src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o.provides + +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o.provides.build: src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o + +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o: src/CMakeFiles/rtlsdr_shared.dir/flags.make +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o: ../src/tuner_fc0013.c + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles $(CMAKE_PROGRESS_4) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building C object src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o -c /home/rvb/git/rtl_433/src/tuner_fc0013.c + +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.i" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -E /home/rvb/git/rtl_433/src/tuner_fc0013.c > CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.i + +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.s" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -S /home/rvb/git/rtl_433/src/tuner_fc0013.c -o CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.s + +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o.requires: +.PHONY : src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o.requires + +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o.provides: src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o.requires + $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o.provides.build +.PHONY : src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o.provides + +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o.provides.build: src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o + +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o: src/CMakeFiles/rtlsdr_shared.dir/flags.make +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o: ../src/tuner_fc2580.c + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles $(CMAKE_PROGRESS_5) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building C object src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o -c /home/rvb/git/rtl_433/src/tuner_fc2580.c + +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.i" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -E /home/rvb/git/rtl_433/src/tuner_fc2580.c > CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.i + +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.s" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -S /home/rvb/git/rtl_433/src/tuner_fc2580.c -o CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.s + +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o.requires: +.PHONY : src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o.requires + +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o.provides: src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o.requires + $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o.provides.build +.PHONY : src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o.provides + +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o.provides.build: src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o + +src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o: src/CMakeFiles/rtlsdr_shared.dir/flags.make +src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o: ../src/tuner_r820t.c + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles $(CMAKE_PROGRESS_6) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building C object src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o -c /home/rvb/git/rtl_433/src/tuner_r820t.c + +src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.i" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -E /home/rvb/git/rtl_433/src/tuner_r820t.c > CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.i + +src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.s" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -S /home/rvb/git/rtl_433/src/tuner_r820t.c -o CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.s + +src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o.requires: +.PHONY : src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o.requires + +src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o.provides: src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o.requires + $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o.provides.build +.PHONY : src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o.provides + +src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o.provides.build: src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o + +# Object files for target rtlsdr_shared +rtlsdr_shared_OBJECTS = \ +"CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o" \ +"CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o" \ +"CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o" \ +"CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o" \ +"CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o" \ +"CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o" + +# External object files for target rtlsdr_shared +rtlsdr_shared_EXTERNAL_OBJECTS = + +src/librtlsdr.so.0.0.0: src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o +src/librtlsdr.so.0.0.0: src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o +src/librtlsdr.so.0.0.0: src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o +src/librtlsdr.so.0.0.0: src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o +src/librtlsdr.so.0.0.0: src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o +src/librtlsdr.so.0.0.0: src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o +src/librtlsdr.so.0.0.0: src/CMakeFiles/rtlsdr_shared.dir/build.make +src/librtlsdr.so.0.0.0: /usr/lib/x86_64-linux-gnu/libusb-1.0.so +src/librtlsdr.so.0.0.0: src/CMakeFiles/rtlsdr_shared.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking C shared library librtlsdr.so" + cd /home/rvb/git/rtl_433/build/src && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/rtlsdr_shared.dir/link.txt --verbose=$(VERBOSE) + cd /home/rvb/git/rtl_433/build/src && $(CMAKE_COMMAND) -E cmake_symlink_library librtlsdr.so.0.0.0 librtlsdr.so.0 librtlsdr.so + +src/librtlsdr.so.0: src/librtlsdr.so.0.0.0 + +src/librtlsdr.so: src/librtlsdr.so.0.0.0 + +# Rule to build all files generated by this target. +src/CMakeFiles/rtlsdr_shared.dir/build: src/librtlsdr.so +.PHONY : src/CMakeFiles/rtlsdr_shared.dir/build + +src/CMakeFiles/rtlsdr_shared.dir/requires: src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o.requires +src/CMakeFiles/rtlsdr_shared.dir/requires: src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o.requires +src/CMakeFiles/rtlsdr_shared.dir/requires: src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o.requires +src/CMakeFiles/rtlsdr_shared.dir/requires: src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o.requires +src/CMakeFiles/rtlsdr_shared.dir/requires: src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o.requires +src/CMakeFiles/rtlsdr_shared.dir/requires: src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o.requires +.PHONY : src/CMakeFiles/rtlsdr_shared.dir/requires + +src/CMakeFiles/rtlsdr_shared.dir/clean: + cd /home/rvb/git/rtl_433/build/src && $(CMAKE_COMMAND) -P CMakeFiles/rtlsdr_shared.dir/cmake_clean.cmake +.PHONY : src/CMakeFiles/rtlsdr_shared.dir/clean + +src/CMakeFiles/rtlsdr_shared.dir/depend: + cd /home/rvb/git/rtl_433/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/rvb/git/rtl_433 /home/rvb/git/rtl_433/src /home/rvb/git/rtl_433/build /home/rvb/git/rtl_433/build/src /home/rvb/git/rtl_433/build/src/CMakeFiles/rtlsdr_shared.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : src/CMakeFiles/rtlsdr_shared.dir/depend + diff --git a/build/src/CMakeFiles/rtlsdr_shared.dir/cmake_clean.cmake b/build/src/CMakeFiles/rtlsdr_shared.dir/cmake_clean.cmake new file mode 100644 index 0000000..8fa29ee --- /dev/null +++ b/build/src/CMakeFiles/rtlsdr_shared.dir/cmake_clean.cmake @@ -0,0 +1,17 @@ +FILE(REMOVE_RECURSE + "CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o" + "CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o" + "CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o" + "CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o" + "CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o" + "CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o" + "librtlsdr.pdb" + "librtlsdr.so" + "librtlsdr.so.0.0.0" + "librtlsdr.so.0" +) + +# Per-language clean rules from dependency scanning. +FOREACH(lang C) + INCLUDE(CMakeFiles/rtlsdr_shared.dir/cmake_clean_${lang}.cmake OPTIONAL) +ENDFOREACH(lang) diff --git a/build/src/CMakeFiles/rtlsdr_shared.dir/depend.internal b/build/src/CMakeFiles/rtlsdr_shared.dir/depend.internal new file mode 100644 index 0000000..bb892a5 --- /dev/null +++ b/build/src/CMakeFiles/rtlsdr_shared.dir/depend.internal @@ -0,0 +1,33 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o + ../include/rtl-sdr.h + ../include/rtl-sdr_export.h + ../include/tuner_e4k.h + ../include/tuner_fc0012.h + ../include/tuner_fc0013.h + ../include/tuner_fc2580.h + ../include/tuner_r820t.h + /home/rvb/git/rtl_433/src/librtlsdr.c + /usr/include/libusb-1.0/libusb.h +src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o + ../include/reg_field.h + ../include/tuner_e4k.h + /home/rvb/git/rtl_433/src/tuner_e4k.c +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o + ../include/rtlsdr_i2c.h + ../include/tuner_fc0012.h + /home/rvb/git/rtl_433/src/tuner_fc0012.c +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o + ../include/rtlsdr_i2c.h + ../include/tuner_fc0013.h + /home/rvb/git/rtl_433/src/tuner_fc0013.c +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o + ../include/rtlsdr_i2c.h + ../include/tuner_fc2580.h + /home/rvb/git/rtl_433/src/tuner_fc2580.c +src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o + ../include/rtlsdr_i2c.h + ../include/tuner_r820t.h + /home/rvb/git/rtl_433/src/tuner_r820t.c diff --git a/build/src/CMakeFiles/rtlsdr_shared.dir/depend.make b/build/src/CMakeFiles/rtlsdr_shared.dir/depend.make new file mode 100644 index 0000000..da58f07 --- /dev/null +++ b/build/src/CMakeFiles/rtlsdr_shared.dir/depend.make @@ -0,0 +1,33 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o: ../include/rtl-sdr.h +src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o: ../include/rtl-sdr_export.h +src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o: ../include/tuner_e4k.h +src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o: ../include/tuner_fc0012.h +src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o: ../include/tuner_fc0013.h +src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o: ../include/tuner_fc2580.h +src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o: ../include/tuner_r820t.h +src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o: ../src/librtlsdr.c +src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o: /usr/include/libusb-1.0/libusb.h + +src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o: ../include/reg_field.h +src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o: ../include/tuner_e4k.h +src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o: ../src/tuner_e4k.c + +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o: ../include/rtlsdr_i2c.h +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o: ../include/tuner_fc0012.h +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o: ../src/tuner_fc0012.c + +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o: ../include/rtlsdr_i2c.h +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o: ../include/tuner_fc0013.h +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o: ../src/tuner_fc0013.c + +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o: ../include/rtlsdr_i2c.h +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o: ../include/tuner_fc2580.h +src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o: ../src/tuner_fc2580.c + +src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o: ../include/rtlsdr_i2c.h +src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o: ../include/tuner_r820t.h +src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o: ../src/tuner_r820t.c + diff --git a/build/src/CMakeFiles/rtlsdr_shared.dir/flags.make b/build/src/CMakeFiles/rtlsdr_shared.dir/flags.make new file mode 100644 index 0000000..4d1cb95 --- /dev/null +++ b/build/src/CMakeFiles/rtlsdr_shared.dir/flags.make @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +# compile C with /usr/bin/cc +C_FLAGS = -O3 -DNDEBUG -fPIC -I/home/rvb/git/rtl_433/include -I/usr/include/libusb-1.0 -Wall -Wextra -Wno-unused -Wsign-compare -g3 -O0 -fvisibility=hidden + +C_DEFINES = -Drtlsdr_EXPORTS + diff --git a/build/src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o b/build/src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o new file mode 100644 index 0000000..20e73ff Binary files /dev/null and b/build/src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o differ diff --git a/build/src/CMakeFiles/rtlsdr_shared.dir/link.txt b/build/src/CMakeFiles/rtlsdr_shared.dir/link.txt new file mode 100644 index 0000000..e4bd885 --- /dev/null +++ b/build/src/CMakeFiles/rtlsdr_shared.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/cc -fPIC -O3 -DNDEBUG -shared -Wl,-soname,librtlsdr.so.0 -o librtlsdr.so.0.0.0 CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o -lusb-1.0 diff --git a/build/src/CMakeFiles/rtlsdr_shared.dir/progress.make b/build/src/CMakeFiles/rtlsdr_shared.dir/progress.make new file mode 100644 index 0000000..8cdb8c1 --- /dev/null +++ b/build/src/CMakeFiles/rtlsdr_shared.dir/progress.make @@ -0,0 +1,7 @@ +CMAKE_PROGRESS_1 = 8 +CMAKE_PROGRESS_2 = 9 +CMAKE_PROGRESS_3 = 10 +CMAKE_PROGRESS_4 = 11 +CMAKE_PROGRESS_5 = 12 +CMAKE_PROGRESS_6 = 13 + diff --git a/build/src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o b/build/src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o new file mode 100644 index 0000000..7e3e9d2 Binary files /dev/null and b/build/src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o differ diff --git a/build/src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o b/build/src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o new file mode 100644 index 0000000..57a404a Binary files /dev/null and b/build/src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o differ diff --git a/build/src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o b/build/src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o new file mode 100644 index 0000000..767056f Binary files /dev/null and b/build/src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o differ diff --git a/build/src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o b/build/src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o new file mode 100644 index 0000000..7995dce Binary files /dev/null and b/build/src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o differ diff --git a/build/src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o b/build/src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o new file mode 100644 index 0000000..12cc52d Binary files /dev/null and b/build/src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o differ diff --git a/build/src/CMakeFiles/rtlsdr_static.dir/C.includecache b/build/src/CMakeFiles/rtlsdr_static.dir/C.includecache new file mode 100644 index 0000000..4a128a8 --- /dev/null +++ b/build/src/CMakeFiles/rtlsdr_static.dir/C.includecache @@ -0,0 +1,132 @@ +#IncludeRegexLine: ^[ ]*#[ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +../include/reg_field.h +stdint.h +- +stdarg.h +- + +../include/rtl-sdr.h +stdint.h +- +rtl-sdr_export.h +- + +../include/rtl-sdr_export.h + +../include/rtlsdr_i2c.h + +../include/tuner_e4k.h + +../include/tuner_fc0012.h + +../include/tuner_fc0013.h + +../include/tuner_fc2580.h + +../include/tuner_r820t.h + +/home/rvb/git/rtl_433/src/librtlsdr.c +errno.h +- +signal.h +- +string.h +- +stdio.h +- +stdlib.h +- +unistd.h +- +libusb.h +- +rtl-sdr.h +/home/rvb/git/rtl_433/src/rtl-sdr.h +tuner_e4k.h +/home/rvb/git/rtl_433/src/tuner_e4k.h +tuner_fc0012.h +/home/rvb/git/rtl_433/src/tuner_fc0012.h +tuner_fc0013.h +/home/rvb/git/rtl_433/src/tuner_fc0013.h +tuner_fc2580.h +/home/rvb/git/rtl_433/src/tuner_fc2580.h +tuner_r820t.h +/home/rvb/git/rtl_433/src/tuner_r820t.h + +/home/rvb/git/rtl_433/src/tuner_e4k.c +limits.h +- +stdint.h +- +errno.h +- +string.h +- +stdio.h +- +reg_field.h +- +tuner_e4k.h +- + +/home/rvb/git/rtl_433/src/tuner_fc0012.c +stdint.h +- +stdio.h +- +rtlsdr_i2c.h +/home/rvb/git/rtl_433/src/rtlsdr_i2c.h +tuner_fc0012.h +/home/rvb/git/rtl_433/src/tuner_fc0012.h + +/home/rvb/git/rtl_433/src/tuner_fc0013.c +stdint.h +- +stdio.h +- +rtlsdr_i2c.h +/home/rvb/git/rtl_433/src/rtlsdr_i2c.h +tuner_fc0013.h +/home/rvb/git/rtl_433/src/tuner_fc0013.h + +/home/rvb/git/rtl_433/src/tuner_fc2580.c +stdint.h +- +rtlsdr_i2c.h +/home/rvb/git/rtl_433/src/rtlsdr_i2c.h +tuner_fc2580.h +/home/rvb/git/rtl_433/src/tuner_fc2580.h + +/home/rvb/git/rtl_433/src/tuner_r820t.c +stdint.h +- +stdio.h +- +rtlsdr_i2c.h +/home/rvb/git/rtl_433/src/rtlsdr_i2c.h +tuner_r820t.h +/home/rvb/git/rtl_433/src/tuner_r820t.h + +/usr/include/libusb-1.0/libusb.h +stdint.h +- +sys/types.h +- +sys/time.h +- +time.h +- +limits.h +- +windows.h +- +winsock.h +- + diff --git a/build/src/CMakeFiles/rtlsdr_static.dir/DependInfo.cmake b/build/src/CMakeFiles/rtlsdr_static.dir/DependInfo.cmake new file mode 100644 index 0000000..d6706a3 --- /dev/null +++ b/build/src/CMakeFiles/rtlsdr_static.dir/DependInfo.cmake @@ -0,0 +1,32 @@ +# The set of languages for which implicit dependencies are needed: +SET(CMAKE_DEPENDS_LANGUAGES + "C" + ) +# The set of files for implicit dependencies of each language: +SET(CMAKE_DEPENDS_CHECK_C + "/home/rvb/git/rtl_433/src/librtlsdr.c" "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o" + "/home/rvb/git/rtl_433/src/tuner_e4k.c" "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o" + "/home/rvb/git/rtl_433/src/tuner_fc0012.c" "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o" + "/home/rvb/git/rtl_433/src/tuner_fc0013.c" "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o" + "/home/rvb/git/rtl_433/src/tuner_fc2580.c" "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o" + "/home/rvb/git/rtl_433/src/tuner_r820t.c" "/home/rvb/git/rtl_433/build/src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o" + ) +SET(CMAKE_C_COMPILER_ID "GNU") + +# Preprocessor definitions for this target. +SET(CMAKE_TARGET_DEFINITIONS + "rtlsdr_STATIC" + ) + +# Targets to which this target links. +SET(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# The include file search paths: +SET(CMAKE_C_TARGET_INCLUDE_PATH + "../include" + "/usr/include/libusb-1.0" + ) +SET(CMAKE_CXX_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_Fortran_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_ASM_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) diff --git a/build/src/CMakeFiles/rtlsdr_static.dir/build.make b/build/src/CMakeFiles/rtlsdr_static.dir/build.make new file mode 100644 index 0000000..cf34727 --- /dev/null +++ b/build/src/CMakeFiles/rtlsdr_static.dir/build.make @@ -0,0 +1,233 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/rvb/git/rtl_433 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/rvb/git/rtl_433/build + +# Include any dependencies generated for this target. +include src/CMakeFiles/rtlsdr_static.dir/depend.make + +# Include the progress variables for this target. +include src/CMakeFiles/rtlsdr_static.dir/progress.make + +# Include the compile flags for this target's objects. +include src/CMakeFiles/rtlsdr_static.dir/flags.make + +src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o: src/CMakeFiles/rtlsdr_static.dir/flags.make +src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o: ../src/librtlsdr.c + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles $(CMAKE_PROGRESS_1) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building C object src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o -c /home/rvb/git/rtl_433/src/librtlsdr.c + +src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/rtlsdr_static.dir/librtlsdr.c.i" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -E /home/rvb/git/rtl_433/src/librtlsdr.c > CMakeFiles/rtlsdr_static.dir/librtlsdr.c.i + +src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/rtlsdr_static.dir/librtlsdr.c.s" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -S /home/rvb/git/rtl_433/src/librtlsdr.c -o CMakeFiles/rtlsdr_static.dir/librtlsdr.c.s + +src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o.requires: +.PHONY : src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o.requires + +src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o.provides: src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o.requires + $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o.provides.build +.PHONY : src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o.provides + +src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o.provides.build: src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o + +src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o: src/CMakeFiles/rtlsdr_static.dir/flags.make +src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o: ../src/tuner_e4k.c + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles $(CMAKE_PROGRESS_2) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building C object src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o -c /home/rvb/git/rtl_433/src/tuner_e4k.c + +src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.i" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -E /home/rvb/git/rtl_433/src/tuner_e4k.c > CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.i + +src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.s" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -S /home/rvb/git/rtl_433/src/tuner_e4k.c -o CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.s + +src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o.requires: +.PHONY : src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o.requires + +src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o.provides: src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o.requires + $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o.provides.build +.PHONY : src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o.provides + +src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o.provides.build: src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o + +src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o: src/CMakeFiles/rtlsdr_static.dir/flags.make +src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o: ../src/tuner_fc0012.c + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles $(CMAKE_PROGRESS_3) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building C object src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o -c /home/rvb/git/rtl_433/src/tuner_fc0012.c + +src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.i" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -E /home/rvb/git/rtl_433/src/tuner_fc0012.c > CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.i + +src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.s" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -S /home/rvb/git/rtl_433/src/tuner_fc0012.c -o CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.s + +src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o.requires: +.PHONY : src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o.requires + +src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o.provides: src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o.requires + $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o.provides.build +.PHONY : src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o.provides + +src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o.provides.build: src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o + +src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o: src/CMakeFiles/rtlsdr_static.dir/flags.make +src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o: ../src/tuner_fc0013.c + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles $(CMAKE_PROGRESS_4) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building C object src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o -c /home/rvb/git/rtl_433/src/tuner_fc0013.c + +src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.i" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -E /home/rvb/git/rtl_433/src/tuner_fc0013.c > CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.i + +src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.s" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -S /home/rvb/git/rtl_433/src/tuner_fc0013.c -o CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.s + +src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o.requires: +.PHONY : src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o.requires + +src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o.provides: src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o.requires + $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o.provides.build +.PHONY : src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o.provides + +src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o.provides.build: src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o + +src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o: src/CMakeFiles/rtlsdr_static.dir/flags.make +src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o: ../src/tuner_fc2580.c + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles $(CMAKE_PROGRESS_5) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building C object src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o -c /home/rvb/git/rtl_433/src/tuner_fc2580.c + +src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.i" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -E /home/rvb/git/rtl_433/src/tuner_fc2580.c > CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.i + +src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.s" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -S /home/rvb/git/rtl_433/src/tuner_fc2580.c -o CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.s + +src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o.requires: +.PHONY : src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o.requires + +src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o.provides: src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o.requires + $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o.provides.build +.PHONY : src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o.provides + +src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o.provides.build: src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o + +src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o: src/CMakeFiles/rtlsdr_static.dir/flags.make +src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o: ../src/tuner_r820t.c + $(CMAKE_COMMAND) -E cmake_progress_report /home/rvb/git/rtl_433/build/CMakeFiles $(CMAKE_PROGRESS_6) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building C object src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o -c /home/rvb/git/rtl_433/src/tuner_r820t.c + +src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.i" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -E /home/rvb/git/rtl_433/src/tuner_r820t.c > CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.i + +src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.s" + cd /home/rvb/git/rtl_433/build/src && /usr/bin/cc $(C_DEFINES) $(C_FLAGS) -S /home/rvb/git/rtl_433/src/tuner_r820t.c -o CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.s + +src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o.requires: +.PHONY : src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o.requires + +src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o.provides: src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o.requires + $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o.provides.build +.PHONY : src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o.provides + +src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o.provides.build: src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o + +# Object files for target rtlsdr_static +rtlsdr_static_OBJECTS = \ +"CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o" \ +"CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o" \ +"CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o" \ +"CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o" \ +"CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o" \ +"CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o" + +# External object files for target rtlsdr_static +rtlsdr_static_EXTERNAL_OBJECTS = + +src/librtlsdr.a: src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o +src/librtlsdr.a: src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o +src/librtlsdr.a: src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o +src/librtlsdr.a: src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o +src/librtlsdr.a: src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o +src/librtlsdr.a: src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o +src/librtlsdr.a: src/CMakeFiles/rtlsdr_static.dir/build.make +src/librtlsdr.a: src/CMakeFiles/rtlsdr_static.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking C static library librtlsdr.a" + cd /home/rvb/git/rtl_433/build/src && $(CMAKE_COMMAND) -P CMakeFiles/rtlsdr_static.dir/cmake_clean_target.cmake + cd /home/rvb/git/rtl_433/build/src && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/rtlsdr_static.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +src/CMakeFiles/rtlsdr_static.dir/build: src/librtlsdr.a +.PHONY : src/CMakeFiles/rtlsdr_static.dir/build + +src/CMakeFiles/rtlsdr_static.dir/requires: src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o.requires +src/CMakeFiles/rtlsdr_static.dir/requires: src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o.requires +src/CMakeFiles/rtlsdr_static.dir/requires: src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o.requires +src/CMakeFiles/rtlsdr_static.dir/requires: src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o.requires +src/CMakeFiles/rtlsdr_static.dir/requires: src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o.requires +src/CMakeFiles/rtlsdr_static.dir/requires: src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o.requires +.PHONY : src/CMakeFiles/rtlsdr_static.dir/requires + +src/CMakeFiles/rtlsdr_static.dir/clean: + cd /home/rvb/git/rtl_433/build/src && $(CMAKE_COMMAND) -P CMakeFiles/rtlsdr_static.dir/cmake_clean.cmake +.PHONY : src/CMakeFiles/rtlsdr_static.dir/clean + +src/CMakeFiles/rtlsdr_static.dir/depend: + cd /home/rvb/git/rtl_433/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/rvb/git/rtl_433 /home/rvb/git/rtl_433/src /home/rvb/git/rtl_433/build /home/rvb/git/rtl_433/build/src /home/rvb/git/rtl_433/build/src/CMakeFiles/rtlsdr_static.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : src/CMakeFiles/rtlsdr_static.dir/depend + diff --git a/build/src/CMakeFiles/rtlsdr_static.dir/cmake_clean.cmake b/build/src/CMakeFiles/rtlsdr_static.dir/cmake_clean.cmake new file mode 100644 index 0000000..43efcaa --- /dev/null +++ b/build/src/CMakeFiles/rtlsdr_static.dir/cmake_clean.cmake @@ -0,0 +1,15 @@ +FILE(REMOVE_RECURSE + "CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o" + "CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o" + "CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o" + "CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o" + "CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o" + "CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o" + "librtlsdr.pdb" + "librtlsdr.a" +) + +# Per-language clean rules from dependency scanning. +FOREACH(lang C) + INCLUDE(CMakeFiles/rtlsdr_static.dir/cmake_clean_${lang}.cmake OPTIONAL) +ENDFOREACH(lang) diff --git a/build/src/CMakeFiles/rtlsdr_static.dir/cmake_clean_target.cmake b/build/src/CMakeFiles/rtlsdr_static.dir/cmake_clean_target.cmake new file mode 100644 index 0000000..c3440a1 --- /dev/null +++ b/build/src/CMakeFiles/rtlsdr_static.dir/cmake_clean_target.cmake @@ -0,0 +1,3 @@ +FILE(REMOVE_RECURSE + "librtlsdr.a" +) diff --git a/build/src/CMakeFiles/rtlsdr_static.dir/depend.internal b/build/src/CMakeFiles/rtlsdr_static.dir/depend.internal new file mode 100644 index 0000000..af4c78d --- /dev/null +++ b/build/src/CMakeFiles/rtlsdr_static.dir/depend.internal @@ -0,0 +1,33 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o + ../include/rtl-sdr.h + ../include/rtl-sdr_export.h + ../include/tuner_e4k.h + ../include/tuner_fc0012.h + ../include/tuner_fc0013.h + ../include/tuner_fc2580.h + ../include/tuner_r820t.h + /home/rvb/git/rtl_433/src/librtlsdr.c + /usr/include/libusb-1.0/libusb.h +src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o + ../include/reg_field.h + ../include/tuner_e4k.h + /home/rvb/git/rtl_433/src/tuner_e4k.c +src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o + ../include/rtlsdr_i2c.h + ../include/tuner_fc0012.h + /home/rvb/git/rtl_433/src/tuner_fc0012.c +src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o + ../include/rtlsdr_i2c.h + ../include/tuner_fc0013.h + /home/rvb/git/rtl_433/src/tuner_fc0013.c +src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o + ../include/rtlsdr_i2c.h + ../include/tuner_fc2580.h + /home/rvb/git/rtl_433/src/tuner_fc2580.c +src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o + ../include/rtlsdr_i2c.h + ../include/tuner_r820t.h + /home/rvb/git/rtl_433/src/tuner_r820t.c diff --git a/build/src/CMakeFiles/rtlsdr_static.dir/depend.make b/build/src/CMakeFiles/rtlsdr_static.dir/depend.make new file mode 100644 index 0000000..b14d79f --- /dev/null +++ b/build/src/CMakeFiles/rtlsdr_static.dir/depend.make @@ -0,0 +1,33 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o: ../include/rtl-sdr.h +src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o: ../include/rtl-sdr_export.h +src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o: ../include/tuner_e4k.h +src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o: ../include/tuner_fc0012.h +src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o: ../include/tuner_fc0013.h +src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o: ../include/tuner_fc2580.h +src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o: ../include/tuner_r820t.h +src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o: ../src/librtlsdr.c +src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o: /usr/include/libusb-1.0/libusb.h + +src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o: ../include/reg_field.h +src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o: ../include/tuner_e4k.h +src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o: ../src/tuner_e4k.c + +src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o: ../include/rtlsdr_i2c.h +src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o: ../include/tuner_fc0012.h +src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o: ../src/tuner_fc0012.c + +src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o: ../include/rtlsdr_i2c.h +src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o: ../include/tuner_fc0013.h +src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o: ../src/tuner_fc0013.c + +src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o: ../include/rtlsdr_i2c.h +src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o: ../include/tuner_fc2580.h +src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o: ../src/tuner_fc2580.c + +src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o: ../include/rtlsdr_i2c.h +src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o: ../include/tuner_r820t.h +src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o: ../src/tuner_r820t.c + diff --git a/build/src/CMakeFiles/rtlsdr_static.dir/flags.make b/build/src/CMakeFiles/rtlsdr_static.dir/flags.make new file mode 100644 index 0000000..f34305b --- /dev/null +++ b/build/src/CMakeFiles/rtlsdr_static.dir/flags.make @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +# compile C with /usr/bin/cc +C_FLAGS = -O3 -DNDEBUG -I/home/rvb/git/rtl_433/include -I/usr/include/libusb-1.0 -Wall -Wextra -Wno-unused -Wsign-compare -g3 -O0 -fvisibility=hidden + +C_DEFINES = -Drtlsdr_STATIC + diff --git a/build/src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o b/build/src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o new file mode 100644 index 0000000..892aaeb Binary files /dev/null and b/build/src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o differ diff --git a/build/src/CMakeFiles/rtlsdr_static.dir/link.txt b/build/src/CMakeFiles/rtlsdr_static.dir/link.txt new file mode 100644 index 0000000..2ac2ef5 --- /dev/null +++ b/build/src/CMakeFiles/rtlsdr_static.dir/link.txt @@ -0,0 +1,2 @@ +/usr/bin/ar cr librtlsdr.a CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o +/usr/bin/ranlib librtlsdr.a diff --git a/build/src/CMakeFiles/rtlsdr_static.dir/progress.make b/build/src/CMakeFiles/rtlsdr_static.dir/progress.make new file mode 100644 index 0000000..e1ceb99 --- /dev/null +++ b/build/src/CMakeFiles/rtlsdr_static.dir/progress.make @@ -0,0 +1,7 @@ +CMAKE_PROGRESS_1 = 14 +CMAKE_PROGRESS_2 = 15 +CMAKE_PROGRESS_3 = 16 +CMAKE_PROGRESS_4 = 17 +CMAKE_PROGRESS_5 = 18 +CMAKE_PROGRESS_6 = 19 + diff --git a/build/src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o b/build/src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o new file mode 100644 index 0000000..65aa5a2 Binary files /dev/null and b/build/src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o differ diff --git a/build/src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o b/build/src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o new file mode 100644 index 0000000..40f991d Binary files /dev/null and b/build/src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o differ diff --git a/build/src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o b/build/src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o new file mode 100644 index 0000000..166f5e4 Binary files /dev/null and b/build/src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o differ diff --git a/build/src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o b/build/src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o new file mode 100644 index 0000000..e0ac4be Binary files /dev/null and b/build/src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o differ diff --git a/build/src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o b/build/src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o new file mode 100644 index 0000000..9230c14 Binary files /dev/null and b/build/src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o differ diff --git a/build/src/Makefile b/build/src/Makefile new file mode 100644 index 0000000..fb48efd --- /dev/null +++ b/build/src/Makefile @@ -0,0 +1,671 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/rvb/git/rtl_433 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/rvb/git/rtl_433/build + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running interactive CMake command-line interface..." + /usr/bin/cmake -i . +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: install/local +.PHONY : install/local/fast + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: install/strip +.PHONY : install/strip/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components +.PHONY : list_install_components/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# The main all target +all: cmake_check_build_system + cd /home/rvb/git/rtl_433/build && $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles /home/rvb/git/rtl_433/build/src/CMakeFiles/progress.marks + cd /home/rvb/git/rtl_433/build && $(MAKE) -f CMakeFiles/Makefile2 src/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/rvb/git/rtl_433/build/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f CMakeFiles/Makefile2 src/clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /home/rvb/git/rtl_433/build && $(MAKE) -f CMakeFiles/Makefile2 src/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f CMakeFiles/Makefile2 src/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /home/rvb/git/rtl_433/build && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Convenience name for target. +src/CMakeFiles/rtl_433.dir/rule: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f CMakeFiles/Makefile2 src/CMakeFiles/rtl_433.dir/rule +.PHONY : src/CMakeFiles/rtl_433.dir/rule + +# Convenience name for target. +rtl_433: src/CMakeFiles/rtl_433.dir/rule +.PHONY : rtl_433 + +# fast build rule for target. +rtl_433/fast: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_433.dir/build.make src/CMakeFiles/rtl_433.dir/build +.PHONY : rtl_433/fast + +# Convenience name for target. +src/CMakeFiles/rtl_adsb.dir/rule: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f CMakeFiles/Makefile2 src/CMakeFiles/rtl_adsb.dir/rule +.PHONY : src/CMakeFiles/rtl_adsb.dir/rule + +# Convenience name for target. +rtl_adsb: src/CMakeFiles/rtl_adsb.dir/rule +.PHONY : rtl_adsb + +# fast build rule for target. +rtl_adsb/fast: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_adsb.dir/build.make src/CMakeFiles/rtl_adsb.dir/build +.PHONY : rtl_adsb/fast + +# Convenience name for target. +src/CMakeFiles/rtl_eeprom.dir/rule: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f CMakeFiles/Makefile2 src/CMakeFiles/rtl_eeprom.dir/rule +.PHONY : src/CMakeFiles/rtl_eeprom.dir/rule + +# Convenience name for target. +rtl_eeprom: src/CMakeFiles/rtl_eeprom.dir/rule +.PHONY : rtl_eeprom + +# fast build rule for target. +rtl_eeprom/fast: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_eeprom.dir/build.make src/CMakeFiles/rtl_eeprom.dir/build +.PHONY : rtl_eeprom/fast + +# Convenience name for target. +src/CMakeFiles/rtl_fm.dir/rule: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f CMakeFiles/Makefile2 src/CMakeFiles/rtl_fm.dir/rule +.PHONY : src/CMakeFiles/rtl_fm.dir/rule + +# Convenience name for target. +rtl_fm: src/CMakeFiles/rtl_fm.dir/rule +.PHONY : rtl_fm + +# fast build rule for target. +rtl_fm/fast: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_fm.dir/build.make src/CMakeFiles/rtl_fm.dir/build +.PHONY : rtl_fm/fast + +# Convenience name for target. +src/CMakeFiles/rtl_sdr.dir/rule: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f CMakeFiles/Makefile2 src/CMakeFiles/rtl_sdr.dir/rule +.PHONY : src/CMakeFiles/rtl_sdr.dir/rule + +# Convenience name for target. +rtl_sdr: src/CMakeFiles/rtl_sdr.dir/rule +.PHONY : rtl_sdr + +# fast build rule for target. +rtl_sdr/fast: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_sdr.dir/build.make src/CMakeFiles/rtl_sdr.dir/build +.PHONY : rtl_sdr/fast + +# Convenience name for target. +src/CMakeFiles/rtl_tcp.dir/rule: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f CMakeFiles/Makefile2 src/CMakeFiles/rtl_tcp.dir/rule +.PHONY : src/CMakeFiles/rtl_tcp.dir/rule + +# Convenience name for target. +rtl_tcp: src/CMakeFiles/rtl_tcp.dir/rule +.PHONY : rtl_tcp + +# fast build rule for target. +rtl_tcp/fast: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_tcp.dir/build.make src/CMakeFiles/rtl_tcp.dir/build +.PHONY : rtl_tcp/fast + +# Convenience name for target. +src/CMakeFiles/rtl_test.dir/rule: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f CMakeFiles/Makefile2 src/CMakeFiles/rtl_test.dir/rule +.PHONY : src/CMakeFiles/rtl_test.dir/rule + +# Convenience name for target. +rtl_test: src/CMakeFiles/rtl_test.dir/rule +.PHONY : rtl_test + +# fast build rule for target. +rtl_test/fast: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_test.dir/build.make src/CMakeFiles/rtl_test.dir/build +.PHONY : rtl_test/fast + +# Convenience name for target. +src/CMakeFiles/rtlsdr_shared.dir/rule: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f CMakeFiles/Makefile2 src/CMakeFiles/rtlsdr_shared.dir/rule +.PHONY : src/CMakeFiles/rtlsdr_shared.dir/rule + +# Convenience name for target. +rtlsdr_shared: src/CMakeFiles/rtlsdr_shared.dir/rule +.PHONY : rtlsdr_shared + +# fast build rule for target. +rtlsdr_shared/fast: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/build +.PHONY : rtlsdr_shared/fast + +# Convenience name for target. +src/CMakeFiles/rtlsdr_static.dir/rule: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f CMakeFiles/Makefile2 src/CMakeFiles/rtlsdr_static.dir/rule +.PHONY : src/CMakeFiles/rtlsdr_static.dir/rule + +# Convenience name for target. +rtlsdr_static: src/CMakeFiles/rtlsdr_static.dir/rule +.PHONY : rtlsdr_static + +# fast build rule for target. +rtlsdr_static/fast: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/build +.PHONY : rtlsdr_static/fast + +librtlsdr.o: librtlsdr.c.o +.PHONY : librtlsdr.o + +# target to build an object file +librtlsdr.c.o: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.o + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o +.PHONY : librtlsdr.c.o + +librtlsdr.i: librtlsdr.c.i +.PHONY : librtlsdr.i + +# target to preprocess a source file +librtlsdr.c.i: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.i + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.i +.PHONY : librtlsdr.c.i + +librtlsdr.s: librtlsdr.c.s +.PHONY : librtlsdr.s + +# target to generate assembly for a file +librtlsdr.c.s: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/librtlsdr.c.s + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.s +.PHONY : librtlsdr.c.s + +rtl_433.o: rtl_433.c.o +.PHONY : rtl_433.o + +# target to build an object file +rtl_433.c.o: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_433.dir/build.make src/CMakeFiles/rtl_433.dir/rtl_433.c.o +.PHONY : rtl_433.c.o + +rtl_433.i: rtl_433.c.i +.PHONY : rtl_433.i + +# target to preprocess a source file +rtl_433.c.i: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_433.dir/build.make src/CMakeFiles/rtl_433.dir/rtl_433.c.i +.PHONY : rtl_433.c.i + +rtl_433.s: rtl_433.c.s +.PHONY : rtl_433.s + +# target to generate assembly for a file +rtl_433.c.s: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_433.dir/build.make src/CMakeFiles/rtl_433.dir/rtl_433.c.s +.PHONY : rtl_433.c.s + +rtl_adsb.o: rtl_adsb.c.o +.PHONY : rtl_adsb.o + +# target to build an object file +rtl_adsb.c.o: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_adsb.dir/build.make src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o +.PHONY : rtl_adsb.c.o + +rtl_adsb.i: rtl_adsb.c.i +.PHONY : rtl_adsb.i + +# target to preprocess a source file +rtl_adsb.c.i: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_adsb.dir/build.make src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.i +.PHONY : rtl_adsb.c.i + +rtl_adsb.s: rtl_adsb.c.s +.PHONY : rtl_adsb.s + +# target to generate assembly for a file +rtl_adsb.c.s: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_adsb.dir/build.make src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.s +.PHONY : rtl_adsb.c.s + +rtl_eeprom.o: rtl_eeprom.c.o +.PHONY : rtl_eeprom.o + +# target to build an object file +rtl_eeprom.c.o: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_eeprom.dir/build.make src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o +.PHONY : rtl_eeprom.c.o + +rtl_eeprom.i: rtl_eeprom.c.i +.PHONY : rtl_eeprom.i + +# target to preprocess a source file +rtl_eeprom.c.i: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_eeprom.dir/build.make src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.i +.PHONY : rtl_eeprom.c.i + +rtl_eeprom.s: rtl_eeprom.c.s +.PHONY : rtl_eeprom.s + +# target to generate assembly for a file +rtl_eeprom.c.s: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_eeprom.dir/build.make src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.s +.PHONY : rtl_eeprom.c.s + +rtl_fm.o: rtl_fm.c.o +.PHONY : rtl_fm.o + +# target to build an object file +rtl_fm.c.o: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_fm.dir/build.make src/CMakeFiles/rtl_fm.dir/rtl_fm.c.o +.PHONY : rtl_fm.c.o + +rtl_fm.i: rtl_fm.c.i +.PHONY : rtl_fm.i + +# target to preprocess a source file +rtl_fm.c.i: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_fm.dir/build.make src/CMakeFiles/rtl_fm.dir/rtl_fm.c.i +.PHONY : rtl_fm.c.i + +rtl_fm.s: rtl_fm.c.s +.PHONY : rtl_fm.s + +# target to generate assembly for a file +rtl_fm.c.s: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_fm.dir/build.make src/CMakeFiles/rtl_fm.dir/rtl_fm.c.s +.PHONY : rtl_fm.c.s + +rtl_sdr.o: rtl_sdr.c.o +.PHONY : rtl_sdr.o + +# target to build an object file +rtl_sdr.c.o: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_sdr.dir/build.make src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o +.PHONY : rtl_sdr.c.o + +rtl_sdr.i: rtl_sdr.c.i +.PHONY : rtl_sdr.i + +# target to preprocess a source file +rtl_sdr.c.i: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_sdr.dir/build.make src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.i +.PHONY : rtl_sdr.c.i + +rtl_sdr.s: rtl_sdr.c.s +.PHONY : rtl_sdr.s + +# target to generate assembly for a file +rtl_sdr.c.s: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_sdr.dir/build.make src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.s +.PHONY : rtl_sdr.c.s + +rtl_tcp.o: rtl_tcp.c.o +.PHONY : rtl_tcp.o + +# target to build an object file +rtl_tcp.c.o: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_tcp.dir/build.make src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o +.PHONY : rtl_tcp.c.o + +rtl_tcp.i: rtl_tcp.c.i +.PHONY : rtl_tcp.i + +# target to preprocess a source file +rtl_tcp.c.i: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_tcp.dir/build.make src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.i +.PHONY : rtl_tcp.c.i + +rtl_tcp.s: rtl_tcp.c.s +.PHONY : rtl_tcp.s + +# target to generate assembly for a file +rtl_tcp.c.s: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_tcp.dir/build.make src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.s +.PHONY : rtl_tcp.c.s + +rtl_test.o: rtl_test.c.o +.PHONY : rtl_test.o + +# target to build an object file +rtl_test.c.o: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_test.dir/build.make src/CMakeFiles/rtl_test.dir/rtl_test.c.o +.PHONY : rtl_test.c.o + +rtl_test.i: rtl_test.c.i +.PHONY : rtl_test.i + +# target to preprocess a source file +rtl_test.c.i: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_test.dir/build.make src/CMakeFiles/rtl_test.dir/rtl_test.c.i +.PHONY : rtl_test.c.i + +rtl_test.s: rtl_test.c.s +.PHONY : rtl_test.s + +# target to generate assembly for a file +rtl_test.c.s: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtl_test.dir/build.make src/CMakeFiles/rtl_test.dir/rtl_test.c.s +.PHONY : rtl_test.c.s + +tuner_e4k.o: tuner_e4k.c.o +.PHONY : tuner_e4k.o + +# target to build an object file +tuner_e4k.c.o: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.o + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o +.PHONY : tuner_e4k.c.o + +tuner_e4k.i: tuner_e4k.c.i +.PHONY : tuner_e4k.i + +# target to preprocess a source file +tuner_e4k.c.i: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.i + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.i +.PHONY : tuner_e4k.c.i + +tuner_e4k.s: tuner_e4k.c.s +.PHONY : tuner_e4k.s + +# target to generate assembly for a file +tuner_e4k.c.s: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/tuner_e4k.c.s + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.s +.PHONY : tuner_e4k.c.s + +tuner_fc0012.o: tuner_fc0012.c.o +.PHONY : tuner_fc0012.o + +# target to build an object file +tuner_fc0012.c.o: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.o + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o +.PHONY : tuner_fc0012.c.o + +tuner_fc0012.i: tuner_fc0012.c.i +.PHONY : tuner_fc0012.i + +# target to preprocess a source file +tuner_fc0012.c.i: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.i + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.i +.PHONY : tuner_fc0012.c.i + +tuner_fc0012.s: tuner_fc0012.c.s +.PHONY : tuner_fc0012.s + +# target to generate assembly for a file +tuner_fc0012.c.s: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0012.c.s + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.s +.PHONY : tuner_fc0012.c.s + +tuner_fc0013.o: tuner_fc0013.c.o +.PHONY : tuner_fc0013.o + +# target to build an object file +tuner_fc0013.c.o: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.o + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o +.PHONY : tuner_fc0013.c.o + +tuner_fc0013.i: tuner_fc0013.c.i +.PHONY : tuner_fc0013.i + +# target to preprocess a source file +tuner_fc0013.c.i: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.i + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.i +.PHONY : tuner_fc0013.c.i + +tuner_fc0013.s: tuner_fc0013.c.s +.PHONY : tuner_fc0013.s + +# target to generate assembly for a file +tuner_fc0013.c.s: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/tuner_fc0013.c.s + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.s +.PHONY : tuner_fc0013.c.s + +tuner_fc2580.o: tuner_fc2580.c.o +.PHONY : tuner_fc2580.o + +# target to build an object file +tuner_fc2580.c.o: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.o + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o +.PHONY : tuner_fc2580.c.o + +tuner_fc2580.i: tuner_fc2580.c.i +.PHONY : tuner_fc2580.i + +# target to preprocess a source file +tuner_fc2580.c.i: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.i + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.i +.PHONY : tuner_fc2580.c.i + +tuner_fc2580.s: tuner_fc2580.c.s +.PHONY : tuner_fc2580.s + +# target to generate assembly for a file +tuner_fc2580.c.s: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/tuner_fc2580.c.s + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.s +.PHONY : tuner_fc2580.c.s + +tuner_r820t.o: tuner_r820t.c.o +.PHONY : tuner_r820t.o + +# target to build an object file +tuner_r820t.c.o: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.o + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.o +.PHONY : tuner_r820t.c.o + +tuner_r820t.i: tuner_r820t.c.i +.PHONY : tuner_r820t.i + +# target to preprocess a source file +tuner_r820t.c.i: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.i + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.i +.PHONY : tuner_r820t.c.i + +tuner_r820t.s: tuner_r820t.c.s +.PHONY : tuner_r820t.s + +# target to generate assembly for a file +tuner_r820t.c.s: + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_shared.dir/build.make src/CMakeFiles/rtlsdr_shared.dir/tuner_r820t.c.s + cd /home/rvb/git/rtl_433/build && $(MAKE) -f src/CMakeFiles/rtlsdr_static.dir/build.make src/CMakeFiles/rtlsdr_static.dir/tuner_r820t.c.s +.PHONY : tuner_r820t.c.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... install" + @echo "... install/local" + @echo "... install/strip" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... rtl_433" + @echo "... rtl_adsb" + @echo "... rtl_eeprom" + @echo "... rtl_fm" + @echo "... rtl_sdr" + @echo "... rtl_tcp" + @echo "... rtl_test" + @echo "... rtlsdr_shared" + @echo "... rtlsdr_static" + @echo "... librtlsdr.o" + @echo "... librtlsdr.i" + @echo "... librtlsdr.s" + @echo "... rtl_433.o" + @echo "... rtl_433.i" + @echo "... rtl_433.s" + @echo "... rtl_adsb.o" + @echo "... rtl_adsb.i" + @echo "... rtl_adsb.s" + @echo "... rtl_eeprom.o" + @echo "... rtl_eeprom.i" + @echo "... rtl_eeprom.s" + @echo "... rtl_fm.o" + @echo "... rtl_fm.i" + @echo "... rtl_fm.s" + @echo "... rtl_sdr.o" + @echo "... rtl_sdr.i" + @echo "... rtl_sdr.s" + @echo "... rtl_tcp.o" + @echo "... rtl_tcp.i" + @echo "... rtl_tcp.s" + @echo "... rtl_test.o" + @echo "... rtl_test.i" + @echo "... rtl_test.s" + @echo "... tuner_e4k.o" + @echo "... tuner_e4k.i" + @echo "... tuner_e4k.s" + @echo "... tuner_fc0012.o" + @echo "... tuner_fc0012.i" + @echo "... tuner_fc0012.s" + @echo "... tuner_fc0013.o" + @echo "... tuner_fc0013.i" + @echo "... tuner_fc0013.s" + @echo "... tuner_fc2580.o" + @echo "... tuner_fc2580.i" + @echo "... tuner_fc2580.s" + @echo "... tuner_r820t.o" + @echo "... tuner_r820t.i" + @echo "... tuner_r820t.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /home/rvb/git/rtl_433/build && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/build/src/cmake_install.cmake b/build/src/cmake_install.cmake new file mode 100644 index 0000000..a706116 --- /dev/null +++ b/build/src/cmake_install.cmake @@ -0,0 +1,196 @@ +# Install script for directory: /home/rvb/git/rtl_433/src + +# Set the install prefix +IF(NOT DEFINED CMAKE_INSTALL_PREFIX) + SET(CMAKE_INSTALL_PREFIX "/usr/local") +ENDIF(NOT DEFINED CMAKE_INSTALL_PREFIX) +STRING(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +IF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + IF(BUILD_TYPE) + STRING(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + ELSE(BUILD_TYPE) + SET(CMAKE_INSTALL_CONFIG_NAME "Release") + ENDIF(BUILD_TYPE) + MESSAGE(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +ENDIF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + +# Set the component getting installed. +IF(NOT CMAKE_INSTALL_COMPONENT) + IF(COMPONENT) + MESSAGE(STATUS "Install component: \"${COMPONENT}\"") + SET(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + ELSE(COMPONENT) + SET(CMAKE_INSTALL_COMPONENT) + ENDIF(COMPONENT) +ENDIF(NOT CMAKE_INSTALL_COMPONENT) + +# Install shared libraries without execute permission? +IF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + SET(CMAKE_INSTALL_SO_NO_EXE "1") +ENDIF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + +IF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified") + FOREACH(file + "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/librtlsdr.so.0.0.0" + "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/librtlsdr.so.0" + "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/librtlsdr.so" + ) + IF(EXISTS "${file}" AND + NOT IS_SYMLINK "${file}") + FILE(RPATH_CHECK + FILE "${file}" + RPATH "") + ENDIF() + ENDFOREACH() + FILE(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" TYPE SHARED_LIBRARY FILES + "/home/rvb/git/rtl_433/build/src/librtlsdr.so.0.0.0" + "/home/rvb/git/rtl_433/build/src/librtlsdr.so.0" + "/home/rvb/git/rtl_433/build/src/librtlsdr.so" + ) + FOREACH(file + "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/librtlsdr.so.0.0.0" + "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/librtlsdr.so.0" + "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/librtlsdr.so" + ) + IF(EXISTS "${file}" AND + NOT IS_SYMLINK "${file}") + IF(CMAKE_INSTALL_DO_STRIP) + EXECUTE_PROCESS(COMMAND "/usr/bin/strip" "${file}") + ENDIF(CMAKE_INSTALL_DO_STRIP) + ENDIF() + ENDFOREACH() +ENDIF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified") + +IF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified") + FILE(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" TYPE STATIC_LIBRARY FILES "/home/rvb/git/rtl_433/build/src/librtlsdr.a") +ENDIF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified") + +IF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified") + IF(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_sdr" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_sdr") + FILE(RPATH_CHECK + FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_sdr" + RPATH "") + ENDIF() + FILE(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/bin" TYPE EXECUTABLE FILES "/home/rvb/git/rtl_433/build/src/rtl_sdr") + IF(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_sdr" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_sdr") + FILE(RPATH_REMOVE + FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_sdr") + IF(CMAKE_INSTALL_DO_STRIP) + EXECUTE_PROCESS(COMMAND "/usr/bin/strip" "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_sdr") + ENDIF(CMAKE_INSTALL_DO_STRIP) + ENDIF() +ENDIF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified") + +IF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified") + IF(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_tcp" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_tcp") + FILE(RPATH_CHECK + FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_tcp" + RPATH "") + ENDIF() + FILE(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/bin" TYPE EXECUTABLE FILES "/home/rvb/git/rtl_433/build/src/rtl_tcp") + IF(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_tcp" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_tcp") + FILE(RPATH_REMOVE + FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_tcp") + IF(CMAKE_INSTALL_DO_STRIP) + EXECUTE_PROCESS(COMMAND "/usr/bin/strip" "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_tcp") + ENDIF(CMAKE_INSTALL_DO_STRIP) + ENDIF() +ENDIF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified") + +IF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified") + IF(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_test" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_test") + FILE(RPATH_CHECK + FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_test" + RPATH "") + ENDIF() + FILE(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/bin" TYPE EXECUTABLE FILES "/home/rvb/git/rtl_433/build/src/rtl_test") + IF(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_test" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_test") + FILE(RPATH_REMOVE + FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_test") + IF(CMAKE_INSTALL_DO_STRIP) + EXECUTE_PROCESS(COMMAND "/usr/bin/strip" "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_test") + ENDIF(CMAKE_INSTALL_DO_STRIP) + ENDIF() +ENDIF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified") + +IF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified") + IF(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_fm" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_fm") + FILE(RPATH_CHECK + FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_fm" + RPATH "") + ENDIF() + FILE(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/bin" TYPE EXECUTABLE FILES "/home/rvb/git/rtl_433/build/src/rtl_fm") + IF(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_fm" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_fm") + FILE(RPATH_REMOVE + FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_fm") + IF(CMAKE_INSTALL_DO_STRIP) + EXECUTE_PROCESS(COMMAND "/usr/bin/strip" "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_fm") + ENDIF(CMAKE_INSTALL_DO_STRIP) + ENDIF() +ENDIF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified") + +IF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified") + IF(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_eeprom" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_eeprom") + FILE(RPATH_CHECK + FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_eeprom" + RPATH "") + ENDIF() + FILE(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/bin" TYPE EXECUTABLE FILES "/home/rvb/git/rtl_433/build/src/rtl_eeprom") + IF(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_eeprom" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_eeprom") + FILE(RPATH_REMOVE + FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_eeprom") + IF(CMAKE_INSTALL_DO_STRIP) + EXECUTE_PROCESS(COMMAND "/usr/bin/strip" "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_eeprom") + ENDIF(CMAKE_INSTALL_DO_STRIP) + ENDIF() +ENDIF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified") + +IF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified") + IF(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_adsb" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_adsb") + FILE(RPATH_CHECK + FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_adsb" + RPATH "") + ENDIF() + FILE(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/bin" TYPE EXECUTABLE FILES "/home/rvb/git/rtl_433/build/src/rtl_adsb") + IF(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_adsb" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_adsb") + FILE(RPATH_REMOVE + FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_adsb") + IF(CMAKE_INSTALL_DO_STRIP) + EXECUTE_PROCESS(COMMAND "/usr/bin/strip" "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_adsb") + ENDIF(CMAKE_INSTALL_DO_STRIP) + ENDIF() +ENDIF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified") + +IF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified") + IF(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_433" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_433") + FILE(RPATH_CHECK + FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_433" + RPATH "") + ENDIF() + FILE(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/bin" TYPE EXECUTABLE FILES "/home/rvb/git/rtl_433/build/src/rtl_433") + IF(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_433" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_433") + FILE(RPATH_REMOVE + FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_433") + IF(CMAKE_INSTALL_DO_STRIP) + EXECUTE_PROCESS(COMMAND "/usr/bin/strip" "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/rtl_433") + ENDIF(CMAKE_INSTALL_DO_STRIP) + ENDIF() +ENDIF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified") + diff --git a/build/src/gfile001.data b/build/src/gfile001.data new file mode 100644 index 0000000..719cb8a --- /dev/null +++ b/build/src/gfile001.data @@ -0,0 +1,71 @@ +h~…{|‚…’s{„‡…~uˆ…‚Œƒ|…€i|q‚u|ƒ‚ƒ~†€|…‚|‡|‚}€€q~~{~Žw‚ƒ}‡y}‚||yq…Ž~„„ƒt~|€~Œw{Šˆ|…qzx|Šƒz|v††o‹q„y„|{‰ŒŒ†x…‡yrl}y€ƒ~Žžw~l†zŠ€kyƒ€€u{~‚€s‡s‚‡Ž‚‘Š||l„q{…Šxtzwz€x†|z~ˆo€wtws‰l‹zƒyt‚rˆ~‘}~•|Œ}{mvy……~„ƒr{rƒy{u‡ƒ††yt„z…|ƒqo}~xn„„{|€‰€†z|†|…~€ˆ~|€ƒ~xƒt€‡€ƒ}x‹w†x}~„q‹v†z„z†s€‚~{q…wwpx~ƒy|‰y}†Ž‚}|p‡}||Šƒ|ƒmuŠ‡z…ƒz†{‹‘y|€|ˆŠ{ˆ…Ž‚n…yƒ|yhx{tŒƒ‚ŒŒ†Œ‰tŽ|€z„“w|‚z|‹v~–s‹}x|‹‚„—w’‚|ƒ…yy‚trisxˆwuzƒ‡z“‡z†…xŠr‚‚r{w|nƒ€ƒvp†~~‚‚˜„…‹€t{wˆˆƒ‡„‹{y€ˆy{„v„Ž‰€w|u‚uzy{u‚{yzˆ{€y{{q€ˆ‡ƒ{Š‚†…‡‚†xˆ~ŽŠƒ|‰yo}ƒŽt‰{t}ˆ‡€y{…‡zƒq‹‘€†~s€Šuur€v~~v}i}xsnwˆturˆ€zˆ~{~€pŠx~~|‚‚v{w…€~„|€‚y€{Švƒˆ†€…|r‹z„ˆ}‰q~qwy~q‰€qx{ƒ”‡€…o€y~p†…|}}{y‹x‹y†ˆ|ˆŠ|ˆ}q{|zv~lˆs~t}~|z|{q‚ƒ……ˆ‚ƒ“z”}€|zssƒˆl|ƒ‡†™…ƒ†”}‡ƒu|ƒw‰}|ˆ}zxyƒ™ƒxu}ƒszt„{{ƒ}xxŽz…{€y†z‚‹ˆs|u„ˆz|q‚u}zs|{z•l€y{…y‚|Žz‚||„~„{|ŽqŒ„z|ƒq‡‡€{xx~~ƒŒ‚€˜‡Œn…ˆ“‡vox|ˆ…|“Š‚www~‹|vxx|w{x……‰}†y„{}|z~pruyz…{‚{|…}€w|‡}…rƒx|€pˆlxq{zz€‡ˆ‡……w}~}‹ƒ‚{†tq~„‚€x€}|ˆƒ|‡Ž‹Œ…‚q„t€{Šr‡|v}lx{‰„€Œ…‹ˆ‚†{s~rtyou{„rz€‡”ŒŠƒ~’z‚g“p~„{„~z‚{‘q€‡r†–ƒ€zƒ‹t|€ƒŠn|v}†{z{x‡…†|x~€…ri~{zƒ‰~„ˆ‡ƒ…”€Šƒˆ}y‚|{Šx|{„†‡}ƒ„}{‡Šˆ’{{{Š{„r„„‘…†yw‰‹…yunf€{w€tŠ{†|‘|…{‰‹|’r}€‚‹x|{{kŠrp„x‡„yzŠy{ƒwx…tz}z‹zpŒu~|ƒ‚‡vŠ†zŒŠ‹‘}zts‰||t‡„€Š}„xzv}|}z“„‡†ƒ…|}u‚Žx~~‰…‰€ƒyz}~Ž|†…‹}~†{}sz‹t{ryƒs‡w€uv€zƒƒ‘zzŒxŠ|ƒw„~v€„€y•k‚}w‚ƒ|tŠsx{rnuwmy†„—ƒ†}“ƒ„„€nƒ‡{}yzˆmˆl†ƒ€|ƒŠ~v}…xz‚ƒˆƒ~y|x‚€˜‡~}z‚‚ˆ{…vuuŠvvv„‰zy€Ž|ƒ}tˆ~ˆ„‚yz’€}‚m‡‡‚’€‡†‡{o}‚˜‹}{q€}w†~€~‘‰‚zˆ{}Œy„r}~‡|~x€yz„}~Š|„€‹ˆww‚x|~‚v~{‡zƒ„|…‡€‚…€~ƒxutzt†€~vz~„|wŠy„‡y‰‰€~y‡ƒo‡j†zu}vyƒ}ƒ{y‚qx|t†wt|y}‰„Œ‹…‚‡|~{„mŠx}{|‰˜„~†€u~x{{”~‡Œz‚‡z‹„Ž„ˆy†}u~Œ†w…‚t‹|}Š€‚~x}{…„‰x†„„‚}srwr}sz€€†ˆu“yŠ‰…~s‰€ŒŠux}xvxovsz~ƒ†}‡ƒq”ƒ|Žw‚†€r‹v—€w€s|‡vˆ‚y‡{~sŒg‹uw‚zs†tt‚rz……z‰t~‚“s„{l€ow|€v„x~€‚‰‡w€‰‚ˆˆ~‰„†z~…€‚€Ž‚~„}ƒ{}wu{€z€†}ƒyz}|z‚{‚x{{vz‚yx€tx|ƒˆx~€|‰~vz{z€ƒz{r€}y„}Œ{€ƒ|…s€w…‚t…vz…|‚{ˆt“‡‚p{b…‡t~v}~…y~Št…„uupq‚v„‡q‡z{~–{Œ‹{†€Š€z‡Žƒ|}r…z{€|Ž}Šs‡{€ƒ‰|‰†z”w‚}{zxz{|ƒm„…ˆŒ}‹yyˆ{€ˆ€†„~~‚uƒp{„ˆ{‚Žx{‡vt†{w}ˆx{t€y}uzwƒ‚Šz“„‚ˆn†‘v‚|…|xƒg‚„ƒˆ„|†’Ž}€ˆ|„†y|}tzy}u~€‡j„ks€€}€„{zwx‚~†mƒz††z‡}‚†„y†vŒ‹Šiˆˆ€}„x‡‹yˆ‰z‹|‹„~€}‚‡~v~wt„wvv{s‹€w„‰w“ƒ‘|ˆ€wym”|…yu~{g}}tƒ}w‚…|„y{zƒ‚Žz†€|~zŒ„Š‡}€zŠ”zŽ„‚ƒ€zx{|t|€‚|‚zy‡‚}yq†t€~…}€‡z„{‚ty|z†‡w†{€€{|ƒxy{y„y…‚yƒ{f‰}|v€‚~{u{‹|{‡|„x{u‘‚}x‚€†zzt~€ƒ€Š~‚zso{t{rzˆ~†|„|„‹‚}€€vƒ|ˆxƒy}t‘{‚wz„ˆ„ƒ€ƒy€}{‡v‡wy~~v}|€ƒwƒ~}€x†}|ƒˆŒ}‚„„”x‚~‹‚†€}wt{‚t‹…{wƒ||{ƒ‡}Š‡~{~v‚htyt†{„‚‚z’†„Šƒx…‚‡vu~„}sƒy„v‹z‚„Š“}Š‚€wt†~ƒ†y‹Š|…zƒ‰…‚‰Œ†…ƒr„|}„vot‚{„o‡€€ƒŒ|}~s|x€€zv†m‡‹…ƒ†‘z}xs†ƒ{tƒ‚yw‚„z…{zƒyw†……€Šƒ‚ƒx‡~|ƒ|„}Œq‚z‚~v„{‚„vwˆƒ‰…ƒr„yoƒ}z†qx}~yˆ…p‚‚zyx€|ˆ€…p{r{}ƒ†y{„}…†ƒ‡‰…|ˆ}v|}“{~zw†n}‡‰|€{„‡zx„{‰‚„‡ŽŠƒystzux†kx}€Œ}ztz‚oƒ{|}}uvx‡‘‡‚t}‡{{|{||vx„|~s{p„‚‰~‡q}t{‰y‰~„ˆ€}z‚~t„uŒ{}Š†‹…uu|‚y{w—~u„uvzqŠ‹†u‡}€‚uy€Ž‚|~‹‹kt‡~‡rvˆ|w—‚}wzysy‡r{„|…‚wŠ}}||vˆ}tˆ€~„‚w‚z‚y„ƒ„‡ˆ…€uxy…‰y~ƒz„{n€w|„Šxˆsw…x|ƒ{y‚ƒ~€y‰qx“y‹w€}}†|‹y†‡{~}xx„k‚„t€‚v€x~„u„y‹z{p|†|‰s‚}}…€‹}„‡Œˆxz|ƒ‹u‰{‚|~p|ƒp…‰{‡„‹ˆ‡‹†|‚tm„u}{ƒv~„pj}pyv€u}†Š…†‚…ƒt{ƒ{tu€€ry…y‚Šp{p{~……‰~†xŠ}~„y|~s|yuw‡~}†xyˆ}„Šv€}u‚‡rvt‡uq„„{„t‚v~ƒ|‡„‚€…‚‡z€|v‰„…|y†‰„{v{~zvyˆ‰t…†|€†z‹ˆ}„‡‚~‚€}wz‡‘‡…}„wp~|o„izrtv€€‡~~Œ…‹Š…}†‚ƒ|vwfuv…xwd‹y‹xz‡Šƒƒ‰€…ƒ€{‡p‚ˆs||€ˆr€‰„•t†‹uxzz€s‰yz…|p~sŠ„ˆ~x†ˆwˆwxp~tƒ}y}y€„yw}|ƒ~~‘‚€‘}†x~€ƒƒƒzx‚uŠz|~~Š„†{w|…€q‚‹uww‡Œ‚ƒ|ƒ‚ƒ‚„†‰v|€„†‡~zŽq‚’z|‰‰ƒ†„w‚…s‡‚„‰€†ƒ|€}xr‚|ws€zzˆƒ‰q}yz†…v‚‰‡o}†{‡„‹z„ƒz†ƒ~„xj}‚x}~qsuˆu‰vv‚w~Œ}’qŠv{siq‹{‡‹ƒyr‘u‰~‰†„…€†tw‚u|€wƒhƒn†r{wŒz„z{x†€…{Šxyzqq€t‰~‡~r|‚vŒ‡‰{Œw‡{oŠo~}–€‚’‡w€~ˆ€t†j~v‚}†Š‚{‹Š‚††…n†u‚u|z~w}œ„•‰‚‡……}„‹yƒ„‹{‰w}{xuwzq‡ƒu}o‚yx~~ƒ~r†€‡{€|‚€y~€‰€…‚ƒwx‡††€ƒq†oy}~‰q{~o~{z„ƒ…ƒ‰{x†€Š}z}wzƒrws„~ƒ}„„z†~sk‚m|zqu…‡‹ˆ~wˆ‚€’o—ƒˆŠxmƒxuo‡g†Œ}~…Ž”‹Š}~ƒ†‹‹s€cƒ}ow|‹†Šfq‚‹†|‹…~q~†p|ƒ‚{‡dŽs|y…v„ƒ‚Š‹}ƒnr‡Œyƒfyy€€‚yxwt…‚z~‰…–z€…‹||hjt€~w€uw~pŽƒxŠ€|xlŠy~v‚‚|c„{„w‚‰‰h„t€|€Ž‹vl|hŽƒt€ˆ€irŠŠ}~l†vš›r‰t‡i}}Šjgz|u‰~u‘wv‹r‰‰‹~qozyŽ€‹…‘y†„pf…v‡p‹€†‚‡l}pn{iyˆpˆ“‰˜‘ƒ„ƒ‚…‚yzk~ƒ‚‡„~t‡{y}…{…‡…„u‚…Šm{uu…rvŠkŒƒˆ|{~d}j}|~“€|xwŽm‹wˆ}|ƒ‚•…xm€u‚‡Œ}‡ƒp”ovu…u›r„‚z„‚…ov~}pur‡~no‡Šv{t‚zŠyr{x‚v†ƒszu€zrsvƒŒp{s†‚vŠ„oŽuŒ„{r†„u|xeŽu‚~‹€’z‚zŠpˆ‡Œ|•d†{i„ƒxƒ™v‡q……‚„‚v˜€Ž‹ƒ†}€›m–o|“~ƒ{{zoŒc|wŒxŒ‘~…£|ƒzx}‰…¡o”}{…}ƒzv{~–{x‡x{xr„’ˆz|s‰‹|‚l‰„’€w‹‘q‹‚‹|j‚k„„z‰x‹„…pvz…ŠŠˆŠŒgƒi{‰q‹u|ƒ…~z–|€lo€xr|‰„…z†žvwt|ˆ{uœuˆ„Š‰}‚fp{‡}ƒ‚†‹‘„€zŒ}y€o“¦„yr€‡€ˆj“{„‚j€„xdz|}†ˆ{‹{Š‰uwz‚yƒz–}…r{„‡Ši…„w˜€~{‹y{†}vz}r‚z|}†„n„xs‹~}ro€€†{Šqx~{jr|rx~€rr‚}hzun{zw}wk†„y‡‡r|Œjy„z‚„swƒp‡p‚…}ŽƒƒŠ€†t„zzšv–|tx‹‹vtx†€‰~€Š‚†lx„‚ƒ‡y‡r˜}o…nx}q†—y…ƒ’‚}~‹‹ˆ‚jzŒzqŽ†„w|‚o’˜‚ƒxls~v”o“{s†ˆ}ƒ‚‹’žˆ~}•ˆwsk~†u}zk‚ŒqŠtw†z{tƒŠnŒvvzv|{egz‚ˆ‚{‚€zˆyƒŠx‚„†g{~‹t|€ƒu„…™{yŒxty‚ƒus}zr‡p‹oyƒ…t}u~w‰…Œ‹|uŒss€~Ž‚ˆrm‚ˆu…•|„ƒ™~Ž„~‚z‚q„f~€~vx€t‰}s›…zz‡y™„‡t…„w‡‡wpŒZ€‡t†|}‰}•p}‡xxzv€}x~‹vŠ|‰Ž‹‹‹y‰†‡vŠ‡‘y€”Œƒpˆ~vŠv^z~r‡}}‰t¦ƒ†ƒr€|„tvŒ…œŒt‡{€Œwz{dŠ|Œ€‚‰†w›o}wuw€~|†l‚„}„x{z…zojq†‚|u’‚o€uvw~uxlƒup„r„†…ˆ„…{v„ythttœƒw~€n‡€‘yi~t€Ž‰l|t’tyw}p…nw†} €‚‡€†x…{}ƒ{ƒ€xvzxƒ{ˆ…‚€vx|Š„}‰}|„”„xwuu„pmx|‚“x‹€‚Š‹†…„j„}ƒƒsv€}wyysy~ƒ‡€‡|ƒ‚mo{‚†ƒ{pqq{Ž†‡€z~Š‘ˆ‚„t{„|zƒ€ƒ…t€yz…†j‚t†ƒ†t|‚‰mzy€uw}~‡vƒj„yŠƒxŠ~|~†‚‰w{†}ƒ€‚y~{}{~y…ouˆxuz€w‡up‰‚}y‰€y|†………ƒ~”€uwˆ‚x‚u‰†€zsp†wszwz——}ƒ‚|—}€‘‰ˆ€}mƒ€ˆ†q‚n„y‡x{–ˆˆ‰‹‰x{‡jitqŒ{u‰vˆs‘u‘r†}‹‹ƒz–€r‰lzxw}qˆ{{~•u‰…‚‡vz‰~’„ˆyŠtq€r„…‚‰|˜~€†Œ„ˆ€x……q~‡†‰b€o}w‚zvw}‡~„{‰€}sˆ‚pƒf~‰€‡{u{pmx†~ˆ‡†Š…xŽ~~„yxŽy…ˆ€›~{~…t}q‘r…|Žtƒx{„{ƒn…{~€ˆ‹{„~ˆ|…†‚s~‡„…y…z…€ˆ‰‚zx}|w}ƒ|ywu|v}zˆˆ|zŒv„py}™pŠxŠ‰‡‘ƒv}‚ˆ“‚wŒˆ|“}~qvi‹}y‚{‹‘‚ŒqŽ‚oyo‚~z‹xyh–wˆ…†…”ƒŒ‘ˆ‰…wzƒ|‹x‡z…y~‹xw‹Ž„{|‰‡ƒs‡€ƒ{‚u‡s~xŠ|wŠ‹……Šˆv…~y‰n{v‚}zƒ‡„‰}z‚|}‹‚“um~z€w•vyze‚ƒ„yˆn~€|t‹…‚ˆ†€qlwu…q„zˆ}np}„Š|yu‡~”sƒ{„{k~}z›{{x‘y‰y}‰ˆ‚x‚~€~y€ystx{‡‰n’…Ž’{xƒ|‚vjŠw‡…|‚~~ˆf‚ˆz|zƒ|€Œp||t‰y…‹€–wtx€s…€t’zˆqzŒŠl„ƒyvxxƒ…vw}u}ˆ‡€†…€y{x{}s‡€„‡„{z‹z‡{†v†z|‚z|wzz~…Š~ƒ}††ws„z†„~|ƒ~Š{}{v~†xx†{x‰q„{}t€q†~ˆ†xwxy‹qywyŽ„yƒlŽ|‰u‡o{}qŽ{…†‚|ynxyv„Œ„ƒ{„{|‹‘}€|y~yeˆ{„}yvv†w€~y~„zr}‚‚„ˆˆv‰‚tŠ‹‚ˆˆs‹urwx„{sy„}‹ˆv†~“Š…x…gŠ~ƒr~ƒ†ƒ{}‹ˆ}€}€u†yˆ~k|yy€osy‰“Š’‡}}‹ˆ†‹ƒxƒf{…t}…y€pŽs‡u‚€„†„ˆ€‚|{{t~~~w{~~}~m{‹Œ…†‡|‰z‚pwv€‰vz}|‡Œ{…Ž€v~{‚€€Šxqwv}~v€€{ww‚yŠu€‰u’r‚Š€‡x|u~x€ƒnŒ€ƒ„~ŽŠ…‡‰‚‚…puˆzzw{zy~„{|nx€„††w}|{’w…€‚xu•r„{v}„Ž}‰‡‘„†{ƒˆ{lxz}ˆys{qj€€z€zŒ†…€ˆ…~„q|ny{‡…„|…uƒ~{vu…t‹†v‚u{u|x‚p}u|„€‰€t‰o‰~q‰{‰qƒx‚›t{w‡qŠ€t•€ƒ‰yŒ‡q|{{‹yˆˆs‹€~–Šy}…{„„‡m{zq~o’zswxz‚ƒq„}vxkxƒŒƒ‰|ˆr~s‚ƒv{†‹uŠƒqšr}‚yxw‚rˆ|‡Œ{|{‚„s‹{€ˆw|~}‚‚w•€…z„ƒ|z‰†ˆ„x~ˆy€|}{Œ}{…y€ƒm~‰o‚w|{~‡w}”Œ€—yx‡{c{}m…u|„~|~…‰Š~ˆ|…z‰†‚so}tx€{t‹……†uz}‚xzy{‚u€~ˆ|™„Š‚{‚x~‡u†|}†}{‚ƒv€x“pŠ…r–‡ˆ€qhƒvvyu‚o‘f‰|z‰‡…Šƒz…wwƒ}u„pƒzs†knƒ‡‚˜ƒž|y|}’{sjz~†m‚y|•}€m|Šz„—ˆŽƒv€‡pj~p—‚~‚iˆy†‰„~}}†‘†q‰|knŠk~v‚~m{‰‚{„‹€{~Šu†„€pp}eˆc…krŒ‹…s|…~s’xkqzmŠ~‰r|ry~zƒg~}yŒˆr‰~}„Ž–pzŒy•Žyl}€~ˆy…{y‡Š”v‹r{‚s‹mt‰y’‚Šs€t}‹†mxƒ‹€‡ˆsŒy‚†u}…|Š|‚xƒ€‡ušq~†w„y…ƒhx†}Œˆ…zx‹„~€yjˆ|†|}„o‹y|xz…|||kˆ€…‚‰w‚sx|z„‡„„|~}‰‰ƒs|‚w…z„ˆ€tyw€‹†o|z„x€x‹s…~€xŒ€|„}„{ymo‡uƒ‚„‡~r”z…‚u}Š„~xŒ‘ƒ}}‰…r|gr‹xˆu}‚„œ†|y†~Œ~xq”ƒz~q€z{“ŽpŠ~y†€”~††‡‰st€‚xƒ~|Œƒwx{‹…Šˆ|‰~…}r}wxy€„„oƒ€ˆ†‚~x|€{yzuŒ~pf}t}ˆ{~ƒ}€iwƒ„‰‚w}u‘—|†‚‡v„—€„…||~„{‡upm†t~wzmzr€p{Š†ˆ‡|‡‰ƒ{|€ƒ|€ww„{Š‡z…‹‚|ˆ€‚‹w‚‚ˆw~zz|ˆwƒ’ƒ‹‰xƒ„~xwƒhƒ|w|w‚…††“z}ƒ{…‡w_{m„u‡}‡xŠŠy}yƒ}…‚‚y‰Š~€€…‚zƒ|~srƒ}ƒ|yŽŠsqzkˆ}„‰€ƒƒ†sj†y…z{zˆ|l{rŠ{~{w€‡ŽŽˆ{‰z…wo{zƒt{€‚„‡}…{kzŠvz†‚†‚Ž„„‰…}…ƒ{{‰wt€z„rx}q‘‰w~zwv~‡|ƒx~…|‰x}~wƒ‚z‰~ˆ}…xw†‚|sƒ‚†{vz‘}„{~„‹}†ƒcŒ……ˆ}†‡‰du|y‡†o}xv€|†ƒŒ€Žz…{‚vz~†x‹f„z‚ƒjo}z{~‰us„€‡{x…n†xr‡y†{‹‰ƒ|‚z‡z|zzŒ„‰z{z{‚‡|„y‰v„fsp€uqzz‰ˆrw€ƒˆ~~‚•mz~v…{€xt‚qwz‚u€’ƒŠou~z|wv|…{szr‡~‰wƒ{‡zyt†~‚…z‰z‡mzyw}z…‚€’Œ…ŒŒ†‚}}ƒt„qt~tŠ„€t„Œ‚‡z‚†‰{†€„}€{v‹‚…wˆvxt‘~uŽw„‡zw‚k…|wƒx|€ŠzŠ‚{Š|‡ˆƒrzo‡~Šysy}xyu|„~~‡‹|€‰…„{…v†‰†qzwƒzˆ{Žu‡€†Žs…Œ|Š„€ts‹“„xš~†yz||~}’|‰Š†„~}vyz…„ˆ‡|Žy‚{|…x‚€|‚~|‚s„•‡‹…p‚|€‹ƒŠŠ“vuƒ{zn…†zowz}…y‰ƒxƒ„€o‚p|tw‰uz„s‚Žg‘€||…{g„z‡•w|ˆ‰|€~nv~~z‡~‚u†yˆzƒz€~Œ€†ƒ{wz€w|u€|ƒu‚~|†y}‚ˆy†‚|}†rxŽvzˆ…€…‡v}oo„†‡…‘{‚”ƒ˜Ž‡}ƒ€‡‡Š‘my‰…„€}‚’„u}ƒ„wˆ‹‡‡‡‚‡‰‰Ž„{u„sdy~‹~y{|~ˆ‡‚†{ˆq‡‹ƒyx}ƒ~‡‹|{~€zpt~„‚…s„vt|tz€‹u’ƒˆ|uƒ†q€o~ˆt}€y‚_…}‡ˆƒ…†‰¤}Œ…‚…zvt‰~‹‚u‚€…Žˆ~„wq„€Š€~os‡zyˆ||}nx‡{~y‡{ƒ~v‡‡|‚s‹‚zƒ‚y}wt||~€xŠq€…zsƒ“~|mr‚z…„ox€|–†~ƒ†ƒˆ€Œrc„v}‚}y~y‡y‡pz…y~ˆy€xvov~‡€„}€|„pˆ‚…Žo|tv‰„y~ƒ€„…Žyƒ}…vuŒkŠz„„€|~s|~Š„€‡y…‚‚~wƒp„my†wƒz}s‚”r”v‚‹ˆ‘€i{qˆ{€{„wo‡n…w†€„‘—q†Š„„ixzwiq€r‚|„ƒ‘‡‚ƒ}ˆ}}‹v~ƒx|pz’„|t‚…ƒp…h…‚~‰‹`Š„k…x|…x€z‰„‚ut…qˆ‡ˆ‡}xq‡‹‚‚{€z…ƒ‚…‚…‚}‚~‚}mƒ~v€yy~„Ž…‚x}€~‡wx{…€‚‚}€|~€{{„{|xx{€~{~€…ˆv{zx‡n„x…ƒ†~‡uwwx|~~„x‚ŽŽ‰‹v…†„„s€†„yƒp{Š€„vxˆ…v~n~yv|w}‚…pƒx…sƒ„zˆ‰{˜…’{Œ„~‰}~uŒ„~pŠy•‰†€w…z‹€x„‡zŠu~…‚|w€‚z~ˆ„•€€‹„„ˆ~……|z€Š‚„ƒx‡t‡€‡…{‚ƒ{zsd†ˆz~‹‚‚e•‚‡{}€‰kƒŠ„‰sozŠŠ„~w‹wr…‡—‡ƒŒˆ„ˆˆƒŠ{…~s€‰p„~ˆ‰‡†{…{Š„}†{yv}r{{‚zvq€~}‰‡€ŒŠx{uoƒw…y‹ƒ†‡–~„y‰y€r`t…||„ƒmŽz‰|ƒ||€Šrgz~‚‡‰Œˆu‹xu†y{|qr„ƒ~€z†ƒu„}x‹y{Œ{yz‡rŠ€w|x~sv€}†y†|vx…p€w}‚ƒx€s…€s~s‚vŽb†}v†|}‰†o}w„w†{{{q‚z|‡|{‘tx€t…‡‚y‰ƒ†‚‡|h€z}‹~u€|vu~u†z~z„‚Œ~“€~z…‰‰s€rƒ‚z†n‰}‚t„„}u…~€‹x}„{‚sˆz€………ƒiŽxw{}tˆtŽŠ…ux†††‹ˆ{‚{xz}„c‡v†|…‹†zpvy|w{|„‚vi‚|yŽƒ‚‚o†Œ’vˆ‚e}x€Œsun‡€‹u†x}†z}z‰‰ƒ}z‚}}‡z€„‚Œ‰s{††…{ƒˆ{…zx„p‡„|„|~uvx|†}}†‚‚€ux†u‚…}p…}ƒ}|‡ƒ‰mu~‰…tz—~…zr}l‰~}€}w‚Œ{„~„“ƒ|z€voŠ~v‚„€xz}„‹p…ƒ“€„€†|…„p‹t‚w€r‰tv‹}€…‚woj‹€„~zƒ…‡¢u~}|{ƒˆzw‚y‚|ƒt‹‚~~‡‡‰|}‰‹†qn…{}k}||˜nˆ|‰w|„ƒ}m“w‚ˆzwŠ}wttt€y{{{…ƒ†~|‚ƒtŒxy~…q|pvƒxy„~ƒŽnxm€~{su~“€zƒ‚qƒv€tp€ˆ‚‡ƒƒ‡‚zŠy|x„}Œƒt|hƒ}‰x‚yŠ}~kt†€z‡~vt{azw€}{‡„x{wx{€€~twˆw”}~‡s~ƒq‡ty†{}‚|€‹†‡}…†y|||„Š‚‚zy}Ž€‡~}w||}Š†wƒŽ}‡ˆ…ˆ„‡‰‰Œ‡u†„{w†uŽpz‚‚Š…†‚’Œ€n|„|‡y†ƒ|{„„ƒn~}tyˆyƒ{t}{{‹ƒx†n~€‡‹‚~~†‚‰~Šu~€|~wv‰…{Šv}…y…}…~ƒyvs‚„u{…w}„z•Š{‹…x‡†|jt‹{~‚|~…‹~„…—z€ƒ‹v”~ƒ|ƒŽyŽˆz†y~y{}˜~€Š†ˆ‘‡ˆ‘z†|x‚x‰}uv|uoƒyu†}‚{}†|•†€Œt€‡„w„u…‡…‡z‰…‰…‹ƒzyuu||tˆqyŽ~x„u|ƒˆvƒ|‚‰y|p€vƒƒ|ƒssƒ€„~‹Œˆm€…|‡{‚rƒ”n‰{‚‰ˆ„wŠ|‡yyƒƒˆŒz€u|ƒƒz‚|ŽŠŒuˆ€ˆ‚‹ontv‚vƒ†z‰ˆ€‡‡sx‹yŠ~~„Š{y|€‚€‚ˆ|‡…|†w‚{€„~~z„”‚}|~„‚z~me‡yy€zƒ~„r~z…z~‚‡{…t~wz‚‡wg||w€ƒxŽz}†x†‡g‹r‚‚vŒ†††‚w~z{|r‰ˆ€ˆkz„‰sŽp~‡y„~u“y’Œw†w~~Š{{„†ƒ}‚€†„{ŒŠ…uzˆqww}x‚„ƒnv…€€}u|{‡‹Š„„~€ƒ„€s–~z‹u~†~i‡„‚†ˆ„v~ˆ‡€x„€u~w}~ƒy~xƒˆ†ƒ‡{wst}|xzz€|k‡y}yˆ‚œŠhˆz€…|€z{{rr„†‚—u„…€Œˆƒ†tŒ~{zp…qzki€ƒqzv‰‚wx„Œ€†‚}{t}wy€r{ƒzƒ}~Œ…Žzw€|wƒh}y€…tv|{‡ˆ‚ˆy~w”yƒ‰{|xw†ƒ‚‘€yz‰–Š‡‡žŠ|†tƒ}}qu€…rˆrr{€Š„{Š‚ƒ€‡ƒvy|w|…Šƒ…|€‘„}ƒovp{{}‚†—†…†Šƒv|hs|}‹Š€z‚…pqqnu‚{r„{yzvp†yz…Š}x…jŒŠr„||~…Šo‡uŒ„‡y}†€€ƒ{y‚zz…xx…‚xŽuyw}{‹ˆ‚}xz|~|wyzvwˆw‚{†rŠ{{„z„y€€{j}€€†t„nz—w†€x†€}…n{tvŠ†o…y…rfu}„‡€|~wkz„€x}„x…|vz‡‚x‰y€}‚ˆ{ˆ‚}}~zu‚v…|}t‡†‰v}‹yzŽ{ˆuŠ‰„{{”~Š‹x{x†yŠ{r{^Š~„Ž‚x€–zŠy|ŒzƒŠš‡ƒuwpvs†u™Š}‰‚zx€ˆjzsƒŠu€z€rvm„…ƒŒ‚Žu~|€‡wz~vƒƒ{~z}w…‚„v~„v†y‰{~}†yqˆo~Žrxwp’‚}ws•s‹sr|mƒ…z€r‘‚}kƒ~–t‡ˆ€}†‚yhuyw€{„…‡…•‹y~€|“{ˆ|zƒ†ƒ‡v{~{€{|ˆˆ|z||†y‹€{ˆz{yˆzuknwƒ}€‚‡•„w€x‹…‚˜w†€rˆq—~p}w€‡Œv|`Šz‘oxspp„vtk€„m€{s†zzzyƒ„‰xw†~yqƒŠj†„r”h|w…“j~{p€ƒˆz{r‡…‚Ši‰~q“ƒ|r{™kzzu‹††{vyƒ}™‚‚…k‰n…„}„Š„u‡xjŠuk€vv„q”€zŽ~u‹rv‡Œ†|{ox}‰ƒl}qsˆm‚›pŠ‡‡|l~ƒqwŒpt€{‡uƒ„w‰v‚‡zwŠqŠ{…xp‚„yo…wŒsy‡xˆƒ{‹}w‰zƒy†xh†|„|‰‹v€w€…unŒ|Žrw{yz€{{‰†vƒ„‚ƒtop|‰yw‚y{‡‘‰ˆ~qx„xyŽz‡‡‹q„op€Ž|{†|ˆ‹‚‡z~„wzy~|p‰…z‡ˆ~…ƒy‚r’x’y€ˆz|zpz}i€€…Œ†}‰…|„|€}~|‹„uya„v}}wtˆ‡tx~ˆ…ˆ…{„vg€}yŠ~†ƒw|}ƒ€|‚„‰t‰y‘€†{•~‚ˆ‡’‡|ƒot~t“zz‚™t‚‰ƒ„‡yx–m‹sv€ƒu…n‚‰uŽ†x‡pp€~ƒ‚zŒ‚|€†Œ„ˆq…v‘‰vˆzŽ‡„|mˆ…†|‰y€…†w„n‚Š‡ˆ‚‰ƒ~ˆ‚tyŽ}‚tnƒy{xˆŠwŽ‘{™|ˆ‰€y|qiu~yp‰o‘xxtv}†„ˆ€ƒzkˆ€€{||w€„€m„vxƒ}€z‰€‘ˆy~Š~‹wu{~zz‚o‡Š„…v„‹€„}€vˆu„}s~xsƒz„€t|…y|}‚y~|z…p{yv‚{{‡y‰y‡†z~xw}lm€…„ƒ€n”tx|……s~€ˆ„‡vpzx……~†Šn‚zyz‚yy†„‡u‚†~ƒ‹{‹‘„‹szˆ{yqŠˆx‰†xƒx…}ƒtˆy€|s™r~€‰z‡~Š‚†ˆ|y„}}y‚y~zz‚ww~y„ˆ………‘„€ˆ‹‚|‰€…q€tˆu}u{ƒ‹…~}u‡Šp€…u‡‚’zwzzŠr†€m|}„Š‹Œ„„…s“sŠ{~z…s{cp‡†‡ˆƒzœ}ƒ„|…‚{„{ˆt„„…{‘{‰‡•z‹‡wƒ‚ˆ|‚uƒzp{€z†zŠx‚y|Œ†‚}t††{~~‡tsŽ†|x‚~yˆzˆ†o€‚‚~~‰}zy†z€}hx€}†www{s‹ˆ}y…{†|qŽ€‡|ˆz‚u~s|€s‡sy‚qzu~ƒ|yo‚ˆŽ…„‚†€ƒ€‚”„†zrvq}zvx{{ƒ}‰…€„{‘‡‡ˆ†x€uvswoƒ}x–‚„…Šs‰…€ƒ†vˆ~w…x{Žwzwvˆ‚…v€qŠ|††~Šyquzy†{{sƒ‡ˆŒ~zz‹Œ~ƒŠ•‰…wyˆ{x}z‡…‡w|yvu’y€v‡v{v†w„€{z|z‚‚ƒz€}}†‡oxƒ{ˆ~y}yyƒu‚„s{‡}o‚{‚†{z€yˆ|†z}vwr€‚€zwx€wˆ|€zƒt”}€}|„u‰|n‘{ƒ}€pvn†ƒ}ˆ~o††~€o|ut„†{{„v†…†€|„v…†oŽr•r‚qz~ƒs{ŽyŒ…~{wkŠ{„u‡xƒ„y|~u‰|ˆƒ~Œ…ŒŠ†ƒ„z‰zu€p‡~‰‚Š~‘yˆ~v‰x‚†{ˆ€xrqu~xtˆ~††{~ƒ„†}‡~ˆ˜}~}|zv|}pv€ƒxz}}tm‚‚ƒ}}‰…Ž‡—ƒt…|zrz‚•Š~ƒw‚Œ†‚|}~{†„}‚ƒyrŠyƒ€ƒŠ{}rƒ„‹v{€‡~ˆ{Œ‹}‚ouƒyxyy’{|„}‚‹€wƒ~„s}†|€v‚z|x€‚|vŠwˆt|w‡}‘~|}{Œz{|}u~Ž~~‡yzŒsuƒsz‚x‡}k‚u‚†‚~w—„xqŒ„†zw}y}‰tz†r†xxzŠ†ŒˆyŠ}„}y}„y}w}x€…ƒ}ƒ~‡x‰|}~„z~y‚‚xux€‚yˆ‚Š|‚|ƒ|‡l{zƒ…v€op‚†„€|„ƒtƒ~wu|€‚zs‡lw‚„}„w~tu‚tq„„††‡†…ƒ}y‡w…”‹vz‘‡x}‚x‘zz„x…uxt„wˆz‚‚„zz}…{|{€Š}q‡s|zz{}q||€…z‹}s‹v|„ƒ‰€Š{‰}o‚q}ƒ|ƒ~Žz„|ƒ}ƒx„‘‹zxv{t€z}|z„……Œ„Œ|~}{ny…xgl‚t{r|†{ƒ™…Œ†u”r€rwoŽsŽm|‡†„z€~†rsœ„‰{~ƒ‡‹w‚twƒ}„u|{xzˆ€}€tyi‹‚‚‚‚u{|ƒovƒ‰…~ƒ†‹ƒƒ†w„u{ˆ~…t~‚…€u‡†~~z„iyƒ‹~~w‰{Ž„tt{}x•zŒ˜}’u}‡–xxŠƒ‚}}wn€|k‚q†z}x†‘|…‹z{‹qy€u„x„„€ww}{z‹~„vnŠu|‰}ˆ€ln…Œ††z…}„‘vpu|k‰{~}x‡}{vz~€ˆ„„ƒxt~†††ƒnz‡Œ„ˆwn‰‹‡ƒ„ƒ‹wz“||z€ux€z‹Ž‰…z€‚z”†Ž{|„z~mw…z{t€r‚x€ˆ‘~Š{‰†‡Š‡p‚‹†~kz„w~€ƒ{†|w„‡‚{‚{~wy{yox€‚Š‡†ƒ‡ƒ’p„rŠz€~ˆŠ€u‡v‚™}Œ‚‚ƒ‹t~…~ˆxq~yx‰y{}„{…y…€†€„‚€{yv~~k~}€~{vhz‚ƒ~€i„pƒ“|Œ‚ˆy}wŒwuv‰…Šƒˆ~†vz†{s†z€…~ƒ‡„ƒŠvŠr†r‹‡yŽs€€†Ž‚{Šs‹v‹ˆ}‹o‚tx…„q’†x‘r„~sŠ‚}‚y}|„ƒŠu’s}s‹lkƒvvƒwn›{‰”qyƒwx‘s‡arˆ}}x’ƒ…†m…ˆs‰ux“‹~Œn€|Š‰~‘scŒu‰uˆxvpƒxx‚|…q††p„{w™~•z„nŒu‘md‡‰Ž‰€q†…€|‚tŽ|škƒzj”ˆ†n‚†~ŒŒy~vk…|†s€wz„v{s‡y{ŒyƒŠnu‰n‰€ƒŒ}i‰{Ž†jˆt{zg‚‹s„ƒs‹stx„x~w€€ƒ‡y„{…sy}‹w|{‚‡zv{xyuyƒy{‰tŠ~z{†~z……„wqŠwyy|‚w€ƒz‚}ƒƒ…€~ƒ†{z€€uuƒs}†‚€ƒ‡ˆŒgŠˆzzw‚‚‹z€€‚p‰…‚}~Ž€‚ˆ„†{ryx{x{z}vƒ€{„†yŒŒ‰}vŠƒz„p}zv|‚|‘}Œyˆ{ŠŒjyƒsŠ~yw„vqupƒ~{vr~o‚„x…t„z†l‚q~v†wƒ~Œ}‰†…‚ˆs~Œ{|r{€{…}u€y{€‚}…v€}€€„wym‹w‰‹„“‚y{wyoŠ{yŠ…„‡Ž~w„s€€{}†zz‡|‡u}€‚{…n‡v~‹„ˆ„€‚ˆ‚}z{vzwyy€Œ‡zƒp~}„‚vzŽ|r{‡{}‘Š„–y†{}ƒr‚j{|zy|z„p‘‚n€€x}xttsŽƒ†{ˆwŒ{ƒ{‹~|}†}z‹€‡ƒ{wut||Žquxu…xˆwzx‚„vŽy|€ƒƒ|†Š|—{ƒ|}€€}††…ˆ|†p~z{ˆ‹‚†k|‘rŒ~ˆ‡†jŠˆ‰zl†Š€–“‚€|k}{uŠmx„—‡Œƒ…†Ž‡‚ƒœz~v‰…‡ˆ€•tp|}q}wv™|Žy~†‹v~¥Œ‘x„y{}„Š‚twz‰„ˆ}|„n„“‰‚y}b{{xt…p†Œ‰†…“Ž€}†}yl‚|}o{|‹–~~r†ˆ|Ž‚…Žw}‰…‚ˆ‚{~b…„z}†‡Œ„€„l‚€kƒ…v|‚kŒ†|duwz†‰ƒjmŠwƒ{wˆŒr…‚’ˆ~u}}nƒ}h–|‡‚†l€|h‘mŠt}‡}„”‰Ž‚€t~ƒt†y”ƒzŠƒ~„|‚]zsˆ‚vƒ„‰Œpzw„|ur‡wt„g‡}„u“vyŠs~~€•†ˆ}x„~w…nŒqƒŒƒ€Ž‚z‹‹”~t~‘xz–oŒƒz{ˆ•“‡“v„‚|€ouy‹s{‡{|u‚a~ƒ|‰…‡†ƒ…jm…osv~xt~Šm…~v|‚ŠŠwxˆ„ˆ|~{qlƒƒ|†€ƒy‡yt{~„€„|‘upŒezzt…y†Ž‡‹v~vˆt“low…w|{€nh–x…u}zˆl‡†r’Žy’n€ƒ‚š†htwu‡‘tj˜x†~p{…‚”rœj…{|x…~xummƒ„{‚}}ts‘ˆ}t€w‡‡y„Ž‰•‚‚€{sˆzˆgƒ}‚’†|‡|rb€ƒ‰vzv|plj‚|„{…w|z„qˆu‹”Œ„Š†††vp†‡„„vp{„‹Š€p„†‚sŒy‰wx|…z~}‡~“w{‹y‰zŸ’††{t€q‰er{ˆ}‡x}t‹‹r}‚‚ˆ{r{o|qt‡zv‚yŠ€~p|†|…Ž{™}~n|{ˆ‚r€r‚iz~ƒxx|„—qy’wyvx‹vs}m‚hqsˆz€u€jv‘u„‡‹…v_oˆus{r€io~~…€„„Žmlwn‰‚w|„ƒ‹~—ˆx{„…‰‰Ž‘£‡vwzns‹z€~€v‡ƒ‰yŽ†|„„‹r”rr‚ƒ}…~|x€s|yz†z•vyŽnƒ‡ƒvo‰xŽœ~„}txv‰–j‹u…‚v}~€s†j~}††|†¢…up}„‡z€|˜o„…xy„„srn„}z‹†vx‚o†x‹zƒˆr‰ƒg„{w}€–…xrlyƒ€u}€ƒ}hx‚‚€x}‘|ƒx{€j‚x‹‹vr„viŽs€‰nwŠs‰Šo”o‰‰†…–‹‚•‰†}„†v†Zvx‚€ztƒ•gzƒu{ttyljvl‹…xs‚~“‰Šˆ…Œ‰‚y€}z{pˆ~|t|Žx„ˆvŒŽlƒ‚‹–”zxws{w~„h|ƒŒw~wƒ~yˆ|i~„~ƒƒz…ŠŽu‚by€‹€ƒtzˆ…‰†{xz|rw‚xkt„vytw~}‚‡€†{„€ŽŠ~‹€ztz~zxt~…‚„lˆz|‰u„…‡‡u…~n{u}~…ˆ‚v‚|–‚…z{vz~xŽ€…}{p‚y†€j„{ƒ„Œj‚w{šv‰z‚~‡rw†ˆuŠs€Šy€|€“€‡xŒ}xw‰€ŒŒu€~tzzr„…„‚ƒ{†|…„~‚w‚€xsu…}{~~ˆ‡Ž|ˆ||{‚‰…ˆ„€‚~ƒ|Š|ˆx{y…|Š{Št‡„„|†~zƒc€ƒ~yŠ„~w‰‡ˆ†|‚…€‘Œ„|~ƒv€y{‡™o‰‚yz~x„{‡x€‡w|ƒz„‚p€€~…z{vƒ~‚w‚‚{zƒ{ˆ|~}y}{|€€ƒwtz}ƒ|vz„y…tpˆ}z|…u’w}…}z„z{ns†w€‹}ˆ…qp„i‹ˆ{}‡n‘‚†|yƒt†{|—†z‡y€€‡‹‘‹€ˆ„|}zz…‘x†}w{vŒ{‘€ƒ†ƒŽŠy‹q‡}|~ƒ|w†~~€|z}x|„tzv‚„ƒ}Š‡~€}’vŒ}|„x}~‰ˆ~ƒ‚‡Šxƒyl…{vm‚„d|y{s‡x€…|}žˆ„…‡€p‚‚……|y€„v}Œh……|€Š……‚‚p}„€yyƒv}}n†‚xŒt‹u’y€q„…~„€”|}kƒzlƒ{~Žyx‚„—y|}y„ƒ~‰vtŒsŒŽtˆl…trŽz‚Ÿz‚…~~‹f~ax†v‡}„‚oz„x‚†}Ÿzƒ‰ysy€}…‹‚gtv‰Špƒx‚‚’Ž~}‰x“v’‰~•v‹€tˆss|ny~zŽvx’†—}qƒv‘„‚„uu“tƒ~|‡wy‰y}„e†}|Š‰t„ƒn|qzx‚‹y„tp€t…Žu‰|{Ž~ŽŠu‡xw‹r“pq€qˆ…p~rw‘b€{‹xuv”ˆ~t{•vu}~g•‡ƒ‹t…‰tvky€|w}~w~ˆk†wz~u‹vŒs„{t‡‡‹‹~sƒ…€s{l‡ƒƒ|€ƒ‡wv…||||ƒ}†xx~wnƒwyƒ}z…ƒ{zy‰z~yuƒŽ~|||ƒ„r‡|„‹‚}‚€–|}ƒqŽƒ}Šs‹‡v†}‚€~pltŽ‰‰†u„‰„…u‡v‡trt‡z ||…ˆ}‡xŽx‡‰~–yˆ}€~ˆ‹~ˆ„…•vktƒy~}€…†sŽ|„€…ˆ}w„Œ…{€ƒux|q}}vˆ~€‰‰‰z…~…u€‡ƒw‰‡w‘yz‚„xƒ†~ˆ€y‚sq€y€uw€v…sˆxqs„„ˆ‰ˆ„€‹{‚}{y€„{€Šƒšxyz…qŒvšk‹‡ˆ|{v€{svƒuˆƒ‡†…p‰xz‹tˆwz„~p{‡uyp{vxq‡‡|Šx€xz€ƒzˆ|~vy|~•ƒ‰ƒz‰Šq‹w|w€orx}t{{qˆu‚w„Š„t~‡Šu{{s†}Šuˆ{}Œtw‰w}š€‰ƒ‰Žt‚„‰{|zz„‚wƒlnz„s‰…{‰…€‰‚‰‚}‚w}|{€„€‚}v€{„‰ƒƒ~x…†Šyz„{ƒˆyyvy}{}mxƒ€s‘ˆ„“Šƒ…–{Œ|ƒ||wwy‘}‰}‚ƒ‡x‡—…t‡†}n‚hv~}‚}„„šƒ€~‚‡Ž„…„ˆ†}z}{yq|r€ƒt‚fŽ‹~~‚ƒ|ˆ~vmƒ{‚ysv€uv…‚‰~~ƒ‚„x~|ƒyzznz|u{}}‰‚q€ˆŽ‰ƒ„†…{~sƒ‚€r€r‘†‚o‰‚{~~x”~x‹}‚{€xo†z‚‚nz|p…k…wzŠ‡‡y„s˜zuw{||u}pŒ†y†{‡€‹y{vŒ„}w‰{~‚zŠ‰‚xx{‡q~€ˆƒwq€‡xŒu‚t‹ˆsv{xsy€k…n‚Žƒ…y{„‹„ƒ{l‡ƒw‰{~†{Š~{{|€y}’~ˆq‚uyŠrywv‡†v‚txxx‡~t‚{Šw{z}x€‹ˆ~…„‰…††v|u‡€‰z~sz‡zy„q|uw€|ƒ}…zƒ‰w~u{†|ˆ{‹y|{€zst}{s‚„†~‡|x„‚y}…††ƒŠƒrƒ‚……u{zmˆysŒy‡|oŠx…‰f~vnŠzƒnrpƒ{‚„ttŒ„„’lt„Šzz…~|~t€}t}v†‚q{t‘„Š‹x~|k“t†s~†zƒ‚tƒ}oŒl‚n•x†{xŽ~wtˆx~Œyˆ|q“„„tv‰s‹{x…ytˆr‹‡~‹ut}oŒwŠ~l˜x„œs„Šx~„o„h…€{ƒ…uŒ{ƒ‹y–uysv—Ž^Œxo‹ˆ}„rp‡‡‡‰u†u€‚w{}s‚t~ƒy…s„ryŒxuˆhyŒj‹‹yˆ}~Š†|‡tys‡z‘xy‰y{‚z€…‡ƒvn‡~‘}„m‡p}~u~†…~‹Š|w‚…uŽ~ƒ‡p{zv†{‚||†€Š€r‚{|r†|‹‚ŒŠw‡xx}{xˆpˆ‡zx†‚z~ƒn‰€‹|€~z{€„z~†ˆ„‡…}ƒ‹‰wˆ~|ƒ…z†x{|~†…††ƒƒ‹ˆ…ƒ}}‘x‚{vŠ„€€ju‡‰z…‚ƒƒ‘ƒ‚…xˆ}ˆ}xwguy‚}|~v}zk‚‚~…‡„€…•€~ƒw{x›{‹‡vˆƒ}ŠŠ…‚’„|yvq†}€Š}‚ƒw„…~Œ~ƒƒ€wz}|„z|}}~|„‡y†q‡z‡ƒs†x‡}ƒ|{‡w„ss†ƒ~€‚z|„{}ƒ}‚oy{zzryyx‡hx|Œ~‚‹€„rƒ„}„v‚n…~tuux€ƒzr‚„}‘€’}†„„zƒ{Œ||„|z…r†sy‡}sƒ‚„{…zz‰z||‘|‹{t{v|€…z‚…~{ˆ‚„|€|zvq{g‚t{ƒ|‹—y€€„“€’ƒnvts}q‚~~ˆŽz˜x…‚‚Š}z{‹Š€}‹€z„i~spƒ}}‡|€~…}}x€|s‚‹zw~{z‚„r‚w…‰ˆ‰„~‚†Š‘~„„|xƒ€‹|z‰z†x}z‡z—‡‡x…ztw’~…q{{„‚’€€||‡{{p{yy€€{wvxŽ~xŽ€s~€…{vt…‡y}„~t~…~Œƒ‹ƒ‹}o{€‚{}|~‹}…€ƒw‰}„{xh{ƒz€|…ƒ‚‚“p„ƒy€v€‚•‚‰y~…||†zryxuŠyˆ„‚~€’Œƒ~y~y}Šƒ|xyy~‹}}‡Š‚€‚z‡x„Œz‚yv‚x‡ƒƒ||‡€€s‰xz€u…|€†‚ˆx…Œ…Ž|…‡”z‚||}v…}†™‡†„„rrh“€†}zˆ‰x|nv•w„r}o’ƒ‡Š}ƒaxz€“p…u~vŽsƒ{l‚|zŠuƒƒˆ‹„ƒ€€‚yv‰€ƒ|~}Š…xƒ{ƒ†z‚†~‰~€ƒ|‚„|‹„yƒ{‚ƒ}ˆ’}||“†~‡ŽŒ††|~„{ƒ‚‹ƒz‰…‡}€z‰ˆ|„w{’ƒ•y}‡z}w{|Šu„}}~„‡}‚x‰|…t{y‡„‚{|Œ|Ž…}ƒƒ}q{~‚€u|{~‰y}‰z{zˆ{~†x}}Šˆ‹€‡€‰{~‘}~€z„€pz—€†…n†……ˆƒ{„‹z{„v‡„zwŠsu„iŒ”z‚~‚’w‹ƒv€‡†{ƒ€|‹Š„tˆƒx}„|’†p}€z†v|xt{~€…ƒ‰t”kz|sw‡„†{…v|‘q€{Š{}Ž„~ˆ~u†yw‡ˆ…„~|‡„oƒƒ~zpƒ{ˆy‚kz~j}vv†}†“y•u…Šz‡Œu†}“swt{}~‚p‚†‡||ƒ|{~ƒuƒw€†ƒƒz|}||ƒŒƒ‹}ˆ~r~~€€{‚„†|s„{…~€‹‚‘Žy}‚€|vkwzz…vƒ……oˆw……‡…„gwl~{y‚|‡mˆ‹~ŠŠ‹‹Ž”„tˆusˆxŠ„qzt{„†|~‡ƒ‡€u…~us„}‚}Œt‚}ƒ†vƒˆ‹ƒ…zv}u‚{€ytpy}~†~‚‡q|~ŠŠŠ~‰~st}z…ˆz„ˆvky{ˆ}~„ƒƒ‰œŒ‚‡„z}v”t~€}y|Œuˆ~‰|†z€‹xw‰z~ˆz|{yzx†ƒ‚}ƒƒz€Š}†sx}ƒpw…€|~|ƒ„t”~„…†ƒ}€o|vw‚w€mƒo‰mŽ‰‰Ž€xˆˆ‹„}{xpŠ€v‚~y}{q{‹vy…xˆ‹Œ€Œ{ˆ‡…|ywŠvz|{y…y†‹‘…ˆy‰}v…ƒ€ˆh}†}uy{yŠ{~’ƒ€ƒ…{|‚}{l†„w}…|m‹n„…z„…y€€†~„ru|ƒ†z‹‚z†~†ƒ€ošˆ~‚~‰yp|‡~|zwyq„yˆpx€}~xw‰‚…‹z}~~ot~x‰†††~‚€{}q|}~~}|t{}{}~€}~‚{ƒ„‚zƒ€~{‡r„…}wpy€€z‘yu†…zˆ{j|{‡}ƒ……zŠwƒ€w„}„ƒpxq€ƒ…wˆtŒv”tv€|y…yt‚ƒƒv‡pvvrƒ’…„†w|{†yyt~yy‰ƒ„v‡{„uxuwƒt‹}„‚‰€…ty‚w‚ƒ„˜t‡{€qy”t†zƒŠ‹€„jzxt…x†x}‡wy~vl}€e†q‚{um{Š‚tz}ym‰ƒzƒ€~|xywƒyƒz}Ž‹zŽƒ…}y‰†€ˆ‰xv|wuˆ€z‚‚xy}|ˆy|~}‚ˆ{zz„yŒs~‡w–~…v€‡‚~woy{{~kz€lƒzwƒŠ|||‚‘x}y†~…y~h‹{ˆx}„”ƒj‹x†Š}€€g–z‹|x†ˆ€}}zˆ|‡ƒ„…€€py‡€‹x|||}qƒ‡†‹~vŠ†|…qw‹w‡~‡†{Œƒq~~‰ƒˆ€†y†‰“y…ˆy|s{•}…}xr|”ƒz‡yˆw‚•}}}s|{„uŠt€ƒ~Š„„~…Šzn†Šv†~s}p}€ˆ€}Šƒƒ€pr~s‡oxur‡s‚“\‹kwŠ}ˆ‹€ˆy‚…zŒqz~f~zu˜m}†uŠ—u‘yq–q–‰yƒ|s—qy€ox‚z€|‡£o†q…‹w~px}t‘ˆoŽew„tˆyxŠ†x˜”…ƒl†{„‚owt‹i‰st†z~k~‡v‹w|}ouƒzƒ~r‡wyƒ~„x‡„v•x‹‰{ˆwuŠu‚“r~{t‘yŽ{‹ŽwŠŠ~„ly……„{{p†v}{sp€oŽ‹~‘wtŠk’Šx‡†tŠzŽuw}}ww}}vtv„{Š‚„w…„xz‚z{po‚z}|}}‹„ƒƒŠ…|wŠ{‚€€}}…u„p‚|…‚‰}…x††„|†€|€~u~sx‚|v{ƒt…vyŒˆ„‡†|x{‰‚€„q~ƒ€vrw~›{„‚}ƒƒzƒj€„„„}‚…zm~o}‡ƒs‡t€vw…|‡{†„|“xz~z{‹ƒƒm|‚†‡xˆ{yŠ~€|†xŒs€{wy…v|‚ƒ{…‚Œr}}‚„v†wƒ‚„xq~p}t†}w|…Žzˆjo…z€|y‹|“}~~v~rvm|{y‚‡‚{„~‡|}ˆl‡}„}‡at}t{€|††‚z‹w‰…|xƒ€~{l|††}…v†€„††ƒ€}ƒ…z~xy|€„|€‡†‰††pŠ~yy{†Œ|sˆ|‡}{……uzŽ|Šuz€ƒ}p|~ƒ‰‡p~x}ƒ‡ˆv‰Šu|~x{r„‚w‡~„‡y†{{…}zŒ„‡t}‚y‡{}wnzn€uƒywƒ„ƒ||€‹s„~{„ƒ|ƒƒ|{uˆw}‰†ƒ–ˆ|‹y„~|‰zm‡v€„…uš{”s{uƒ€€u„ru€†‡†vƒ{€“oŒ„{‡uwˆtuŒ€z‹z~…‰|t~u€‚ƒy‰v‚vŽ€„Žtƒyp{|„{‰„€t|‚}|}†Žt†~xsˆ‚‰…€€w~‚‹ˆ‹s†x‚†w…{l†‘Œ‚‡yŽ„€}se„…‚„€†{j•~„~‡€€“ŒˆŒuz„u…p‡x‰uƒ‰†‡ƒ•v~‚‹n{v|‹~ˆ~y~ƒ||v‡‚}~yŠ‡€Šz~…†…l€ƒw†ˆ…†‹…}„}Šz|xy€ƒ‰vƒ…uqq‚}p}zu…m‚‰€€|„t‡Šv‚z€ƒy€|…x‚y‚€s„yš~‰z‚{~„v‚Œƒ~‚…{u„w€xƒz‚|}„w|„}wƒw€~~‚’‚ƒ€€}y~{€n‚}ˆx€}z{s~|~t‘y†‚~ƒ|Œt…}o‰ƒ|y„ƒ}uu~}…}y‚ˆ‚„‚‚v…x{rŒr}~ƒ‡t‚x‚{€Œ€€…rˆw‰z‚o|ˆ‰|y…}Š|zn†w„s}put|~rx‚…„’{„{‚z‰†zˆq‡…}yyƒ”lƒzqˆ€{ƒ•w‡„x€…x€‡syxj{u|xuzq’‚yŠz‹x{u~ƒxy‹‚ƒ€s—vƒ€•|Žt†‰{…uzo}xwlwŒx{‰z‰v†Œ„„~„ˆv~{xx€€zy}~}†„‹y‰Š…‡…qŒy…|||x‚ƒyz€|ƒ…~…–|Œw„€s‹~z‚vm€{y‹u{uwŽ–‰‹||€€|~Œ€{qƒ}x€wt‰x€vˆsˆ~gŽzˆwy{xs‰u|z…‚ƒ…ƒqy‚s‚…~z„p†…wz{{€y{w~ƒ€ˆyƒ~„„‹„‰{‚xx|pƒpxt}‹€{€‚ˆŒ…ˆ‚…ƒŽ„ˆƒƒw{y‚wyx‡{‰{’‚yƒŠ{{z‘|‰z„€}|…zo}€€€zŒ‰}yy{‚u‚usv‡|‚„}€sx†‚‰rˆ…Ž~~x‚†uƒ}€t|pwŽƒ~ƒ‚‚€xƒz{|‹‚x|‚}uz‹v…€z€Œ€†tv~j‰~sy‰{~…‚€}€|€v‡{x…Š€ˆ‚|}q†o}Š||Š}~}d‡wˆ}|ow|o‡}y„€„Œ€Œ}‰~|„}€y…y…‡†‹‚w‚|€y„†z~‡tˆ{‹‚xx…‡…ƒƒvx…ˆ„€{wx~ƒ…yƒ|‰ƒ„{‡‹ƒ„ƒ€ƒ~‡}ˆ~|~€}…€œhˆwƒw‚w|„Ž‚€{ˆ‚p|r‹€…|ƒ‚u‚‚}zxyvˆ~“…„}yƒo…{‚n…Œ|†z†~‚‚~ˆ|€‡„ˆ}†„Žz~‹kƒ‚|…z€~ˆpw€y‰†u‹z‰~‡„yy‰‹‰yƒu‰xvƒ~{v†d‚ƒrsŒwyŽˆ‚„Œƒz{w|}ŒŠy„zzƒ…{q|z€‡y~ƒpp…}‡~‡w{sx‚‚~‚„z}}‹ˆ|~~‚}xqƒ}€‚‰ˆ‡…y{…~z…|}v“†yq{|‰|}‡…‰zwq…„‰u‡s~…vvxyu‹€†v–‡…t|~x{|‰x”w{ˆ‚…‚†{€†yˆt……ƒ}y|~}{s‰|{„vƒ†|…†ˆˆ~ƒ„Šz|ˆgstw„€ƒˆ~‚¥sƒ|€|~jƒ‚‹w~y|„mylu„€‹†„qp|x€|{}}k”‡~v~†…rŒ~‡ˆpz‚yzm|q|{v}„„~Š{z|x†||{ˆ‚zs„†{Šw›‚†ƒƒxt€{‚ƒ|€yzƒ|}—‚ƒ…€†t”‰yt}‡Š{mju‰ryz~„x‡„†€‹w{~~€z~|€s†lr‚{w‡s‹†‚‡‡‚~ˆu‰€{}yƒ|qˆ†‘Žo~‚†”ˆ}o‚~w{}pƒwqfs{‚€}‚z…¢|}|‚ˆs}•{Šx|~vtŽqrƒx”{r–oƒ“tƒyp€nƒ{~syx…‡Šw‹z†€‹Šyw‰k’zxŠgr„nŠ†tŠ}tŠu‚xƒx•l‚s`Šyxfx{l§nŒwu’†Š‰€œ€~q‹„h‚†v•{‚‡x‹}n“€’ow‹t…‰r‰ok‚t}|~‚ƒ~‰yˆ‡w‹†x’‚–xƒ„q€‚xŠsx‡w…‰rt’…‘ƒ‰xg‚s‹r|smˆ~ƒ•q’zˆ†s–dx“r‹Š|{u~m‰wwrsrŒ{Ž‡‡‰}„yz›€˜†v‡…n‚€j”nvƒo—‹ˆ‡~‚q|…|ty}Ž‚‡rux~‡„‚‹‰ywuˆq…zyˆj‰qx}|~}n†y†„|{‹~|€…Œuzx„yz†}~Ž€ˆy|€sˆ‹‰p…s„†„}t{„y€{~ˆ}€Šyv–}|w‘€„ƒh†‚…zzzq‡|€w{|ƒ{~xz~pz|‚„zzv†{‚{v…tŠ„‚m†q|Š}‰xys…||t‡„ƒ„„…„†yt„|x„vz‰n…‡}„‚{…}yv{€}q‰‚ˆ~ws~„p‡rq~vnm{v‹ƒˆvvŒ††‰~wƒx€‰h~|ƒytzo‡~n€„€†~„‚mw„z†ƒz†~y„~‹‚€†vx‚ry„|‰|qƒ|…}|xxu€w€ƒ|†ˆx†}~x…z~|{ƒ{ƒƒyŠtzŒ~ˆŠŠ‰y„‡{y{†te‚™{€‘j~|m‚ez€}…ƒ}‚hzƒy‚}~„…‘€Žxo‚y„‘z„sŠ~„‡„‚tyxw‡yƒ„†x€{}~€o†v…€ƒy|syts|~…|s€„tˆ…t„}Œ~…ty„ƒy{zw€x|~}x|€’†tˆ€zvƒ†k}|zy}z~‚‡v}z€‰‚ƒ€†q…z€~womy‚z‹w|ƒ€|}‚|‡qŒ„€vˆ…}{m‡oŠuz‚€–vv‘t‡€{~ˆw…~uƒotyt‚~„…ƒ†„€‹ŠƒŒyy„y†wyz‡€zwxz……‚Šz€€}‹„|†sŽ~zyzw|„w†{x„|w‹yˆ…ˆ{‹‡‘w‡r{{€™z‡}yƒ|w†‡ƒƒ‹‡{~x‚€Š{€|‚u€}z—y|…“Œ|•€‹‚‚€|xz„…w€}ƒ„‰‡†zy……‹w‡r~yzv}€wq|ŽŽy•}}‹‹v‚v|~y€|’vy{fˆt{yˆx~}’s€‰Ž‚uuuz‘}€x~wz‚‚€‚ƒ‹‡‚ˆ‹„„z‡s{~€{{~sˆvˆgrs…ƒ‚„‹xnyk‰{|sˆrx„t•…‚vjŒ||’“Œ‡‰|Œr‹{qovy}Šrw„s‡s‰|‡~ˆ…vt|ƒ‡ysxy{{€}~‡€y}†‚‡xŒw…‚Œ‚‚€ƒ†}w}u~w…z€}v}‚…Š|x‡twt†€€z‚w}}qu†‚„„‚‚‚ƒw„ˆƒ{{zxvpy„v„{~Žˆ|‚ƒyw€m‡ˆ~v|‚‚Šy„ŠŠˆŽ‹yuˆn‡x‹yt}ƒ~˜vŽ„x’z~zyx‹y‚v‚‚ƒ|vxu‡q…‹t…}x‘ˆyŒovŽƒŠy†{poƒu‡tƒyqŠ{Œƒ„†xzv|ria‰Œv‡l†Œm‰ty‚xt‚„zŽyw‰~„‰p‡wd‡…otvvu…f†u{tz—n‰„‚†m{xr›z†sƒŠy‹†ƒŒwp”}Š‘swp†~‡i€tx‡{†‹‚x~€‡†}ˆrt…k’“v“ux‡€‚‡r‚|‘€uˆs~€n‡’‡s}†xŠv…lq…x„ˆl}eŽmzŒnt‚z‡gƒ„ƒ‡{ƒ€•z‰‰~‰pysl|‚…xŠw‚ƒ’}‚†‡‚x‚o„w~|{Š}w{|z{x„†‡†…|~r€€y‰}‹€Žvˆ{Š~‚}x€€‚€y‚xŒ…xrwy~†{†€y‚mƒ}z€‚„‡s}…‚ˆ~|ŒyŒ{€}Œvvzj†Œ‚‰Š~†pqxŠ„u„y|p„ˆ}‹ƒ~}rx„€‹ˆ†ƒo…‚}zŠ‹|zuˆ{ƒy€y~|~}‚{…w‚yz~||‚|„…uy{ˆ†xz~€~‚Ž‚ƒ‚„y„„†k|xŽ{‰v|ˆƒŒŒŠoxl‰e‚‚wu‰~q‰r|‚„‡{x~jwiutzz|ru‚~‚„„—„ˆ…}ƒ}}}s‚mŠ‡|€…‹ƒ{…|…”~‡ˆyv}v|zy{€{‹~r‚}€…‰x‹{Š{Š|ƒ|u‚yƒ||w„†”yš{ˆˆyƒvƒl„~}{i~vˆki‚x‡‰q†Š•yuru„yrŠz…w~toƒlƒzy‚oˆ…{‹}‰ƒqƒ~p„}…~jƒ‰}‰vŠ~~Š|‚|ƒ†‚tx€ˆ{‰ww~ƒ€‡{~~Š‰ˆ„sow~yus{mwyz‚‚†ˆ~‡…‡~y€twrxt|x~p~ˆ†’~|€„€Š€‹u|‚}zu€snu‚„ƒƒŽty“~€}ywyˆ†ˆƒsz†i…y„˜|||‹‰}€‹~ƒ{}|~‹zy‚tˆzˆŽ|}y…€}ƒy||}ˆx†q€‚y†~{‚†‹ˆƒyƒ€‡}m†w~v€x„tƒv}|ynˆu†ˆ|ƒ†€‘†Œ„€z†uƒ‚…€†z~†z€‹„†sŽŠ||†„‡w“s†uƒ}ƒ„€w|Œ‘{€„|Šslˆ†{vy…z…„ps|{„€˜z‡ˆw‚„‚€tuw~ƒw‡ˆ‹‚w‚{ˆˆ……z}}†‹‚wŠ}z~x}€†ux€}…v{‡‚‡‚z€||ˆ€ˆ€{ƒy„~y„|‚€{v}€n††y›…€„‰}‚zluw|‡{‚~k‡m€w†}…{~…„€‚v„~zmzƒi†tƒˆxo|~ˆyŠ{~ˆz…„zt}yz‡|}wvz„…†ˆz}wyv†yv}†p~z~}z‰pŽˆ‰y}…uw}…z‘x‹€‰z…w‹n‡x„}xw‰~|zhw|€s€~–s}‚„€m‚kq€r’xgŒvx†w€“pv‰m†ˆ~†tusw|~uƒƒqŽz‰›xu‹~o‚jiŠ„ƒŽsƒ{ˆlˆxw|}ƒ†‡yŠ{t‹‰yyv|jo}j‡‘€~vsƒz‚us|„™s„xq‡fsŒnœƒh€rt˜…yŒ€fu|{ˆryqyŽk”yxˆw‹r€Œu“pk‹nˆ‚vƒ†]Žƒz‰vx†vœ…x†~{p}}„jnvp‹rŽos˜v‘{‡€p—„˜€m|Št‰‡w‚Œ‹u„„y†|y†j~…x†‚kŒ|Œwl‹k–‰t„wp‚|z‰‚{y€ux{pu‰yt‡{‰„†Šƒ}q{ƒ‚rnutyi~ŽŠ“v~‡iu|t|}t‰qg’^‹t•t{‡~†t|go‡}yZw…p•yŒ‰xˆ„t‡n~zz{x{{Š‰–x‰z‹‚{‡‚”|~q‰‚‚ƒ|kx”{}~|’ˆy‚…‹¦ˆ„Š‚Žyzzj„ˆu€tw€Œ‰}€–Ž}wŒ}‚}~”~sƒwƒ|t‚‡’ƒtŽŠz–p„„a{y}…‚}€~gt†}ƒytxx†eˆŽu€w€u|~dŠƒ€|{‡ƒ…‡€}{|†oyY‡…€x…€|—vˆ‹zx}…‚Œy}w‚n’„r€n„~|zu‰Œ…‚|~{zvx|w€Ž”„‰bŒ‚ƒ‚…‡y€‘tu‰k|wm…Žx{ymu‚†ŽŠ„r‡urx†hnnuƒ‚yƒvy‰ušx‡…~}€Ÿ›…|‚„€€v„k†ƒz…‚~‹mžu|†nz€x•q¡†v|„wz†Ž‰~ƒ…‚…wŒ{vrŒvŠy}ˆy‚}Žvu…}tˆr‚|sˆ„qŽ|—t{wŠ‰sƒu„r…|ˆ}tuƒyz‚ˆ€~w†{†ƒ…—xw{tƒ{yƒ‰ˆ~ƒxw”x†ˆ~t‚qw}€‡‰~{||€‚p…ƒ‹Œ~|z„~–…yŒ†~u€{wvuŠwq|„tŒ{€Ž…Š‡Šozˆ{€‡„yvssŠyŽ~ˆ€‰z‚j€yƒ{e|ƒƒu‚rxœƒ~}ƒŠ}x…Œ„xt‰r†‡~z{iy†‚†‚†f}ƒqƒ~oi|{’}„‹„~†vŠs„„ƒz‡xˆ‰…„px|~†‚ˆ~}z†…Ž†ƒƒ‰rŒv~…€€z€vrj„Š‚y~}€‹ƒ•ƒ€x„}‰~†…o{ƒg|lp|}x‚‚‘‰ž„yx„q„zysmkˆuˆ{zzˆ‘nŽy‡~‚xŒ†{jp]€|pt}†ƒ…‰wˆ‡|‹|Š”u‰„…}xx~t“y‡…|‹~ip|s™Œx€„ŒŒzŠ†p}ƒ}Šlr‹€†‚m{{}l{„h}‚ƒ•‹‹€ˆ‡‚r„Œi‡xˆ~„{ƒw–Œ‚€‚q–|–}y†ˆ|ƒ‘…{’trƒv~y„‰i~}ƒ}~‚|Œx„ƒx{{ƒŒr‡c|ƒzƒ€z„‚q|r€‡~ƒ{…Œˆ€q†qyy€|tr‚€wtz|ƒˆ‹€~„zƒ…‹‚zŽ~…y„t}}~„s‘‡Šƒ…|~€‚~‚ˆ}‚€†|€‡uyŠpˆŠz‚r{Ž…Šƒ‚„ˆ„w‚€ƒx‰€xr}{„y€}l}{ƒ~‚‚€…‡Œ‡…~{|vŽy–s†vu‚{ƒwwxu‚}‡‰‚‹„{’{…|qv|r~~|{ˆ‹ˆ†w…€€zmuŠ†rƒrq€p‚€€|‡xƒ~€‰Šˆ€|{||wtz~‚‚x{q|~…vsp‰x…‰uuy{x{…w‚wwŽ‹…ƒ‚x~‡qgq‰ƒ‚xp€’‚„|uu„t‰}‚|†qy}t‚t}…}~ƒ€rzvyyrtr†v…x†‚m€{u€ƒx†ƒ~‡u…{ƒ}…z~ƒŒty†‚rŽ|‚w„~€|o†ˆ~x€€„ty‡†xx~€vƒ‚|w}||€‚„m|w€yuwqmŠ„…y€x}kŠƒ{†xxyg}wˆ{{„„„‰ƒŒ‰ˆ‰„‚‚™€‚okƒx€||z~|†ˆy„z|w†ŠyˆrˆŠx„{~{wy{|‡xow|‰ƒŒ}‰l…w~w{‰x‚€{‚‚y…€€‡…‚x†z„€‚t‚n€v…„{‹|dˆ~Ž}~†zy„€†„uyƒ|…x|lnƒy{x€…’{†}‹„…}u}€„z}}svq~vv}‚v†‡yx}s}„y{w…~vs}v|€…‡…wŠ„‚y|†z‰{‚†z~€‡†Ž{ˆƒ|{wxzxu†xƒ…yƒ|‹†‡~‚Œƒ…~{x|}zŠnuy†€}‚€„~†z‡‘r‚}|{…i…w}uyy†r‚r‚€†y„}‹€sˆuƒ‹Š|‚yŽtz‡€ƒ†‚‚z€y”u‰}}}}~qu†y’…r‚„ˆ†’y„}n„w‰€‡sŒnw‹p†y|v‡~‡‰†xˆ…y‚r‚Št‰ˆ„}~|}s†uzƒ‚ŠŽ€†”‚”u‚mzsŠwyzƒdpw‚|tˆ†r€€wŒ‚–„dq|~†…nwr‰}x€}}ƒ‚Ž€‰}h~„€~ikƒy„uvuz{€€€~†‡‡€€~{…l{}„|v…|”u‚‚‚s€ˆ€xr„~…„u†wƒˆp†pu{Š‡‹ˆx{‚ƒ}z|€w~q~~|y{€€~ƒj~€~€{€~…Ž…~|~v|v‘‰}€|z|‰s‹t€€…Ž{w€r€ƒ‹}‚|}‹tfx…‚†€y’Š~‚{v…ƒˆ{„{…}~„{…~€†‘{„x|z…z~~„…ˆ‰‚x~ƒ‹|ƒs‹‡lz€urwƒƒ‡‚†w“}€‚u‰~{ŠŒy‹€yz}t|x‡{„…{Š‡r€tmˆ|ƒ‡|ˆlˆf‡}v‚€zŠˆ~—€vw‚vww{q~nƒv…www‚pŽŠ‚’Œ‹pr|vƒn‡~„‚v~x†ˆu‡{x•x|‰~s‘q~†jx|nŠzŒ{}†ƒq‰…}ˆhŠhˆ€~†nu|…€…q{{„‰™~{†p‹ˆ…€~]‹c„„|Žp}†q‰žg‰ƒtƒ{‚qŠrŽ…„‡|zu€€‚‚†y‰„ƒ‚zpt”—qŠy[‹zxŒryŠv„‚~„~wzŠ‹rux€}€v†‚w„}•w…tzwŽtq~zˆˆ|†rxˆ‰xpz„ŠƒŒ‹u…„Œ{„‰k€…|ƒx||x—zŒˆv“…|xƒx‰rvtpyiƒ„…‡t‡}vm‰”{~xyƒ~vŒp†‰yŽv„‚ƒ‰s‹y‡}w‚}}•xƒts|}ˆ‡s‡‡{ƒw‚‚ƒ…k…gŒ~€‚wz†t{zˆ|€”x‰•‚„vˆ{v}xp‚{|‹t‡wƒƒ{„„~|†Šu|}wƒq€p„x€€q|‚v~k‚ˆ}‚…‹wm„{n‰s‹zq‡|z‰~}ŽŽˆŠ‡wŠwo~m†{x|}ˆ„nŽw†v€‰rŒ€}~Š‚‡{v|qƒ…~‡€‹‚…‚€Œ€‚~‚q…{{‚~€„€zxsw†}ˆ‰z…|wvvp{Œ„„i|~…{~s|ˆ~‘€ˆ‚{z‚{{‡‚~‚}{€„~Œz}‡€ƒwƒ‚~‚u€x€‡z„s„†€~z|‰‚‚ƒ~ƒ„y†|{‚xƒ…|‚ƒƒ†}~x…z‚t|€‚‚Œw‰tƒ€t||~†~y{~~xv†„€„x†x‚€ƒ}„o„y|‚|Š~“~|q~ƒyŒ…mz{qxw~~€{rˆx‚vƒu„‚‚w…qx‚|e|{€~~ˆ„v‚ƒ{|€~‡Œrlz‰‚sˆp‚z‹wŠw€|{†y„t†ƒ€‹‡xƒ‰~w…}“q•~‹s‰…Šqvnu€~š„ŒzŠ~o„x‹{†l€z†y{…}ƒx|€u—q€}z|trˆz~†pŠ’ˆ|Šr{…‚zyˆuk„}y‘|wzc{v~€ˆˆŒsƒˆ‰…€ˆ‡zwtxq†s|||y„um‹|‰†}†|uzx‰ˆw€„zyy{€„~‚|w{„v…Š{}…r}~wŽw}~|‡xƒ{€wq€w}…{†€x‚|…|{~zm~ws…w‚y‹~~wz€‚ƒzg†}‚ƒ~žŽŽl|{‰„x†w‚„~y‚€„‚€ˆr•yw‡rƒrŽ~†w}u†n|…y†|‡‡‡‚‹u€‚tyo~…rŠsƒŠ„}‡~€}{w…‚z€}||}€Š‚‰x„‚‚–ˆƒ†ˆ|„ƒx‰ˆ‚‚yqs€ŠtŒp‘|ƒ‚‹‰ƒ{{}~x~r~vw}{Š†‚ƒ€ƒ‡†€w‰r‡xƒˆ{}„r‚|{‘y|w{ˆv…~|…„z|x|„xƒ†~{s{wvvxŠ~ƒ‚Š}…zu‹ˆ{…‚{‡~~}{~„q†}•Žv‡}€xŒ{}n‡}}{yy|tttr}tvŠŠƒ…Œ||†{†“rz~q€…z|„Šz„}ƒ}|ƒp„}w„ˆx‡€Š‚y}z~ƒx~„z~‹}…|Šˆ{…ƒ}€{w|w}ˆz€|}‰{‹z}†„„€ƒ}Š†Š†x†€yƒsv€z€‡wy‚„€€{’„ˆ…yyˆs…my†r†ˆ{w~mˆˆ|qvƒ{„›v„yxyˆ}’…gx{}x…p“‚Š}†Šy‘}{…}{y„|}‡u‚‚}yƒˆzxu†ypƒvƒ{pq‰{€|x€…}ˆy…‰v|€x†„vwƒ‚x|w~y‚‹y€~t{zzw}ƒ„}Šzt|’xƒ‚„{n„vv€zvŽ…s„g{‰†}‡vƒy‡•}zˆ‡ƒˆty‹y}}w†ˆ‹w‡€wzx‰vŠ{…‚‹{{lr{€mŒ{ˆ‡~z€|‚|wƒ~ƒy†„ƒ„w‡uzƒn‡‹}{Œ~‚€n„~~‰†{~‡z{t„|‚‰uƒ†s‘s{{z€…‡{~~ƒ†}wŠw€}z‹z‚„ƒ€{y€€~|oz‚…„‰Š„k}}yˆ{w„|€~t€z{~{†xz†|}r‰‡‚~ƒ‚z†v†ƒ†|~p}€‰‡‡{}‡ƒqŠqxŠ|zˆƒu„~€~}…}~…€……€}~tw€n„n|„zˆ‹…y}€{ƒuˆz‚‚x‚|„r~~’{ˆˆ†Œx„~zr‚oˆz{‚~}ˆr~~}‚ƒw‹r‰„‚{{‚u}‚Š|†xŠ{~ˆ‡ˆ„z‰~Œƒ}ˆ~z…pwjˆ|qy|{…~†Ž†‡‚€|ˆ{}ywx}zƒ„zz†Šu†€‚€r~}}w}u‚‚€‚‰‡ƒz…}~€y}|‰‹‡m~xƒ€{~~}ƒ„}v{†ƒz‚yzyy„ƒy~‡„††€…ƒ~{€z}~~„x|ˆw…€~ˆ‰~€z†ˆ’u‚n‡…z€€‡‡€„†‡„|‚…~{ƒ{~‚w}€‡€Š…v‹x……ˆ…{o…s|ty„}„v€„ƒ€€ƒ}o…o†vŒ{~€†‚†…}}…x‚}‡„‡†‚‚}n~|Ž‡…‚ˆˆz„ypŽ|‡}z‚vˆ{w‡v‚|„€†Š|‡{y|}{‰f‚‚v‹syuz~w‰†‰|Ž…wvvŒ|…ƒŠ„|ˆx{{†z†}Šw€u…Œoz}z†|…Š‡‹{„€|xy‘l‹€‚ƒƒ‡xˆ|tpz~€…{‰o‰€qŒ~…„ƒ€‰‡r†v|€y…tŽƒŠ„y…t}v|}‚Š…Œƒ~†}|…{„{wƒx|„wŠ‰„…‰v„‰vˆ}…y|†s‰rys†vˆ€††|‹y‚{vŒi‡u…zr€w}‰nnŠsŽ’††ƒx“pƒƒ|zy†|‚‹w‰u{†€‰m|Žp’Œ„•€x…p€‚qƒ|vŽ~t„{ƒ}…{s‰v‡yŽkzn„ƒ~|‡‰qˆ}r“zŠŽ~‰{t‹zƒ‡sr}d……~”i‡‡y‘rˆ~i–„Žatvv€€sqŠ€j‡ˆŠ”t€ƒx“n‡‡„x‹v„Œg}{qƒ}zŠ€†~Ž}’€oyl€z„‚zv‚szo†pm‘…†”tyŠ…Œ€{‡~~xn}~€‹u‡‚„zƒ~s{ƒŠ’‚{x…yr‡w‹†muƒ„oy|‹g‰„€~†„z‰|s€o†…€€y€†‚w€†ƒ†x…}ŠŒˆ|ƒ|€{ƒ‹ˆz†p€€v€u…ˆŽwŒƒ|y|x{}„~„|…€’uwxq…v|x‹ŒŠwv}‚}ˆ‰‚|sš{ˆy‚ƒt}~ƒ‡‰‡v„~w}u†y‰~{v|‡Žˆ|wxu‚ˆ‡q†Žmƒ~{}}ƒtx}mt}s€y„{ˆ}|zŠyr…„zŒ‚~„ˆyq„x„…ƒ…{j‚{{‰}~}rŽ{z†|{‘‹}‚zl„|‡{syu}xxr†}y~|‚ƒ~„ƒ€|€Œ{}‘{‚‹q„{y‰{}‡€…ƒˆ„†‚yƒ{‹xz‹y{zŒ|‡‹ƒ‰|Š‚|}‚vŒ~vxxz€w„xƒŽt}ƒ‰‰ƒ†‚v—zzv~…y†y…~x}ƒ…v~{…{pƒ}r{€p„}{‰‡s‚Œ†‹†{x„vw}x€}t€{}„Œz}ƒx‡€‰z€ƒ‚y‡}|‰t‚|‹…{Œ„‚Žz|y‚zŒ~‰…yz‚x€Œy}‹ƒŒw|‚y…vw‡rˆ|}‚wzx„y|…wy|„ˆ€yz}“„ˆ}yƒ„z‡Œog{y‚††rx‰wˆƒ~}uquzw€u‹…Š{~|xp„ˆ{‡‰…‹}z€„„zvƒux‰ƒ|‚†ƒ€€€†ƒ}~…u|Ž|{xvt}z‰|ƒ€}ƒ‰y|~zxr„zyz|…xŠ€z‰€~ˆƒƒ†€‹y|}y}zx‡u…ˆuŠx|‰€t–}z…}zƒ€t‚f‚€€{‡†|‚{|y‚ƒ†ƒ}‚vzŠv…~~}p}sxˆƒ|…{y€{{~|v}{}zt…~ŽŠy{~x„yw{u†ˆxŠr}vŠsv||‡ƒ„z‰v…q~€|€}xxy‡x‹w‹‚€‡‰}„‹w{}x|„w{‰zŒ~‚}}ˆ‚w‡|~‚pˆz}zxrx}x|ƒy…‚Š‰{…‚††|~ys„||}ƒ€†s‚„z†}~†t‰yt|~s~mxmŒ}‚oŽszŽtŒwŽ‚‚ƒƒ~}wxu}sx|€€ˆ{u†{|…vƒ†zŠy€~{{~|p‰pƒ‘€Ž|{…~x{uyŽ‡{„|{u{‡{…„‰~~‡zz}yƒ~‚ƒv€†|…xwƒxzx}oƒ~Žƒt„ƒu‹’„‹}ƒ‚xz„w…p{…yˆƒy‰„|}zŠu…„†~zxƒlyxr€€|sŒ{•r˜~x‡x…j†q}“y{uvr‘g…te€‰ˆ’~’„v‰€vŽjzo…}x|…†v{…‚xxyq“pu{‚qˆqztˆ{{‚ƒŠ{„qyz‹}…w‡~ux‚Š{~€|t~‡~Šz‰z…}†ƒz}{†„p~…‚ƒ’„~…m|{p~‹‡}uu†p}xyˆn}‡{yŽ€‹ktƒuŒw|xu}yˆww„†xƒ€„z…~Œ‹…†‡t|ƒzu„u|z~‹wŒ‚‡„Œy{…|‚z~q„pzxp‰s€„}†ˆo}•‡wvq‰{o}xu~qˆ|{}‰v†k~t‚Šu}y…‹oo~v…x…‚€„Šu}}ˆ|€qo}p€€ˆ~„„tt}€uˆw}z~€w†ƒƒ‹{‚}}—{ƒ‚o€v{“{„„ƒ|€~onz€‚~vz‚~}|v‡~|Šx|}~{‚ƒ…€‡‡wˆ‰z}„~~ƒ~…€}~…w„…‡}€{|}}~€~ƒ|yƒy†|€~Š„yyzx~€x~vwwsŠ‚|„|x‚‘ˆ†~~…z}y†{ˆ~ƒz‚y‡…ˆ„‰|}|ŒƒŽx}xƒ}t†{ƒ‰…t……qŠ€y~uv~|s„u‚‰vƒ€€ˆˆ~x…}{€s~…wy{rywr~~‡wƒƒ‡‰z‚}{r‡„y‚ut|€gyƒ†‚‹r‚‹~…vx‚z{zt~Šv€r€stzz’†|‚‚}…q‡x‰~|u…z~ˆox}ƒˆ|z}…v‡w…Žzt|€r~ˆtˆxu…ƒ{‡‚~Š”r—vt{‹vˆu^t…ƒ~zŠ|Š…gy…‹{}}‚ƒ‡€‚{‡ˆz‹t’}…vŒt~{s•v€zz€‚uz~€zv‡ƒ‚‹~ˆu‚~wsv„p{r}‡‰{‹u‚…{……~„Š‚v‡wzvxm‚‡|ˆ€yyprr‚|{k‰‹ƒ’o“~…}„{xt‰‡Œ…‚|‹yzykm‰Œƒ…‚}x|xl{y‚‡‚xuŠ{uttw†~Š‡}}w„ƒu†r‰|†zŠ„‡~~xx“yŽƒ„ƒ‡ƒ€vss~„‚‰€‚{}Œj“xy…x|…€‚~u…†~ƒ}Œz|…„‚ƒxx€ˆ…‡~ˆƒ„Š‚‹‹˜z{‡y}z‹Š~”s~znxvƒ~ƒz~‰{‡{x~~tŠ‡yx…‡|rs‡}€ƒ…{‰„t‡ozŒ~uƒz€|x†}}…‚‚‰v•‹x’yw‚}ny~n‹}†v}zˆh•v{—{…Š…}v~€ƒrz~‚……s}„y‡tƒxw‡Š|ˆ~vŽys‰u–vs†s‡‹q”tvƒ‡~Šr|ƒj•zŒ‰{„yxƒ{}}wˆx‘˜w—q‡uˆƒ€|jw…‹q…zbxpzƒy„ƒz‰Žƒšr|p¡†Ž†z‡qŒ•uyvh‘o}ƒ{ƒ‡yŠxyqv}tŒs‚„lryŽ€q‡tuŒuw m€}w”†yŒ}w‡nƒ€z€{}ˆt‰ozˆ‚„uz{mŽ„ˆwv„zˆ†yŽ~„‹€ˆƒwŠwy†r‰Šu…mr|}q}€r†}t„‚ˆvŒ‰x}‚zzvx†v‡wr|”…Žzhu‰ruzf†‡r†v{‚ˆ|n~p†ˆ…u‡~•†‡zsy†‚wƒ{€Žˆ‡…„ˆƒ{yz|{‡q‹€|y†~„„zy|…t†v|„z{‡…y‚}y‡}‹~ƒ}}ƒ~v~†„ƒˆs‚ƒ‡†}‚†„Œ}t‹x„†ƒ‡|zo{zy|u€q‰…}‰y‚t€z|†ƒ’‹xŠzŽz……‡ˆŠtˆwyvn{~ƒ„€„{t…wƒ{€yˆ„{‹l~ƒ{ƒ‹€{…z€}‚ƒz}†{„w~„z‚‰‚‡y€q{‚„{~}‹‹‚y€tƒw~…ƒw†™ƒ~€…Š~qz‚v~z~~mv|z{…n‹Œt|Š€‡€s{m…lwulŒx‚€…†}€†„’„‡e|m€wzxxz~y„~|‡„{’|‚y~ˆ{|…zuƒu}{~|zpŽ‡}€~‹…z„|€‚ˆ…‚…Š{†{~}wŒŽ{{xvƒ†y}xˆyyx}ˆz|tƒƒ}€s‚zt‚…‚yzr‡‡Š€‚{{ƒ{ˆ€…—{Š|u†{o‡€‰’‚y€‡~Ž~|šzˆ€x†x„„lˆn{ƒwzw…z‚q}w„~Œ~vƒo~ƒ}|y~{y€…zzx}}ƒ‹}yu|‡‚‚Œ|‰|x}y{}~txy|ƒ€vu„}}~†ƒ€ŒwŠx€€|zzwsp…‚„xŠy…{‰f„{~x†uŒwrˆsz{|tx‰‡–x‡ƒ~Ž|~|ŽŠv|€‚€ˆ€~px‰tŽ…Œ“€‹Œx}„ty„Ž€‡{v…~„y„€|‡Šƒ‰tƒŒ|{{‚v‹€}‘|ƒ…r„}~‰{‡|}|‚‡v}v|}qƒ}‡~v}~y‡~yy†o€‚Šu‹‰‰ˆ…|Œ|v‚ƒ‚ˆpux}u„{•‰u‹u}}ˆw~xtnƒx„~~|ƒt~xuxy}z‚}„ƒ‹„„‚‚„…‹u’s~{}vt„r‚‰{Šy€z€‹‚h‘}|x‚jxwƒxx†‡‹‡Ž‰wyzv‹z{t‚vƒw~ƒ‡€€}Ž‚ƒ„†zqyˆs‡w„w†}ƒxŠrj~~‡z‰|„ƒ“y{}ps}qmu|€wyv‹”u~u„z{‰Š‡ƒ…t}„u~|}‡‚s„zzz‚€†„‰€…~yxv€…‰‚~{„x|‡|~ƒx|w†‡‰z}}…r€rr‹w‚‹|†~ˆp“}‚…v‚‡{„vmƒ€y}‡|ŒŠ`{ƒi‘Š‡˜u€‘{‹’s‰†x”„Œ†…~su‡p…ƒq‡cyŠwzˆŽz’}y†rqŒkŒ{~‹y|ƒw††x~t†˜ƒ‹Žt}†d“z‚Šuv…jtƒw†sx…Œ}}{‘}Š|r€id€t|‹i}~uƒuyw‚‹|ƒ‡t’…‰l†~€€{yŽ‡}x€y~‹Š”Šqƒ‚rŠ…u‚jnŒ}Œˆ~€vk|‡†p€zz~{Štv|u‰…}†tx†‚‰qˆ|n„vŽ”{ˆvx†……{„u‘|Œsƒ„t‰…xŽhlŽv}Šp…uxd|}ˆ…Š‚}ˆzxvt}…†ƒ„tŒƒƒt„††€f‰~‡v{y}–{wˆˆu{zvu~tt}†ivu‰sƒvz”Ž„†wzˆ€ztvyƒ~}o†x†|ŒŽ€{}‚w|€t€w{}~…}‹rz‹ˆy~ˆ‡~…w‹€~€s€€~t{{}x‰|}u’‚}ƒ‰yzqk‚{Šwˆy…„q{{„zƒpz’qŽz{Ž~…‰xvxz{†u|†ˆ{w„z}m{u…g}}rƒ{‚x‚‡„Ž}’~……‰x|ƒqt|k|~€r…w‘wŽ†‡„{Ž‚ƒyy}z„z{}tˆuy}iŽzxˆ{~ˆ†Š‚‚zƒ~{„zq~vwƒy…†}‚|‡v‚~z~}|€ƒ‚Š€‡‘}’j‚‰…}{v{›x~}n…‹Œr‡{—€}~sr…}‹}}v†}’…yrgy~‹}xl{Š}z|t€p~x|‹twx}sƒxˆŽŠ}‚Šs›t‚vv‚w‡vƒv}„q~…€xuƒv‰‡Š|y‹z‚}…zŠƒ†ƒ‹r~y}†pzx…‰†„v}z†}v†s~j‹y~}”syhm|‚~|‹ƒ~‡Šƒ}}{~~Šr€|†y‡nw‰w‘wyƒy|pmn‹|€u…{…„‡|~|z‡}ƒwŒ…Š‡~|ˆyƒ‚yv„w…wi‹}{€mˆs}uˆ|‡Œ{~€ˆw~x‰v‚„}{m}vˆv‚~zsˆ}ˆwƒxrzn†xs‰‚{x†z€|rƒ‹‚‚ƒvx{…†}sˆs}„n†}ƒw…ˆy‡€~†‚vˆ€u}}}}„ƒ‡}{t|~…ƒƒ}„|x‡‚~€v||}zl}m„‰…v„€w›…„€u†ˆz†meŠ€ƒ€w~…˜†‰ƒƒ‡‰”y‰|Œ}z„ƒwz†~~z€‚‡zy„…|zy„x‡ƒu|ˆv€„t†~ylŠu…}tx†—„Š‚‚„†……~ƒzŽ|}xƒt~y||z|€}€†w…w€z‚wq|u|ƒˆ„„€~qv{Œ‡……„ns‚|€‚~w†‚›„†Ž…{ˆvŠŠ†ƒ‹€v‡|††p{…nŠ‚~‰w€~ƒŒxŠx‹Šu„€~‹„xz€t„x„yƒ’Štˆ|ŒŒnˆ|}ƒ€Šr€u~}z‘}q„{Œz‚†~‘u‚ywzˆ„‰~~€t~r—|…|uy‘„…˜|}y}ƒƒ‚yw‚rxw}…ˆŒ€yzuzƒ‡€Œƒ€€zƒ€t‚ˆ}ƒxvvƒ{„s€‚v‰zzˆ{x}„z…‡|„‚r|„ƒtŠxz„‚‚€{r‚t{‡ˆŒ~“‚ƒ‡‚t‚z{{s}v„†Šxƒu„ƒt€‚ƒ†|x†„iƒyw‡{ƒuz{…~…yyŠt…Œ‡~z|}…n„yƒ†}ƒ‡wtk~Œ‹‡~x‚pvvu€w†pw•Œ‰|‚}}‹Œ|Žr†‚…z‹y€}o‰‚t|ƒyˆs|‚zƒx~†}ˆ€Ž‹zk…y”}‡‚Œ…{‡w…yƒu‡ƒz~|„ƒy„‚x|…w†wwy{|€|…Žvz†~~€‡‰|€}Œ|x†u‹•ŠŠ€…{€‚rw~q{‹††s‡yxlpƒ‚‘r†~i{xƒl|tq~Œv‹€†‚…–w~ƒ‹…ˆ~yqu|‰q|‰{€‡rˆƒ‰€}{ˆxt‡‚}ƒwŽƒ‚u€y€‚Žr†ƒ}mw}t{myvx}Žy…‚ƒ‰‘„‰‚Œ‘‡Œƒƒysxw{ƒŒ}u†‚€„‚y†~z„‚|ƒzxy‹…|‘„‡|‰s‚s€”‡……ƒ|€€…ƒ‚zu|}‚€‚‘y}x||…xmr„|…~y~rl|{‚‡|ˆ~ŒnŠw…‹~{‰€}‡€…Šx€„m‚ƒ~…z~|…Žv€}}~„{yttˆt‚Œt}uj€„‚€wlecƒu~‚{}‰tˆu}qŒswƒ‰f‡{Š‚~qx—Š|ƒ€|xv†—‘‹}tƒ‰Œ|Žš‚}zv{r‚“‡w|Š~†‹˜u|yƒx”…‚o‰mŒ|{wr‚q€‘ˆ¢†{‡€Žw‹yev€tŠwš}uw“Œ|‡wwwpyv‰šˆ‚n†‘Œx{gl‹‹€†€wu„¢z|…r‰…‘~€‹Ÿ}‡‡ƒ‰€lŒpt}Š†”z‹Œ£qu‰‹„„˜q‚|ˆ~„…€’f}p~wƒ|„zr€x€€…‡v…’†ƒŠ~Œ{t€~u†{xƒ|ˆ…|t†x}‚vŠ|‚~v‰„ro€yƒ€†„„“v…{~}u}’‘‹šy€€{t‚†•sktz…€l€wix‚„ŠŒ‹{…ntŒy{‚qŠƒm…o‡i„vyzwŠƒœŽ}y‹…|}xxy~q„‹€…ƒ”z‰v†mŽy}|}…}w‡x€v’‚„~t„‹‚€{~‰„~„z€}Œ‡‹us{ž|{†zt€y„wz‰{w”wƒ‘‡q†{„|Ž‡zh}k…„…‚‚zuƒl„ˆv{~†e~Šƒ€u„zbˆt‡ƒ†~~v…š‡ˆ~|rŒvˆtudt„ˆp}{xˆxfxƒ‚ƒv‘•wƒhˆ}…€z„wsyl|pu€~ˆ}š‚‹uzsˆˆ‡y“…yy‹}}~}Œ„‚x‹Št‡‚…ƒi}c†{…„|vƒu‚¥x†ypˆŽˆ^x…„y‡x|‡g‚\Ž‡ptvv\¢pƒ€Œuˆ‘j ‚“vpŠizŠ^•‚sŒ‡‰|˜‡‡~uƒ††q«o‹†ero|€q{|mŠvŒmˆxr–t‡ˆ‡yv„‚q•nz‰ˆy‘w~w„š‡„ng—v†ˆu†tm‡…uzw|sya‡•tˆ†pŒˆŒsss†“f†Ž€’Ž{uy„ov~~v‚‰x~—‘|ƒyŒ{vpl~x‚l‡Ž|…qŒ~|~†t|€~Œˆ‰˜s€Šw˜~‚‚…}n‡€~snƒq}ˆƒu|€g‡‚ƒ†z‚‹h€tƒ’w‘t™xq‘v‹zs~„‡ŸˆŠ‚Œs†v‡t~z‹{”kfl{x‹|y…z€w‹y…‚q‚u|…orŠ~–ƒƒ‡q‘•Š•–ˆ}…t”ˆmm‰ƒvuŒ}s†‰‡š~ƒrƒ}ˆv‡…‡‘…o€y€~„wwšq‡r~z„{t|}„€›r~„‚Ž“s‰”Š|~|ƒ…tu›|ˆ~€†|€|‹gŠŒo‹n‡~tr€z‡}~‡„ˆz£v‚‚w|}~Š“ny{t‹ƒvƒwŽfŠ‡Š~y…w‹—~’{z†~nrƒr„qw‚{‚{‰~Š‡…‚z}‡oˆxˆ‘x€}w|x‡¢–y‚{w‹rsnrt„zzz{Œw™z|Šƒƒy”‡xjx}€yop|X…n„”p|‹‚sŽ€ˆ‡s‹un‰iŠmsy{‘„q’||“…€‚s{…tpˆ‰yuzŠ†•~~Œ[€{…€w‹‰„†—€ƒzŒ€‚˜}Š„xˆ|w…ws„g„ˆ{tƒ}{‚‰l}xƒzz…‰wuwƒ‚†yyˆ‚‚€zx€‚|„r}‡p}}€‚…s€“‰x„n}…~s‡|tyˆt{y|…h€†Š†€||zlyk…zt€zwu€y…Š{……{€}Š‡~zv{z{}hw‚ƒwŠ‡€‚Šzƒ…zˆ‚|yq‚t}„ƒ|s…|„ˆ|{‰|‰‰jŒ|Šˆyx||€‹t‹|’‡ˆ~‰|ƒˆq†„y‡„x~€rj‹p†s‚‚vŒ{Œ~|~„rŒt‚~„zr|~{ˆz}x|yƒ„…‚{‰u‡}{v~w|ƒ{x€xwˆ‚}~„‰‚~†x|€{znu‚}uŒ~ƒ{ƒux‰Ž‡†{Œ€‚†z„`x~}y||ƒ‰‰u~~……‡z„{‚p€qƒuxz|‚{{v„„ˆ‡Š†ˆf„ƒ~}‚x†z•—~x{‰uo‡ƒ…Šp‡‚Šˆt‰ˆ{~vz}„s„‚}{{xƒy‹†|€}ˆŠ||Œx„v‚€€z|}y†„|—yˆs|x~y~|x„z‰†ˆ…p|tg‰‚ˆ|‚Ž~šy~y~|”|ŽtzŒ†j|xƒŒ…„ƒƒ„‡‚‡{y‚w‡s}orpzyz†zv…Š‚—}„‚…ystv‹~†‰€xv†~€tw}‹…„‹uŒ{†x{‹€w†v•{zd|pˆ‹v†|o€€w”r…ƒnyŠ|†u‚w‚{{ƒs|ƒh||”m€‡vr~hƒpe‰ŽxŽgtxˆˆ{Œ}}xfz…‡zw‚xt‰U}tlžxŽƒq‹w……‡t‚zqŠk’}Še}ty‚}€ˆsn}“šm€py|€‚|z‰‡w‰rˆwŠz‡}Œ}”n…ykˆwˆh‚‰p‚‘rŒrp‰|{x‹€u{y|ijrn†‘r‹xŠ‚†x‡y‹ysv€u™y†|‘‡‡‰y†t{d„{…zˆy„Ž‡„{{‚yx}‹‡}–w…w{|wv}‹‰ˆ„{Š~ys~…u„vƒ‚{{‰y~{vŠ‰€‰ƒ‰}„i{†‚‰†ƒ~zy………vŽ•…{xu~wyfo€‡‰ˆy~‹Œ‚…sˆ~ˆ|yzt‚n„|y}‘€mˆlwŒˆ„ƒ…ˆ|lƒ|€‹o{rˆ‹qt†‹‰ƒƒwŽ‰‰z€|ƒ‘m~{k‰}ƒ|ƒ{„†„w{†ŒzŒsxzt…orvq€wƒ{}tƒ€ƒ‘„‡ˆyƒxsylv|ƒz‚{‹xo}}Šˆ€ˆ‡Œw•…tz{s~qwm{u€‡„ˆ{‰nk†z}x„€vxno‡x{‚}Žw„soˆu‡}{“ˆ‡wv~y‚fu{|„‡„}€y…x†}Œ‚}~y‡wƒmy~w}„zˆƒ}u€…sƒ~„zŒ‚~…xˆ„„y•x‰ˆw‡~|ƒxo†„{†~†Œp|r|€z€ˆ…w}gl€†ƒŠ|—†|€}|y€Šw‰{}Š‡‚|€‰ˆ€}}{{}„xx}z‰‰€„†‹„{{w{„„…yƒ‚{{ƒt‚ˆw{„ƒzˆj‚†‡ƒ„ˆt„‰mƒƒ{{{u‚‰‰~~‚‚‡Œw€~„‡uvƒyhx|}{…Šsƒ‚‚{z~ƒd{}}‰t}…‰†‡€‰ˆy‰}~yˆz‡…{…„…‰x}ˆn~}“zu}‚}‚y†Žƒ‰ƒ…qq~{vy€uˆ“‡“†v‰v|ƒz’‚zwŠ‚ƒqq}‡‚ˆzˆ›ˆ‚…vƒ~v…x‹‡†…‚‚€‘u„‹uŠ{‰r‹‚„owov}v†z~{€€‡‡‚‹{}‡~€tˆz†h€~zŠzq†o…n{…‰‡lu’{~w{s…ƒwˆlu~‰z……Ÿƒ|ƒ~{ˆytz}‚x}‡{ƒz‰†‰Œ|ˆ‡Š~…z€ƒ~}yƒpŠƒ‰‰zzqœ“‡›…z}qr„yw”{†ƒ‚~Œv{‚ˆ…t‡x|rŠx…sxs{z€€ƒzˆ‰ˆr~z|y…y‚xyy€‚xu{r€|d|†€Ž|v{„}–{y‚‹‚Šf|€ƒwŠx€‚†x{€Œ…‰p……{{…‡z‘€}{€†~k‰u……€‡€ƒ}Œq”{nw~s€ q|z†{}Šv€uy€zw}}yy|z~€ƒ‚†w‚m‡„~{„‡ƒƒ|~}ˆ€†…u~{}…|w†‚‚{€Ž…~y|„v€vƒtr†|y{{v„~pu~„ƒ„v~m„€~z~‡}‚‚i~‰~|Š††‰y€—v‡…x‡q‡|‰|t€ƒ…~“usxs~xƒ‡‚Š{w‘z‡|††“€…ii‚}}{uŠpzw}‹‰y‰ƒ‚€‚ƒ|„‡‡s‚zr{€ƒywx~{Š~}’{z}kpz{zŽvuyŽ~uƒŽŒ„w€~zy‰x“szŒ€~Œjƒmzƒ|jŠ†|‹|}~v‡~xƒq€~Žy•}†rƒw†ŽŒ}‚vƒƒ‡|y„p‹y|…„|‹uƒzq}…w~}wƒƒ}w~ƒƒ‚rŠs€ƒu…~‚y|€‚y‡ƒƒ‰}~†y{{w}x{‚v‚€{‘ƒ~zv~~„~“Šw‹ƒ|‰ˆxomuy‡z‹t{…v†v}v†„†q€ˆ{v{|q‚{y†}‰Š~x„u~xyuzxx€w~ƒŒy‰ˆ}‰~x{uqw‚v‚zw€wt‹v|€|zx„‰„|r~x‚n‡|f~w‚„r€y||•€ƒ€…‚ƒ€l‚k~‡}‡q€yŠnŒ€~{vŠƒ„t‰v‚~{‚{}ywtƒ|€w‰~‚{ƒ…|y†yt‚„‰w|y‚l‘v‹z‡ƒ„€ƒz‚z‹ƒŠv}…u–|{€||}{|v‡‹‹v„{ƒyŠws|z~Œo†€s~~l„„ˆ‡}{‚„lƒ‡uƒ‡|zxq…|‡‡‚‡u†ˆ†‚v†„v’ˆuŠ~|€…|‰xw‰w……w{€r~€ˆx€„„†o…~}Šy‡vz~|{„l…|‹vzƒj…t~ˆ’‡‘€‚…‡{€niy|€w~‡w€ydz{~}„}}‘„…~~|u{€a‰{ƒƒyzw‘}‚‚~Š}‡‚…u~}s~wzzz|ƒ{…vr€x‚†t„‡‹„‹ƒrq|yyx„t—Œ€x€ˆƒ…€ŽŠ‚„{‡‡†wŽt“~x}ƒ‘}w~ny„|{x|vor„|…|……yy…Œ|ƒ‹w…ŒtŽ„Š||‰|ƒ†|z‰s}Œ}„w…v{t‘}‘ƒu‡|zwyz|†n…v|†{{‚ˆ}€u}ƒ{€z‰€†ˆ}ŠtsjŒ‚Šˆp{x{uƒ}‚—Žƒ‹|€z„dŽ|{€{|{o~yŠ„Ž„zv‰p†€z„v‰|€‚}vv‡€}…}‚€„ƒ‚|ƒzyv‡|}{|~tv„y„ƒ{tˆƒƒˆ…‚„~w‘€Š†xƒ{{—e{o†Šx}ƒ{‹|‡h{†€~wŒ~…xŒˆ~o‡€„uz—xx†q}„}€‚{’€ƒ~}„uwvƒ|ˆ~}†}‰tty}oŒ†€†q†€…y~Š{y|„cŽts“{‹z†|Žlyyj‡w‚yˆ~wq“qutŠƒŒ`~yoƒ|v‚qmu‹„’€Žr|„l‘xˆvo‹rŠw}}hŠ„zŒ€y…u‡…„{‚~v…|‚r|‹rmm|}„‚‰yw…v›ƒ…ru€d~|u}xp‚u‚–i—vzŒyŽr~t`”}€Šprgˆbx…{|‰„~†‰Žz€†kŒ‹ˆ„y‹…|†g~†s…¤w|ŒxŽŽ|‚siŠt‡|uˆtx|q|sŽ~yŠ—kŒs“|ƒxt‰|~†ƒ‚‡qƒw•x‚€€‚q‰tŒy{lx}„xs„z}Š›|~†…—‰€…–„{ƒzx€ƒ†pygvt~{‡r‚zt„„~w|‰ƒ|s…‚{‚{‡ƒ{ƒ‹~‚…{ƒˆ{}ƒ€zƒyw‰~€†~„y~ƒ€yƒ|„†€w‚ˆ‰‰ƒ~„„ˆ‰|}pƒ„u}‡k†€…€Œ~|n‡”Ž…zyz‡vo‹rƒ‚‡|„ˆz…rqƒu~sŒŒ‹€€w~q‡v|“q‡zz…Œu…t}ƒn†v†|}ƒ}}~zz‡‰{~{}ˆ}ƒyyrz‚v‰„zz†„x„€„“y‚~{‚z}|††{€}y‚‹ƒŠ{„…zyv}z„yƒ{Žƒ€z€™„}y}Š{|w…ƒ~~‚v|w|y}s}|~}|†ƒƒŽ…†|x‰y|w~v€ƒ…x}~…v†}ˆ~}€ƒ`“xy~~rv‡z…‡ƒ†uq€˜{}||ƒ†x~‰‚zwŒ|ˆ‚|Œwšw…‹~ƒuv˜q~}w€hzul‚w††…Œu…v~wxˆn|zz}‚…l…uz|‚x€x{„€xƒ~znvo|u€|{~}‹|…xƒzƒv}{‡~…ywz„‘Š€€}{‚ˆ‡ƒ‡~vw‰|€o„y‡~”wyr€‰…~y†Œvx}t†z{ƒ‰tujpƒwuxx‰z‰}|‡…ƒyqŠw‚wyu~~‰xˆs€{Œz~„z{|ƒ‚}~}{€zy„y‹ƒ‰ˆ|„„‡Š‰“ƒs‚~yŠs‚|†‰…ƒy‚ƒrŽur–zˆ€p€xn‰†‡}x‹z‰wƒr~}|~†ˆ……ƒ~„|ƒ}x’|‹‰„z‚†qˆvqu}†t…Š‡}~~€|s†z}ƒˆ€zoˆsu€}†xƒ‡}‰„Š{z‡~€‚i€~„~„uƒˆuu{†{ƒ„wƒ‡‡…„|~y}y{r{ƒƒ‰„„€~~{‡}†~„z€…‹}}„}†ˆv‡~yx‚ov†vˆ|ƒ†}x…w~|‹ˆz„x„ƒ{~|r‡v„{{ƒ‰ˆ|‚”w}‹wŒx}ˆtox†€ww}‘‚…{‚u„~{Šˆ„q}kvƒr|}xpƒ†v„‰†“ƒz~z€oŒ‚yƒvˆ‚}†~„„…‚yŒ€ˆ…|w|oun„y|ƒr}}…}|Œ‰x’‚z‚•{ƒ{|wj‚|€s’{„‡{z‚ˆ{‚‚}‡|ŠŒƒq}{ƒm‚}„ƒ„”‚„tz†ˆ†~{t{ƒy€ˆz}vyzx€ƒz{€‰Œƒ‰€wyƒ€‰‰€……Š†zu€q€‚‹~„€€~wyŽ‚†‚†‡o€~xx}ƒ‚~‚}t€y‡…‚Œ~t‰~†xu{g}|}‹zw„u‡}„s‡‚…uŠr€z|}}y€‹zˆr€~‚…}…€~zŠ€zt~’}‚wu‚…s~z|—|‡„{’yˆ}}}rxqpo…‡y‰z†ƒ†vpˆxŒ|Œ€‚zrqsnwwƒw„†€“‚Šzw…|‚a„{ynyvŽz~v‰yˆ…y…‰†‚{}‡x…w‚€v{€‚€ƒv€„ƒ}†‰|~zx€xˆz…€ˆ}„}z~zy†pŠ‚}‰xƒ‘Œzˆ~{}„wz~svƒywŒo{|joŠ‹„‚‚w‚‡e†‹Ž~‚‹€y{vƒqi|Ž{ˆy€|‚rnŽ‰ƒ†Ž‰{wv}vuzy‡†yŽw‰}€s}tˆ|„ˆw}}vzƒ|yvvz„}Œpt~ˆ‡…€‡{’‚ƒƒyz…}|†jŒ|~‹ƒ„†yƒwŒˆ~†{}xƒ†{ƒzw‡q„ŒŠx‚‰€„…‚„†wy†vk‚ƒyz}‹‹€…x~„z†ƒ~†{vƒ€r{w‡‚ˆ|…„‹Œzs‰z}ƒxq‚„w„{||zvyƒywˆŒ‡ˆ{y†‡•xr€|s†vzhŒuˆƒ}†‹{Œ‰yt}ƒ‡g‘oz|{||Œ{x‚„‚ƒ…}‹u‚…g„yw}‡|„Œ€}z„ƒ†€{†ˆ}‡{{zˆ}‚‚yŒ‡|‚{s}…}‚}uŠ~‰}}xv}}˜Œ~~ƒ„Šrz~q{†~{€ƒ‡€~ir“xŒ{€z~‘z€s‚€{Š‹|Ž„t†|w‚}z†„…‰z‡†‚{m|‚x~€Šs~}uz…w~‰{•ŠŽy€‚‚yx|x†Ž|v}t…‚€mo|‚z}uŠ‚zuyzƒ„‚~qy„t„}‡ƒ|ˆx…z{y€w~|}‡pŠ‰{{„v’zŠy€~x‰u|†}‡…vˆ…‚w…~w{‰}~‚||~‚p}zƒƒ}‹yƒyt†}€€…t‡~l‚rz}txx{€…u„†z‰‡zŠ…†ˆ|{}{wr|ƒdz~~y‡~„„{‚‰€„|ŒvprŠ‹…ˆxv}„|sŠnzy…}…‰‰†s~}rwws‚}|}†}|z„Šv‡~|xtzyŠ|{††€Œƒ}}ˆv‚y|}…w‰r‰„„|w{{Œ„ƒ‚wŒ€ˆ„~ˆ…†mx…‚„ƒrmzvs•v‡‚~~„‚†z‹ƒ{t„}‡u€€†‚€‚~‚‘ƒ‡„†~‡…}s‚u‹|s||z‰€t„w‡ƒ…xyz’~†ƒ†wk|v‚yƒxu’p…m~~o’ƒlu…€…„†‚}|{„oƒqŒ‚„u‡zq‡}š…™p‹‚w‡‰mŠy…†€z€„}nŠu‡}‹ƒ€m‚‡Š~mq~b•ˆwŽxw~z}…j‡v}x{|z‹|{‰oƒqmŽ‡q‹kŒ}”˜uz}m‡„…‹‰}‚ˆ{{Œx„wf„‡Œu{}j„Œk‰xqŒ{}ƒmmlv|‡w‚…tq‘~ˆp|‡v—pr}……†p‡pŒ}z}wu‰~w†x~ˆ|‘€€”q~vz„~vzz}€ƒŠq{osƒ|‡€€……~w…‡}ƒquvŠ{{z‰w‰–|‘‘}Š~€†€~Šov„ƒ‚z„w…q„€…}›zˆƒ~‚x†yy‚†xˆwtˆŠˆ–Žˆ{yp‚y~}}Šƒo‰y‚‚‚w…y‚‰ƒ…ƒ€ƒ…~}Žvs„{€…v~|jv‚q€wo”~€uq{‡…r€yy|€}‡z~‹|“tƒˆ‹|‚‹|†‰Œ‡†‡|z~qxy€ŠŒx|ŽzŒty~w‚x†…‚|{o…t…‚v‚‡ŒŒ|…†z„‡y|€‚}†u}tƒvƒvŠx€‘‡‚}}‰}„„ypŽ~€€|}ƒx‹y|“|‚‚…~s‡w‹uy}}Œxˆ}‚~€{†ˆ‚{zˆŒˆx‡……z…zt}€‚o‚ŠŒƒ}z‹v…‹~„€x}zrzqˆ„|{p…z€w„~z}z~su|}}…wx‹u‘}~ˆvuyvpo†…ƒ‰‘’~z„|…†uŒ~‡w…†t}k†ˆ…€ƒ€|wŠŠ~†|}„‚{}‚‚x}“‹„ps{†}v‹{vry‚zŒxx€y|}„qrˆw‰}xxz}€o|z|}„xv{y•|„}Œ…yz”|Š„€‚x†x‹ˆƒ~‰y‚s‘p„v}€‘}„uws{}|€t„{ˆ…„ƒ”}{†Š~ƒr‚{}t‚‰s…{z’v€„††„zƒx}†‚v~|‚~w|‡{…„~‡€‚ƒ€ˆy†z~…‡r™sx~†ƒ}†~‰•…†~w}|u‰ˆ†yt…qŽ{‡pyŠ{€{¦€zrt€…ktŠ|ˆu…††‹‡Œ‡‚w‡||sj‚z€Š{ƒz€Žq†€‡x…wwx‚||~w}y‚Š„‹œ{‡|†‚y„x„qƒ{~„s~s}rrv~‡‹tš…ˆty€m‚{…ƒn„z‡s…‰~~|‘oŒ~†„ouˆwn}€ƒ„m}~‰‰‚{‰|€…~ƒŽs‚y‚yuzzm}{‚w…ys|}}†||}„t…ƒ…€|†Š~‘”{ƒ…t}…†ˆy„z€zŒtw‚‡y‚ty…s}w|p{{Œ|ˆw|x~€ƒ‡„Š€r…„€€ƒx€|ƒqpv|{‡‹‰ury|}‚zquŠ|„r|~‹|ƒq€‚“o…{v{vq‡‹„†vv€ˆ‡~…y|‰ƒˆyƒƒ~‹€u†‡x‰{r„y~{tˆs‚ƒuˆz…Šˆu…zƒŠ|…‚‘Š€†€€zv‡y€z|~…uŽ€~„sv‚{Ž}‡€~‡}„|Œsvt|‰v{vx‰†nˆƒlŒ…h‹u‡v‹“w‚q‰|r‚ˆp‰rrŒ’†‘syŒy¥t’}p‚pŠŠq–qxu…ˆˆy„~††ˆ{v|h‰s€zoƒm‡„{—tˆn„w‚˜}t‹tz‚vŠoƒ†pŠxy{‚ŠxvŽm™ƒ~zx„riwvw‰†|‚yŒx†Š…}‚……Œw‰{pŽd}yŽp‚v‹…ƒ™{x…zˆx~{€„‡‡x‹ou~r’~Œƒ€„|}‡~y‰p…{y„ƒs‚t}…|{‚}„…€‚wp}oz|s{x‹w„y‡xy…|€{‡~vx…†z‚‰x€”†‚zvŽ„uŠk—o€ƒ{‚yiˆ‹Ž~€xvy~z‚xnw€x|xˆˆu~~}ƒ†t|ƒ}„v€€w„wŠ{Œ~„†„‚ƒ}y‰wƒz…ƒƒ|{„}{t{z{{ƒzx‚w™zv|u{vt†}e}up†ƒ}ƒq‚“xŠ…}‹z|†s‰uˆ„v‚v|}l‰€v€qv~{‘„x€vz{€ywqwz~ƒ}u}…‚†Š}‚{€~~…€ƒr{o|y|ˆ‡pz…}xŠyzz‡„|‡‘w„vrx~†x~ƒ{‰‹—„–|‚€~—{€y~‰y{ƒ|u‚€–‰€‚†‰†{„t…u†~‚y|q‡~}}z~…u†Œ‡Š{Ž~y{~pozyƒ†n}‚Ž‰ƒ˜‰ˆuŽ†z}|}yp|s‰xƒ‰y‡€r‹t‚€Šy†|†y„o{{r~sŠ~€}m“€zŒz{~uŒ€{Šƒ~ƒy„Œ…z‡z‹‚‚sƒžm‡xq||z{Š’t„z„y{}ury~ˆ‚t‚q‚‡ƒ„|x‰‚†€€ƒ€ƒt‹{‡}“€~‚q‰zw…xƒ€}mŠ|}€{|„}‚oƒƒ‚‹|€~„ˆ‚ƒo‡wƒ‡‚Žxs‚~~|~ƒz†„z‚q}ƒ|‚€…†z„…uy†ˆŠx€‹pˆyƒ{j‹~‚Œy‡€‹Œ‰„~|w‰l}s€vw‚ƒ}€}u{ƒ‹}}‚wŽ~zhtz„p~€{|zw€€„‡||ƒˆy‰{‚zvˆl|z}€{‚qˆqƒ€…„‰yssm€ƒ{ywŠŒ|}q„yŠvŒ„‚‚x„w{“r‡ys…y}z…€–‡€†…zzrz„˜•x}y†„~Œtf~zy€€uwwoqus~|€wxr‚„~ƒzy†Š€Žˆkxy~‚‰‚ƒ}Ž„Št€szŒ~m{‚~|yŒ}{ƒy€Œx{y~|…‰‚‰y‚‘ˆ€“x‚‡‡†‚‡w|kq~tyˆ}‚Œ–ƒ’‚~p—u‹fŽzvznqtzrlu…}€•‘†€yƒ†~s…}}}kŠxƒ‚€‹y‚††‡|ƒ‚…|uŽzˆ{l€t|zxwˆt†„}„|wzzvŠtƒu†y{„sŽs‡zzŽ{|‰†}’Šyœqsp†ˆ…Šyu‡z‚|ˆoŠŠy’‚}Œxy|‚“[lxfƒ‚o…z„…t€†v‡xŒ|}~xx{j||Ž{‰ƒ~ši‚s€‹zŠ{z†‚‡d‡sx‚v{ƒ†yŒƒ‚p€Œiš…ŒrvŠyˆwƒ{u{ˆ}Šw‚„€ƒŽt€}u–x‡šs}‡lŽ†v‚„yz‰‰„‹{„t‹„}Šrr‡rƒˆm„{d”†‰™vp‰|Œ’vŒƒl…yƒ|x~ˆ„|ˆu†r€zhupŽ…{‹y{voƒ€vˆ}‚—zƒo‚{„„ˆyxuˆtyqrxŠ„u€€‡|ƒƒ‚‰~{zu‚ywu…~…r~y~r|ˆx{ƒw~Š†|„†~{€v~xŠ“x‡|s…‹Ž„€~ƒvwt{„{zs‹†‚~€~‚}l„|z~}…~†„†y|y€}{‡†rˆ†}ƒ†q‰ˆˆ‰„x€z„„vƒ‡~|v……‰‚‹y~†…€yx…|q‡u‰xzƒ~{ƒƒ„ˆp‡}‚ƒ{}~~‡ƒ~x}|ˆ†€…ˆ|‡†zŒ~„ƒx‡wp~ƒ|z}wŒ{‡~‚€wzŒ†zv{yŽmn~„…wƒy‘j‚‹{‰‚…Ž…}y{ƒ~~}‚|t‰~‰…wzu{~†‰‰…‚‚{†{|rsƒ|~x|{p‡n€ŒyŠ‚z|r€ˆy„†~…€‹}}ˆ…ˆ‚„~uvƒx…v†ƒtzqz…ƒt}ˆ€~p…}ƒ‰}n}x‡v‰‹‚‚nvx|zx{€ƒnˆm€€zuz€„ƒ…Ž„{€€s„{w~x}†„u‚€v’}„†‚…z‡„u~ƒ~~v‹o{|†ƒ…}†Šˆ|†„‚v„{z€ƒ}…‰w~~Žyz{†{~vy‰v|~„i‡}tˆ{‚…Œv‰‘tz‚|{}”t|nsx†~‚yuww…‹„{ƒ„p€xƒ…t†{x}|~}s‚‡~„v~p‚}„‹‰‰…Š†Ž„ƒr†x|†Š~„xˆ~‚„}~…u††|~Ž†€ƒlu|~‡„y|†qr’{{„‡„w„‡y“‚xˆxƒt}€‡‹xv}Šy‹ˆ€‹”x‚ƒ€|}|ˆo}€zˆtt‡{„‘‰ƒ†u†Š“t|…xprrwŒ‡Šv}}{{x‡†|x†‚‚~u„{€…uxy}ƒ†„†x}ˆ}€€~ˆv€t|vs‹sˆ|€r|}‰‡ƒ„zp€…wv„rz†‹ˆ‚†‹†„~ˆ‡~~…{zˆpx~ovx‚€„‡‹ˆˆ{„{xƒoŒ‡††„zw~ƒykƒww€z~z‡}}ƒ€|wq}wp”g~ƒ{‰…zzŒ‰€‹yŽŠzs}s}|z~€|~}z‚€~x„~„€„{…‡|€z|wy{„vv~…‹‡|‚~†rˆy„p†‹{}s…}‚z}ƒwŽy‹…€~~„„z‰…‚}y{€}Œ€€€‡lƒ„…}{z‡z~zy†|Š}wkŒ…‡xz…t€ƒ‹Ž€||…xŠ™~t‡xx‡v“j„ywtv‰|…quy‚‡q‰|…ˆsz\„ƒ{w‘}ˆpavzt}„ƒssl‚ƒƒŒx…nz~|Ž‹€}‰j€u”¥wv„x{‘q€”€†‡ƒh‚r›xkte‡u€€yz„k|ypyn}|€nˆ‚}Œ‡Š€kx~~ˆx†p}”ƒŒ†u‚‚‡{…p|an†s}…z|kˆ‡}~|vˆ…w‹v„q†„x€ho|‚}~Œ‰‹Š‚ˆ†•|‹ƒz‡”…„m’n‰}~{‚…ƒ~‰‡Žyuwqq€ˆys…ƒntz–vƒ{~Ž‚|€}‡‰Œuvwsu’vœƒŠ~Žw~‚wœd|†|‡›oig„v„„ƒsŸ‡t‚||ƒzˆ{‚W|„y€tx{…“‰ˆ‡o€}{€‚‡s†{ˆyŒ}‚dx{ƒ|w”}€™€‹pzƒzqj|s€Žˆ†Šymq‹{{p‘Ž{vn||rd‘†…xxŽ`mm{Œ{xsz¡s§„n}~zxx…x§z}‘€…}‚„orv‹}{‡‰v‹Šqt|q€y‚ƒpnq…wŒrvˆƒ}yu|Š‰ƒ~‡‚ƒ„•s…t‰‰‹~†|ƒ†w†€•}lv{uƒ„x‘†ˆv†~uy…~mn‚€–‰‚ˆŠ{rv€„ym‹~yŒrŒ…y‰|‚…~œz…x†x„„n{š‡…†€ƒ†‰{ƒˆ†s…|†u€†}†y}}…|{Š~wom|…y„v}qm…m}†w†o‰|{ƒ|{}{~r~zˆŠƒv’…†‚vŠy‚v„~ˆqwxs‹rvoyzx}q^‹‚€…ƒ|žŒ†‡mˆ|‡‚xiqz~‡…ƒ}•jy}tŒˆvy|ytƒ•lx~ˆo„’‰~evp‰ƒt{xo~z“‡|~z~zŠ‚y‰{€‚…ŠŽ€Šs}vrp…|{kx{ƒxs~’}„yŠ{›ˆ‹{•Šqwn†jzzzm|Š†“’†€Ž~‡{„}u~q€~flƒˆ}}x‰€‘š€„†s…{sƒq t‚z‰v~…ns|‚‡„|ƒ}}’|‡Œtxƒ„w‹sˆa†~‚~„~~ƒg}aŠ}…†“zz…_‚€ŒyŒ€~‰j{‚Ž…Žƒ}ˆˆo‘v…wzu‡utzu‹zŠ¦||yy‡xvŒ~wpr†}Xsl{‘€…{y”y‹|€quvqxus“†~}|w}‚”‚o‚‹„~wƒdk„‚~v‚Šp‚p…‹{w‚v…„te†w†’z€~t“‹€}…‚‘z€‹~~n}v’z„€~xqvtxxg|y‚}e‹{ex}…€…{‹€yorm‡vru{g‹ŒvŠˆrŠ}‹yq‡n}k‹|c~~}}‡uvtxšr—ny…Œp…‡q`y‚ˆ|x…z‡–z…t~zu‹}bzˆ‚‡kƒzy‡r•ƒqƒ~y—q”zŽ‚›‰y’o„žp“†ˆr…€’zƒ{knr~œyƒ€€‹’fuƒ„zˆ†d„“jšl”‰x†~g¡~‘“k|…o†Œy†‡q}‰‰€„}ŽoŽƒ{‰wls…’„€vˆ‹†…ztœŒ”‡}y„q‡~™q{~Šu€k—{€’€|‰m›Œl…uj‡‹nŽv‚ƒƒ‘‚s’n”{†Œ}€{g†ˆsŒtpv•™t††Š‰||jˆkŽu€‡x}l‰‚|…Œuu”p’r—r€‹{{„eoŽs†{Žmw†€z{y‹‹y“urxyy‡‹…w‚u…‡{xy‡„}‡f€}‰…|t|Œn||z‹~ˆ“zp†p{‹}}‹e‰Šxzƒ~ˆmw€t”x‚~‡ƒz‰xzmuww…‚x„€„€„tpo}}„†~‰xzŠ|yu…zyv|‚p{†w…{—‹~„‘€q}n€|yu„ptz’{‚wŠwzwzvtsŠ}„Š‰„txp…wyqy}x‘|†‚‡„w‰z‹jŠx|zz}‚v„€wŠŒy‹}|…xˆ…xz‚yŠsw‚€€„|‚†x‰{}‡„„Ž„|€~{„}‚‚†€~ƒt~‡q{|~x~ˆŒyŽs€t{rzqq„„q‡r†xl‰}}ƒ‚‡}{w–ƒ}‚{…zmƒ’‹Œ‰ƒ„‚‡~†……uz}‚ˆ{‚”ƒw…u€‹}€{~x‡|€Œizƒ}‚{x‹‰‚„~~t†szk~€tŠ}ˆ‰€”Ž‡‘z€us„y‚rƒ{yŠƒ†ƒŠr…{‚yy…{}suwuˆ\Šr”w~y’f‰†wŠ–…zs†qŠ}mttr~|m‘‚q†{Ž~€qˆoyt{ƒ}~wzxww‹s|ˆ€€€{‚ˆr‹x{~‚€z…w†„€‰v‡€‚poƒ}†Š…uƒ€|u~~ƒ‹q†‡†‚}ysƒ~uˆ‡„ˆ“z€‰Žƒrxz††…k|‚{†zŽ“h‰„~‹zŒkp‡r„†„{ƒ„s|‚_{~o‚‡vr‰w†}y|}ƒ‹u‹‚}‡qwn†‚}ƒ€ƒ…†{‰‡xŒ„{ˆl‹€ƒ†r€‚mˆs}‰zyƒy€‰z|”z‰xuƒzy€nw|z„‡{{~Ž‹‰Œˆ‚…†ƒ|{ŒyŠ€t„€…ƒ|r‚pw€yŠ}|Œzh…}…rjˆ‚x}ˆxm~”Š†{„‚}‡‡‘Ž€tt‹…}‰y}}‡€€‚v…€ƒ}„‚{€}„‚~…z~uŒ„‚zƒzˆ}|wv~€{ŠtŒx‡‡„z‡€}{†z}ƒy‹z‘tyŒ‡w‡|s{†„„ƒ|†|uy‹Žƒ‡ƒ…u‚u}vhq{Žs|wŒ’y{uz‹€’oq‡r„zxl„uwtwq‚‹Š~}ywy„€|…Š~|€x{„|z…ˆ|–}Žx†~‚‰~xup|zˆxzˆvy‡…†ˆ‚Š~y{xz„€wt}ˆv†ƒw–……†}ˆƒ†Šp‚ˆtƒuylˆx||}}‚w‚hn”o’Šs€zy‘tw‡i„œn†‰ƒ‰u•Œor~wuvŒlst…~|…s•qŽ‡{Œx~‹v‚}~u†€Švwxtˆ~‰…‚~pˆ‚s‰jw†y’{~…zˆuqysŠy†~xƒ{€”ˆz‹ps‘p”Šz‰y„€gŒrx‰qz‡rxyŠyŠ{ƒ{Œ}Žh„‰zz‡c}}pŒŠ|‹mŒ‹‚†‰}{ƒy—pwˆyx~p‰‰iƒnw‹|ŽŒ}ˆuo‰}‚‰u~‚r‰z~€urwr‚…z‡t…‹yŒwƒƒmŒˆ{~st~yn~‚{yzt‰v„‚‰|Œ|—Š€y}rx€wƒ‹s€y…„Œt~{}…y‚{}‡†Šnrw„‚†~y’…ˆ€|†y‡„ƒy€y|…€Št€zrz€}ƒ€qƒ{~~‰x†}†„…qp~x{{t‹z{~}xtxw„~{zzs|zƒ~wv†znzƒ{‡z|„}w{zs}ƒ‚y‰x„u~uup–|x„w}‹Š~sqqˆxyynŠwvkm{„z{}ƒ‡x†ƒz}…v‚ƒtpwux†z…}„z‰~‹~~zy…ƒ…}†rˆvzrr}z|||}Š€Œu†Š~…†Ž}Œszˆz‡zswxq|{r…ƒ~ƒ‚†Š}ƒ„}‰{{|Š~}n‚z~}t{q†m„‡~‹ˆwŠz—~Š€{‡€xzŒx…}~yƒ„ˆyw}qzz~o…‚~ƒ€€…|}„€|‚Š‚ˆr„z}ƒw„}‡…t{}‚twyy•y|ƒt„v‡v{„„ƒ‚ww~„~}‡tzƒˆz~v~|‹‚‚€s‚}‚Žw‘~Œvl}‚‚z‚{‚…Œ…’~x‚†~†xƒwu~}ty|uu|uuv€€{…~…‰‡ƒƒ‡q{„w}k~€|†r{q„n‚}zŠƒƒ…‚}svpwo„}†u~€‘‹|‡{Ž}Œ€tr†y}|t}‚p€t€‚€}€p–ƒxŠ~|‚nxy†y}qups…up~ƒ†tˆˆ‡‡ywŽs†{‡y‰|u‚z}ˆn…†•„{ˆŒpƒ~t~|{t‚qƒ}ƒz{z}€}…‡‡|‹‘Œqxƒ~tt†wƒrz…|„wŒn|{u€„ƒ‚ˆ‹z†{xv}pyqŠynƒ~„|†{xv’‡z‰{|‡uƒ}nz{‚ƒ}€zt‹~~~|{€‡|yŠiw‚„~z„„ˆp‚nzy~ƒ€v…ˆˆ“s}~„€y|r€‡z…zsx‡s‚{†t|}~x„{‹‡}€~††‚|ˆqt†„‡ywƒ‡„s‚{}~|yy†–yƒ{‚‡v‰…†yˆt|‰‚itvrƒz~Œ~…ƒu{rwut…}’‡„zƒ{~yŠ€xy€{‚{‰|…€}€wy~ˆ†‰…†~€†ˆ…~‡{‰|}}ˆ}xˆ{Œ{z|…z|‰nŠ€†zw…ƒ‘wŒ‹y…”}‰yƒ€y…ƒw‡x€‚‹|ˆy~Šƒ||txƒ~~xzzv{‡„‚–y|xsƒ}zxˆzx‰}„u‚{|sŒw‡{q”wƒ}twh‚ƒw–‹~yŒ†}ŠynŽsŠ˜m…€e˜zyt~‚{‘~€ƒx†††Š„}~rs…p€ypŠy‰‰|‹}|‰ŒoŠv„x‰†uwŠr‚w‚quƒ{‡†t‹|x‹€‚wv‡i‡|y€vott~†y€‰}‡}vŽyw€{ˆŽk‚„m…~‘yw{‚ƒx~{p€p‚”v†{x€s‹~y€v}Šˆp„]o…t‹uŠ|„‡†x†{‹€u…y‰y~}o˜~ƒŒe‘ˆp‚s‹rx~s|Œw€n|‚Ž|yt€y{Š|ƒ}g}y†~tu|–‚u{u†}ˆ‡z…€…†o‡ƒz‹|x€{z}xz„ƒxƒw~|voux†‰v~€|‚|y~}‡€„}€…€„„ƒ‘|{ƒ}{ˆ}†‹Š‰{…ƒ„‹…Œyz…‰~†}}„~‡ˆƒ}ƒƒz|ƒx‡€…~}y‡…r}€„‚€„z{}ˆ‚{yŠzy†~oƒ~ƒ„ˆq}€wzy„{~ˆ€v„j†„x€|‰z‹tx‚†„}xy~vƒt„uzzw{‡|‹{€ƒ‹Š~~ˆo‹‚|zxwxu‚m…~…‰w„ƒƒzz„……‚}†v‚w}ƒny||{„‡€ŽŠŒˆ€…‹|‡‚|‚}~x‡tƒo{ti†††‡Ž‘Œ€n}x€rvƒuƒ’}z€‚†ru}xŒ‰}Šm‰x„y~…}ƒt„}ˆ~ƒ‹€†ˆk‰xx‹y~‚yx†quˆx„ˆ„xŒwŠ‚rx€{zz}€~€ƒvŽvŠr‚‡~|‰zƒˆ‰m}}‚u~„}{†ƒyƒ†y†…xƒx‚‡ˆ{„w{~w}†{„w}ˆ‚z…{„|ƒwuŠzsym€xx}y{ƒ‚}Šc|ukxƒw}ˆt{{|ŠŠ‹…ƒ‹Œƒ…yz€…y€s‡ƒŠ{€|€†ƒw‡u…ƒŒˆzu‚woxo†}…‡Šv‡{€~…‚†|qŠ€ƒŒu€{zq‡}v†„y„v‡ŠuŽy„{ˆ‰ƒ‹x‚{ƒw‚€|‚yˆ~|}~r{€v€w„…ƒ{{ˆ‚x~|…~ˆŒs~€w~€„ƒ~€‚~€‹wƒ}ˆxŠ„z~|d}‡ˆ}‚zunz‹}‡{x|ve†‚|…‚ˆ…¢ˆrvƒ‹‚ƒx|‡€l‚xw†‚|xmŽ}}}w…|Œƒpz‰|…†€|‘ƒ‰ƒrz…ƒ}‡{|}ƒym‡€„~‰y„~€Œ‰‹Œ€v~}u~e„rz„xƒvxrv„}…‰†‡‚s’|‹„€z|ys{„{ˆ…~|r‚|™|Š~†{{ƒ‚j„|z{s†ƒ‹{ƒƒ€‚|ƒ~‡~—€rwvnwj|yn~~‡z‹uŠˆv~’l{‰Šk‡j{yqqt|‡}ƒ…}Š†}h‡}†~u†tŒux~y€oy‰ƒ‰y†~Žy†|‰}„y|‚ys|€…t€x|n{„‰{…w†{Š‡y„‰w‚w~}|Š|‹uˆy‡~wt‚u{ƒ|~~~|Žn|t‰~Œ}‚rmƒx‰s‡ryz‡€€‚t{p†r…x}€zƒ€„{{y{}‰€‰v|‚{‘ˆŠu|}‚„v}‹{rŠ€‡ˆ{}‹†|e†}z‡…zx|–xj~ƒƒ‚ys‹ˆz~}vˆoƒ‰‡‡}t†Ž€y|l‰Š€~„–‘ƒ‚ppuˆ„s„ow˜yˆ„zyƒi‘‡}„~ƒƒy…ˆ‡Œ~~…ƒ€z‡…‚}Šuˆƒv~ypˆ€{{q‡||ov€w†uv|‹hz|{|w‹‚}šŒ~…rzˆy‹‹Œ‹|vƒ{oq}„o„~z„ˆ~myvz~ytr„Ž{ƒ‹~o‡Ž…vs{~…x}‚‚{x}‚wƒ‰€ŠŠz‡x‰wz„w{o…g}k~ƒƒƒ‹ƒ†›…„€~s|ƒ€{z…h†ƒˆ†w„‘ˆ}‡˜€ƒutnqŒ~y‚v{rŠq‹‚|‹„|‚ˆw•tyn|wv‰v|‰sƒ€~“‚~‚‡€p‰…Ž|wx€}s†iƒƒ{ƒt†‘…Œ“yw‡x~w}r›ˆ†~{ˆm’ƒ‰}Œ†ˆy‡s~j…}ƒuvŠw}rw~€otŒ„…to†}~ruuƒ€t‡}~ŠtŽm~pvy~ˆ„~‡‚€€vtz†ˆ|…ƒ‹w‰|’w‡~v~ƒ€|„~€‰{{‚‡„kvx†€w…g„’}†‡Œxzzˆ‰€„}z}~‚{„‹xƒ…|rƒ…|s}‰w|~w€€z|Žp‡€‚†}{v‰puŒ}z‹‚jvyzƒxŠ{~“Œ‚}€o‚††Ž€y~m|~|rn‰r‚g…{|…|‰Š††q‘zˆ’}…v|ŽŠw†…‰‰zxut‹€yƒ†t…|}Œy…€„ƒƒ‡z…ƒ}Ž€yu†‚€ˆ‡…z†zu‚u{Š|‰€w€x‹vxƒ‡|–‡ƒ€zc{†{vpwt€„}}„~„…‘€‰‚€†xw„€rvyv‰œx„zyŠxw‡|“€‚g|}‡rxyyˆ†t„‰~|€}Ž„—ŒˆŠy†y‰}{{y{€u†y…~‹s’Œw|€|~„hƒ‹~u|Žz‹l“||†rŠ~}ˆz€ˆ‹|€‚€Š†‚ƒ…„y‰|ˆ€‚ƒ‚ŽuŒ{‹…ƒ„vsowez{q‹€{vŠ~zy€uŽn‹ƒv~‚n€~Œwƒƒ‘‹‹Š|Œƒ{~…vŒa}~iŠ|w€hsœ‚‡„‰‹~vuhr|y{…€rvq{–r~y‹„tm’†‰Ž„v{z”„}†{~yƒxŠ†x}~|ŽŠ„‘rz‡|†Š}†xzŠƒx{z|€‚‘€‡x„Š‚€vwztw}x…r‚‚{yxy…qy’{nƒxs€~‚y‘uxˆp†‘‘|j’u€Š~v€ƒˆˆ„u}o‘˜†—w…{ŒŠv~tv‰{„‡l~usŽtˆ{|qz†r}z…{„‰v}vq‚o…‡qf’~x•sƒkˆ‚rŒwi…}‡‚x„u^€zƒn…ˆqx‡zŽw€j•|~}r€~€Žˆˆ„„y‚‚ƒ˜Šk‚wšp{…u„q€Šnm}v–{{‚j{yyˆ†urx„j˜v€wmŽ{všsu‰u‡wƒty„„‚zŠ|š‰t‰lt…pw€Zrn“ˆƒ„ˆe†„Œur†|{‰†vœ„s‰zzy‡–xƒy€yv}|s‡r{v‡€tp‹xv‡yƒ„}†wq~…{€}zz€x…|{‡‚‡‚|~‘t‹ƒ‚„yt€Y|†t}Šx‹ˆ~~„ƒz‡|„okvqvuƒƒx†i•j†‡‚‚‹qsƒ{™~uŒy{}wu{yˆ{z~…Ž’qŒ…‰‡‡Š{€€‰‚ptv~„}ƒƒ†s€~ˆ~†‚€y‚}uwzkm†x€{‡z“{†‚‡ˆr‹Ž‹ƒ{Š€{m„g{}…v†}}{d~Šˆ‰‚Žw“„„}†‡r€w†mxzŽ†ˆso‘~‚k{„xx{zwj}wŽ…q{|‚Š‘…v†ƒ{u‚vsxvy‡tŒqpy……€…„|†€wƒ}|kr}Žx‰€ˆˆ{ƒ…z‡‰€z‹x…‡~€prm}|€œ†~z‚–„„v’ƒ€‚…i„n|yrz|‡‹~{Ž€„…„‡‹q€u{Švqsƒp‡€ƒ|v‡ƒŒ†€‚s~†sw~tƒoŽx„†uu|uw‹y‹Š„qu……}‹€€~w’}~‚„¦y~|w|z}|~xs‚y†q…{…ˆŠŽ{ƒƒx†y~|ˆ{‰~€|z|rxgw~v‹|…‹‡ˆˆ„ƒ‹ƒz{ƒvvyve|ŽrŒ€q‰‰v‡ˆz‚ƒtˆ€‚j‰rz‰pvyi‹Š~‚{…{ŽoŠ™„ˆ„y„Žƒ€q‹xˆv…†‚‹t„€v{€y‘~ƒŽ{€{}w…|€‘{††Šw‚™}„}‚ƒ„€„‡…ƒz€s}ˆu€…‰Œƒ‡u}{~iq}y‡t…‚‹dwƒ|q}k}sŽtƒ€{€{r~{pw‰ƒƒŒ„syyuwq„u†s‘~r…{{‚|›x„x€~‚ˆls“}…†}‡‘|€t{v}‚szz††yƒ||‡l…†wwŠ{~…€xyƒ…zlxqw‡ƒƒx‚nq„~sxƒx”€}‰†zƒ~‚k}ssunx…f‚xm‚…q‡ƒm{{‰‡vrˆ‚†{~…wƒ{ƒqˆwˆ†…~ƒzƒ~v€}x{p†wŠ‹y€x•|‚‚yˆ†~‰zwƒ‰‡xvˆƒ‡…‡v||ƒ†~{„…z‚€~ˆ…‹„}ƒ‹t‰l‚wvˆxƒ…{r‘z‡‚‚rƒ†yr}u„{‹zt‹|…~Š‡}ƒ€€y…ˆ{Šu…|~Ž‰nxj…txŠkƒt{‹Š€~}††‰†z‘u‹‚d~„{Žk‰rt}Š“z†ƒsŽ~|n˜lŠ‹~{pyy‡syt”{‚‹‚}‹w†wqxŠwƒ{‡xl„s|ouzˆk‚€zŽs‘r}z†Š~k€…ŠŽ}|vn‡Žq‰„j‚…ˆxsjp”y~tzƒry~_hzy‹™j›„†‘u|”t„kši“}ixvwˆ†‰Œp}~”‚†‹svŠp|y‡„‡Žƒ{•o}y}œ|„„„€zˆr›o}…{ŒŠ€ƒu…„‚”kŠ†r‹ƒ‡u~ƒxˆyr…‰j…}{{{|{„~ŠyŽ‚v|~‚yxˆ{‚ˆ~†y†y‡…r‰ˆ~†||~ƒzˆx~{p|y€mrŒq„{„x‚‡v|~sˆ„‰‡ƒyy‡fz€t€|–}’w‹t}|‰x‡uxm~n}w{su}‡Œ‡ƒ†€€ƒ‚{…nz{zz€x…€‡vx„…‰z€‰z~y‚x|‰s|utz‹t‡|‚’}x…y‚€}wt{g{t}s‡‚ˆ”|Žxx‚z‰zq†x~„vwy„„xyt€€‹‚zˆ„z‹{{n†€}…k€zt€wzz˜…Š€…ƒ‰€z~‹n…z{{„t‡…s‚z|pz~v|Ž€z…€~x‰{{€‰w€xuƒƒzœ‚uzzx‚}|’v„‚}„|tˆo|}wŠ€y„ƒƒ‚Ž…‡†~~€xƒy}}ƒ‘‰i„‘ƒƒlƒ}~z~„‡n€t„|~ˆ{€|~z„€„x€‰}•ƒ}vylŒwomw‡€|vw„”…}|uyŠ€„uw‚{„€vˆ}Šz†‰ƒ„{|Œq€‰zzz{‚‰‚€s~||‚…x††z……qw}‚ƒ˜zx€vy}x†…„z‹ƒzxv||ƒ{z„‰wˆ†…{}€€t‚kl~{‚w{†c†Štƒ}~‚|lxw€t{}†z€€Žƒky~€Ž†•rŽˆ€{‡~„o…}‚€ws~‡‰„‚{‚}{‘Žˆzvr‡‚z„…{ˆxu~y„…‚…|€‡s€~zx€lˆ~‚€zw†…t|€zŠ{‹x~€……–w‰ˆ€}‹‚h…s}ˆmˆƒ‚v†‰}™d}ys…y€o~v”ˆ‡|t€yv~z}j‚|‘„‘†yŒq|Žtz{……Š“†~o†y‹~”z‹uŽy~x…{††Žrˆ{ƒyˆ€†z‡vuŠ€Œ‡‰ƒ‡l†ym{uˆ†‹…z€…‚ƒy€xuŽtˆt}ƒv†‡|v‹k‚w|vk‡x‰†{ƒzƒ}ƒaƒ€~ˆŠ…‡x|q…z…‚ƒ{vnƒ~†€‚y|{‚w}z|sˆ€‰€w{syˆ…‹‘n‹€…†€‚…mŒ‹~ux‹{nƒƒ‡‡z|ƒ‡tƒƒ„~y„ˆz…|„‚x‚†|||††ƒy|{…t†}~r‰‡‰…„l~~Šƒ†‹t„mˆˆ††‘v€vy€‰wryv„™‚~}}€vˆwzƒ|‚}{umu|ny~ƒzˆ‰Œw‡Ž|‚…zgxwz‚}}…|„w„{‹{‘ƒ}yƒ|pƒˆyy€ƒ‚|„‘vˆ‡‚|„~z}xuz|{…~~†Ž~„€r…€„|w—qu‚vƒqvsƒj}yx‘z‰}ˆ{ˆx{“o}zuvƒu|~hƒp{zvr€zˆŒ˜}~y~}…{pqxˆ†ƒw†q–hŠ…z€}€‹zq„€w‰t‚‰{}‚s†q„z†‰z‚y‰ˆ“ƒ”‚vyzv„w„‚–‚„|†€Œ|’Š‰ƒ‡~†zr|x…iy|zy‰‚vs|}|z~”~‡„y€|{t„m‰v~zƒ~€zz……{z…}rt{€}x}„”ˆŒ‚~”€|‰q|x‰ww}‘swxŠu‡zqŽw~Š†}ˆ„ksu‰{nz†‚ƒr}‰~‚|‡ˆ‹nƒyˆ|rr|€|„r~|‡‚ŒŽ}Œ}†‚Œˆu‚„ƒz|ˆ~syšyy~ƒ}zw…ƒ€~}€€„wzvwq‡€„ƒ†…{q}€yˆr†y~€o…zz|sƒŠ‡„{ˆ{‚~tƒ€„…}y~tŠ~r{{€t†‚„€x„ƒƒˆ{}s„u€zuƒ€|sŒ|€t}€yƒii„}ƒ~ƒƒ|l‚z‚ƒ†w||m†y„ƒ}tzp{}m‰~v‚€†v“}}{z€|‹pv~}€€ƒt~x€ƒxŠ€{€zƒ}‚€Šxu}€}€‚x~‹Š„‚w~|ƒƒ‚s‚……„‰‡rhŠtƒ{x•…Œsƒ‡v€†Š|—tƒˆ„‰}ƒ}†yŽ~v‰€{€…“xˆw‹o†zˆŽŠ‡n…q}{†x|ˆt…„„‹~|ŒŠ~zzx›tŠ‡|qy‚wo…wx‹zƒƒz‹‡†~„y†zƒŒ’}z‚~‚€s~ŠŠz‡w…ˆ|€~vx‡‡…Š…}{„{n}t‰~€rzƒ{…~€|v‡‡ƒ€Ž|…Œys€„…{x‰{w†{ŠŽst|ƒv…v”z‰†…€‡u‰€‡ˆ‚„ˆ|Š„tu‰…x~†o~ˆˆˆy‚||sŠˆ‰{‡}~„y…„€~t„‡{y€}|ƒ~}‚~†„…o‚x„…zyŒzŽx}r‡}t€†|ƒuƒ€…z‘hƒ{~tysyt’u‹s}ƒ„‡ov‡‹‹ƒƒsˆ}mzs{eˆŠ|‰}~w~„~Š~…z„|†uq†}uzˆs|‚Œ|‚x…‚€…z†}yz~{vly}wz{€|~Œ•~ƒuƒƒ}†q‚}uy‡„…~ev‘|…„wŽs‡uxr|{|tx€t‡}†sƒ‚ƒ‚‚ˆv‘u’y‚„€ymv†wƒ{}„‡~Ž…~„x†y‘ot„†n‰}eŒv„€o‚‚¡tŽ…u‚Šl™{|Œp…i†xŽro~|}svƒ‚}w}vqƒ‚„sz~q‰‰swq‹‚…}yho}r{vnƒŠ‡˜v†…t‚~ˆ{jŠs‹yo{qƒo„pz…‚|Š{„‚„…w„‡tqsqoz†z…a‘‡s‚‰ˆx†s€t‚swwpp¢‰ƒ†hxt†€x€x–~„Žsˆu†|€ƒn‹…r‹xuŽy‚{…‚Œ|yxŒnq‰jq†w€Šs…sˆ‚~|‚ˆvŽŒ††qwƒm†|lƒww„„ƒ“x…t}{ˆ~€w‹~‚u‚w‚v{~€ufŒ~ƒ‚vyy{“…‰{†y…wxs~o‚††ˆ~„xtv†u†ƒ|‚x…yƒ~‡€y†{€„…}Šsv{ƒwyz‰}u…x‡rz‚|‘~Š~†Š„xkƒo„q‚~‚x„sˆvƒ}wˆˆŠv‡ˆŠ€…ƒ‚Œs‚‡‚Š„uy„xy|vz}{|o‡}yƒr{z{‡xŠ~‡Ž…|€}~ƒmt€‡„}“s{vnŒv‘t‰yx‰|v‚sƒxqr€z‡tŽ‚}†{}ˆt€‚…‚†ˆjr…€…vmˆ|Ž…~…n“}…‡€Š„z~q|„|zsy€}ƒ|ƒz{‰z{€x€x|u~|€”r„~}ˆvˆu‚ƒ„xƒ„”ox†ˆ{u™Œz…|’zhz—|z…z†Š~ˆŽ™‹‚~€‹~†f…g~~…Š}€€jz©ƒ…}ztpm€ƒx…k|„…czqlx‡z’‡”ˆz{“yƒ•}r“vˆtu†‹†…ex‚ƒ‰†z~‰}j‚e‹ˆvu‰qw€‚]‰‰r{„t~pbwˆw–€”zoszpyˆzˆn’˜v…q“ziu‚o~s††auwzux†yˆv‚|‰x{Šzr‡›‚zyxpŒu}Œ‰‡ƒ}€†z…ywv{‰rŽ}z‰{x‚……‹z|€{y‚}‚Œr|o‘‚…zƒƒt…’q…sn‰|}v’w‰‚’ˆe~u†hƒv~po{‰n“…Žj‘{€ywŒ„†kq“‘~„…}{Šy¤u†‹nŠ{†x–•uˆ†…z}Ž~dœp‚Œƒ„|’yyu~rx€y||n’†y‰}‡†‚‰ƒstzˆwzt€‡‚šr|‡Œ€…zw…†{t{{„ˆ‚€t|~ŒƒqypˆŽ”†‰~gu€ˆy‘d†y‡vyˆy\‹ƒvŒw‰—‚m“|…€yx}…€{zy€x†‡~{zoww€|„nxt†~~‡‚€“Y‘g†|~‰‚‡•˜„~~wxptvv}„ƒ…ezŠ•v…{~z‹…v{xŠtrs…‰gŒxs‚~z€r›n„‡}hzxnjy‚s{e—{€‰{‰‡wŠ[…‹€“|ˆh„„†…}†‡ˆ›‚v€|…|t|—Œj}y}‹j‰}€vŽ‡…•}bŒqy…|‚vyk}y€~~…z˜tˆˆvwwyzq~yv…y’ˆh€iz‹ŒŒ„k~ƒ‹…“w{qj‹…€†rˆ†† ˆ|‘{zŒ‰€[–k|Šcƒˆƒ^x†lˆoƒy–vž„q|†}‚{‚–„†u€~…€k„t]‚tu{pŽŒ›Šv|s…||Ž‹‡{†t~ˆˆqŠpƒ‡˜n—z}„ƒ•…¤’‡{ˆ‚e‡s”zŠh”™x—†€q||‹]™}Šƒlv€~Ž†„~z†‰wŽqz}i†Šz‚s‰‚yuytrŠ~…Œ‹˜o„oŒ“h{q¸‚€„vx†|u–x€‚o€x€Žy›|{yuŒy{Šes†e—u}Ž}yts†k‡ˆw“‡sŽruš€€†h|xn™i…•t’€’„qo}t{ŽŒ}†jƒz|…{|ˆqw|„}qc~w~‡‰{}sŠ|“‰†}“Žz}†‹’ynˆy†ˆz•Ÿs|…rp„~~†‰‡“„x„|‡•|†‹ƒƒqokˆƒ}h‘ŠŽŠ€•…“r‚sx€‡to|„‡†ˆxxu€eƒz‘ƒx†qt‡z•€‹txŽ}‹n}f€‡n|ƒ{”zqŒr€ƒ~€†Š††an‚ƒ‚}|{yk{jx„ƒq€tqnj…|{…€„vvww‰‚k†‡~x…}Šxe•wžzsw€v~lpoˆ„€|‚pznŠrq‹Ž~ŽŠtxx…u€s€lŒt‚~w„“”¥•rŠŒs|ƒ|ks}zpoƒ}}|Ž‡Œ~Œƒ|Œ„mqˆ…ukƒ‚vxov„ƒ}{€rŽ…‘‚~‡“|q…|—†o€}~gˆn‡nˆ…‚y€r€~|v‹x“n…o’t‚r‡v„}|Š‰vŠ}bu~st’xvƒ€‹Œ€n…ƒs‹ˆˆ›€pvu}oty€ƒuˆ}‰ˆwŠq‰vpxj}Œr~}‹}xw‚ƒ„…ƒ}~wr„‚–‚|‡‹}ˆ~˜w†y„t…~o|x}‚…‰t}xˆ…o~~whxq”{…~…‡„Šƒmw‚l‰€t}mrŠƒŒzr}†|œ„}{††wxŠ{€zk„u…ƒ‚zzx…usŠ‚€€‚†}Žr‚‡y†yw€Šƒ“y|u~~ƒ{“„Žxƒ~y}horhƒ~…Œt…zzhyŠ€„ˆ‚ƒgnw~q„qŠw€—z†}‚Š‚uŠw“orˆwg{yio„„|ƒŠ{ŠzŠy~‡t‰y}ƒ~v‹€vŠu~}z|~ˆ|”‚zƒ~{„~w†€Ž{~q{€qyzŠ€ˆ†‡“–{€ssssu|€Ž€’s…sj‡“ˆ…w}’’x„‚…~q‡†izryw}yƒ•…†‘†Šwz}}tovvv†‹„sw„‘‚s}‘{‡‚‹z‚~†…„‹†{{ƒ‚„‹…|‡†|}s•ww‚}zyz‰{t|y‚€€…yuƒyˆyƒ~}€|Š‰‰€|y…–…‰}Œqx~…}uŠvtt†q‹‡u~ƒx—rr€p…€zƒy~‡„b‚xy…yq‹r„šˆ…‰‚ˆŒua~zzm‚i‘„q~k†€}‚‹sŠŽuyƒ†‰}zq}‚„ƒw†„v€}|Š|‚„‰y€†yz|Šz‰†…{‚w}†Œ€{ƒ}„‘†vxwtƒ~€~{Ž}zz€†‚„’’†~}v{„ˆ“€}„|‚vpƒo€x{€Œu}mvŠylo‰o†€…€„w}|yˆ†|y}vy|~‚€€vƒ‡‰‚‡ˆw{‰x‰~‰…y„€„ƒ€t‹‚†‰rˆ|†}„u‚‰uˆŒ}wŒx~‡„€Š…sŒŽ‡”}ˆƒŒƒ‰zˆ…€Š†—€sˆŠrsye‚zt‰|…|tyŒ•„ztx~ˆƒ|ƒn†…~™xzi„~z€}~}t}jox~„}m†yxzˆx‚|u‚~~w{‰€|‚~{|“z~|€~„~‡„„u|€†|„y‰vŒ…s‹~„„‚q€Š~‡•vvrƒ‚ty~{wx€‰…x„w|t}p…qƒx“v„eq|…uz”o…ƒ—sy„…ˆ}‚zp[‚|€z}Ž|«zpƒw…‚pv‡{yk~‚tu~‰†|’z†…|tŒp…ƒb†~„„{tŒrvk|}}u‡p‘ƒ‹ƒ“}~|r…z€r}‚vŠx„€†|†{„…y…†Œ‡{…vyp€xuŠ{zƒ‹u|}Œ‰”‚„‚…p†hsk‚{zv€…‚‚mš…‚†n˜x‰nu}{y†q€y†‡}~||…„ƒ†z{„ƒ…†‚ty…v{‰y‹y}xˆƒ{ƒ~~zƒ†{~ry€ƒxm}r…y–€~Š†…—|xl|Žr‡p‚{ˆu•~~~Š˜{–}–‚y}}šy†}ƒv}q‰…†w{€ŒŒŽpƒ†|Œ~x…}{‹u„|{~{~Š…’ƒ†o{t„‚~…s†}x„rw„{‰‚‡~Ž‰‰Œq„sš†y~‚~v}pn—~‘…vˆ“˜‚zory†}vŒ}ƒvƒ”‚…‹…w‚{Šz‘u€‹…yn‚vƒvps~ƒ†€€ˆ†}…|ŠŽz‡w‹wv„hnzwtq‚~~zwy…ˆp‹v{|t‡†w€‹xŽ’y{tvƒ†xœ‡u„l‡€…€mŽ„m“pv“{t€€uˆŽ}zz„‹x‹r†ƒ|…}yy€|€~€p…}Žx}„}Š„€d~l‰†‰|y}„sip}„‹sz|s„j‚‚uqktx‡¡€†z{…{€w‚{r…‡…~„”nxˆv‚‡}‚wˆvt}†t|x‚‡€zx–}ƒvs…ŒwwŒ’€—tŽˆ‡‚xxy†~z‹{zˆ||†t{€rƒux€‹…•}ˆ†z€‡€ŒŠzrwƒ‚‚€ƒmymlƒƒtƒuys~ƒ|}ƒŠz{†ƒ‚tƒy~„‚‹nu…o~„q|…‹ˆƒ}‹x}yg•†ƒzrqŠ€qŒj‰~y‰}ƒyu†p‡y…“m‹xo‡tv‘l|†tƒŒs™fvyxŠƒy€†‡ˆ€n…uzjŽƒz‹s`ƒwƒŒ€qxxy{Š}{u„‘“yƒwj}o‘xq‰a†‹}„~€‡€~x„†„„…|{ŽnsŽ†z’us~uŠyq’nˆxƒ‹|…v€…„Œ~xnŽ|‹{„„u’}‚ztkŒb’‚q€t‰zrŠx…}pv~‡a|{ƒh‹vh|d‚{z“ls‘w„ƒ‡zvtƒzt›xn€…………l††w‚v}ƒ„x…p—€v†}†‰‡Š“€pspy‘~ˆx}Œ††‚‡„ˆ„ƒ…€z„ivwyt{yv}wx—€˜v~|Šw–|’|‰†w|m……‚u{}„tx|‰v•‚y}}…}Š}‹kƒƒ|ŠpovyŒs‹yƒ’Š sŽ‚|q…o†||rsxŒt}Œnƒ}€q‹‚y„w„xr‚„~~‡mˆ}„‰„‰y€yu€ˆz‚„u…€€€ˆn~~‚‡v|‚}}q‡o}r~‚vw‰‘y€d‚{Œ€tŠzƒr‚~„|~wl€vŠw˜yƒ€ƒ—~™|~zxƒhzxu|hy{”yyŽtŒk|v…€{u‚…uƒuynŒuƒxŠ…€tŠh{yz„v~Ž}…kˆtŠns‚…{s|€y‰|„‹„~~‚y}‚kˆ|xl{vs‚zxˆ{o‡w|ƒ…}‘xƒ‚}—ˆzx‚zyv|†œ„‡q…x‡y’iq€n•Ž‰„†x„ktqƒ}~{‚}s}z{py„t|t††ƒƒ}x}rwv„}Œ‚–†„z‚|ƒ†v„”lŽ‚‚~|€y~‡†„y{zŒ†}Šj€|oƒt}mŽv‘uˆu‰|€u}r‰‰}ˆ‡{yuu{y~~€ˆ€{„m†uz€‡}v‰„€ƒw†~yu‰~€y|‰t‡‚‡~~}v‡ƒ‡z~z|‚|w{„wŒˆ‰s‚zu}†|}{|€}‡||~‚‚„{z|u„xz}|‚}uƒŠ‰„ti~{~†x–‚~—‡ˆ|‡to€}q€ƒx‡zt„wŒ~„}…{t”†‚‚x|w’wƒ€|y‚€w”‚†ƒƒ‰vv€mŠ}w{s“‘q}ƒ|Šƒx~€zƒv{‹t€…~•vƒ€‡€„x…‚ƒy„wz€{zzŠ}g{z‹k€~‹€vwy‰ƒr‡w}xu~tŒ}vl…‡‚‹xŠ‹|}‡•zŽ{„…~z€„v‡ƒzŠŒ‚w€~‡‚…€€zs~€}z……wŽƒ~yyw‡„y~Œq†‚w—q~‚xxfwƒ‡…ˆ„x‡x€y|tx…o…}…€Š…r†|Œ}„†|„wŠy“†{†v€zˆxwˆu|w}Œr†~~€€~ƒ†{‚x~‹ƒ~‡u~|}Šƒ~Œ‡yƒ‹|‚yx}uq‰{„{{{{ph{{zxƒ}€‚~{Žq‘ot’€€|~€wyuƒ‡~vu€v€ymŒ|€u„‡†}prvy„l…sy…‹}ˆ|„|…‹zˆ}‚zxvr…x‚†ˆ„Š„‰Œ†ŽuŽtŒu…„Št‰p„‡…Ž”}ˆ†Žƒ…qŽswŠx‰Ž{|€zx‡€ƒx~‹”Š‹z„~l~wrf{n†€tŽt~uoz‡‡}“|y€‰Œ|ˆryvozr‚ƒzŠ‡†ƒ‚}v„t|xx„vz~{‚}”zŠƒy‰w‡~‡}x‡|pƒ|xmhq€|t€|‡‚Œt‹‡†ƒy‰|Œv‚uwb}wyŒƒ|‰ƒ‘Œ…†qyˆyz}gƒu~rvƒ~‚‡ƒt~€‡Š}Ž‚‘…ruxƒ}~„r‹‹‡‰„‚}z„zƒ{r~||Œvx}t†€u€{|x€uˆ†{{ˆŒ„„‚zŒupv~‚{}†tŒw‚–Š‚{}ƒ}ƒ|u„}…~|„{v…˜y…|z‚p…Š{{|{y‚‚ƒŒwzxxƒ‚‚r}~zyqˆz~ˆpq€}—ˆ”|}‡|‹|{|€‹…|}„{{x„…‚|{}‚‹€ˆ…y‰z{†Œ‚‰‚n†|‚ˆg…‚z{~‡€r{t„€{ƒwt‡‡€‡|‡zu‹„t’q|€€|†t}m{ˆ†{}|…yo‹w‚ŒtxƒtŽyv|u†€“„‰~zzqux~}}twy€‰l†Œt}u‹u‚q~„u€‚vys‰o„}r}{‚}‚u‹}‹z|yv|||p…t€pƒk‚~r‚{ƒ“„{„ƒˆ{uywvs}k|}‚ˆ{‚eƒ‹ˆ~‰Œq}zy‚s{yz{‡…„ƒ†|‚{z‰tˆ~}…„{‰x}}{w|puŠŠ†{†‚}zu~Žhˆy„}€~u‰o…€€…†–ˆ‡x~‡|}~‚r{rv‚s|†‰}Œ…w”‹Š~‚„…y}t„v€}ƒu‹xŒn{}qˆ{w{v{v€u~|„{w‰rƒ{~y‚|€Š}…}†|‡~r‚k~~~‰|‡‡‚ƒ}py…ty†‚sz}}x~€ƒ”tr{w‡‚‡“jx‚‚v‰x„…ƒo{zy……oy„z”txy…‡{h‡€‘“{†€…q‡p~u{€yw{~|~‚€u†vzˆ‰‚…yn}{z{q‚Š‡x{‚ƒ{€y{‚ƒx…m|…tr~‚{€k“Š}€…{t}…Šƒvwy~{{ƒy{€{zƒˆ„pjqw}{y†–y‚{a}”r‰~n}Œ…zyx‡iˆws†|‡vfxz‡zvt€‹~€yŒ}‡y|ƒr…s€ƒ€‚…uƒŒ„}‡‚zx†|w~tzw}ƒrvt{„su†zv„uu~yuwztkz‰uƒ{Ž™‚}†Œw|“mpuˆ~ˆ‡}ˆ‘…‹„”zŠ…x‘€†‡o‡„{‹zsgw‡}‘†…‡uv‡}Š|€~qƒ|‚ŒrŒv…ƒ„m‚t†‚wŽy€yŽ’‚††€…Š{}o‰j„‹€~|x…†“Žv}‹l“Žvf†}{„Œ‹Œ‹€™u‚ƒ|{€zx~k†ƒ|‘vj‚}ˆ‘k„‚e’|mˆmz‰yŒz{|u{„tŒ|m‹s†tƒwju“{Šlƒ„t‚||rŽ|„w‹g†zqu~{q…•ˆvuˆ‡zoeˆm|}‘gjrˆŒvˆˆ‚w€v‚‚yuo{{“y|‚{€p‚nˆ{{|€t…†wƒz„x}xn’Š‡‡†–{Œ€w‰‡~‚|€ˆ€s‡zuw}y…€‚yzƒ~w{ˆy‹{sˆu„rŒny~t‡€xy}„€„o}pzƒŽˆ„y‚ƒpŠ{€„†~„t‡ƒƒŒ…‡pwnƒoqˆ‰Žr~{w}†vŒ‡†‚tx„}{|}}x…ˆˆ~~€„w†~y†{†zu{‚y{†t{‰yŽ†v‹€~‡||†}€Šx…ˆcxx~‰z‚‡|~|…‹w…v„ƒ‚i‰nhs€v‰w}vs}‰vˆ€„…„mƒƒ~zutx‹zkv…ƒ‡‹k‡ƒu‚€„†zzr|‡uzx|v}€{rw†}ˆ‚Š†ƒ|…|‚zz…zƒ{w||„’v…x}y~{‚~†…yarwr‡yyŽk‰•‚€{ms|Œ…~‰zz†z‡‰€„w“x|r…}…ƒ“w}‡ˆ€s{qsw}€wzxp‚€„ˆ||Š‘xƒ}lrp~‚z{u{|ypxv{‹|†|{†‡~ww€y~x…y‹v€|{‡ƒ‰y†|y}y‚z{uwˆp‰s||}Œ‹{{x|‰yz†ƒ“‡vvy‚}…w{~†Šy†wtŒh|qj†‡vˆ‹zŒ……‡xtˆ||…„uŠ|}Žƒ†xˆ„€~zyy|xŠŒ„„~~}wotu…y‰…‡‚yx‡€vssvw‚|Œx€w‹kvtf‡ˆŠ~ˆ~€jw}z†tz~‚‹‰ƒs˜x|qtƒ€†…ˆ†Š~{€xŠ‰wŽŒ€‹}~~~€w†i’…ƒ}~tuy{†Št‚{Š…t‘u…ss}…€€~†~‚z‰ux|y}ww|‡z‡v‰x|~{z…vtƒ€‚‚…r„p‹‹}{Šw|…q‡sr{ƒ~x†pwƒ”vƒ…„uny„}~ws„~w‚„u|‚{‰€Œ€yƒ|r€zˆqyˆŠ‡ˆz„Œ†‹‰{x…w~uzu~‰zv„t|‹}‹yv‡‚‹€zxzŒ…}‚|}†z€p{ƒ~„|„{‚w†|u~‡q‚{‡‹u‡||x‡zv}~t|q}„w†‚‡zŠ‚pz€xuuw}wƒn{€„™„•†zƒŒpx|xŠŠ††|oˆŽ|yƒ†‰‹“xt‡„|}wvu{}}|tsty‡€ƒ}}‚€~~Œx|}yzxƒ{{”tv‘|oŠo‰Š|ˆ~’nouqw}–dy‡–w†vuŸ{…’ˆ|m‰„€šq‚o€‚‡q€v‡ƒwtw}|’n}s~tŠy–sˆy{x‚„‰z“|“‡wtyx~‡s}qlŒzˆ‘t††{yxŠ†…m†Ž~|‚h|{jkƒo‹z{ŠˆŒŽwŠt‡tŽƒz‰•ˆiŠpx“p“€g˜u„}¡€‚†rq“`‹‹o‚pgˆ‡w‘ru’xŠ{Š~x…{‰wŠzƒ}zŽvƒulˆˆ€”n„’s™zŽ~v‰q‡ˆ™urzƒ†€‡g‹‰u‰’t‡€j‚lzz‚x{……Šƒ…xz€‰‡m†‰‚€tyx“ˆƒ~ƒŒ€y{ow€w‡}zrr„ƒƒ}‚‰nŠ€€†w‰}ˆyŠ‚„‰|w{‚€vz|y‹x…‚…€€jv€‚|„|}“ˆ€…xvŒ}„‚„ŠŽ”}…zˆ‹sŽv™‚‚‚€ww{tm{y‚€‰r…xŠ„‚wz‡u‡vƒ‡‚Š}ƒyŽ…s‰‡Žv†‰uŒq‹~…qq„ƒx|q|„}}€r„{‚}tw…Ž{~„|}‚‚wyqzx…€z~ˆz}r‡ˆˆ‡}x~jŽr{u–y‚{qxˆy‰rˆ‡}Šx|Œ€y~{ny}c|o}|y„uy}qv{Ž…Š‚{ˆ‹{xo‰}|}ƒ‚„wˆ{‰–Šƒu}„„~z€{ƒ|r{zzz~‡{‹•†…|Š†~oˆxtnw‚{oŠv€xˆˆ’|ˆ‚‡{…|Žuz}|tŠzs‡„~ƒy}Œq‹‘z“{rv†x~€p£~~„zxƒvxnsz‰z}uƒ€|Šzy…t†|xˆ‡€„†|…zyƒ‰~‚‰‰x‡tzŠ€{€u†ˆ|Œ„y…x‚€vŠ}~‡€z‚wv†€’xxƒnƒzyŒ~u|vm~z‚}‚{ƒx|}‚‰vuŠˆ…x|s|~ƒ‚szŽr”r‚{}~~roˆx„~ƒizup“Š‹vw‡x‰‡|„vr‚Œ{…z~{zr|zs~†‡‡x}‚y††„}{su€l{ˆy†Šr“†˜x‚‰‡{Œ€x‰{o‚‚u{‰qr{€t„}‹ˆ|qmxƒzˆ€…„‚s€w{}€w—†yxx€wvx„|…{x€ŒŒ{xynƒ€z‹†‰xi„€€ŠˆŒ†ƒˆ‹o‡s{x~}|Šlx†u†|~|„…€ƒƒ~†|f{u|ƒ{€Ž||€‰€‚€z|‡|r{ƒu†t}y‚w‹‡‚ƒ|‡„zƒ|yuwz|yy{ˆ„‚“‡{€v‚ƒ†‘‚‡…z‰r|z{pry‚x|}…j|‚oˆ†‰sŠ€„{i|mvrj€y‹ŽqŽ}†{†wzŒtŠ†}†vvxuszvq…„’ƒ€†~Œ}{‰~…‚‚w‹‚yŠsyŠƒ}ƒ‚‡Žˆ…†€zŠ€ˆrzyn†„}tƒj}‡…‰~†‚„wˆ‰Œuuu…|{„‚‰xn€}†|uzy‡Ž‡‹uzv„†q†p{w…Ž„qv……|‰„’x†v|~‡Žpƒ€€s|y€Šr”r‘‹‚{€|qƒ‹…‹s‚ƒt{zt|v|ƒv„…~‰pƒ†w†€€x~‡}}r{~z€zxn€‚„„w†…o†{v€‰|€~~x}ƒ‚„‚~u‚…zx‚x~~|sw†„}‡rƒu‡…w€}ƒrs„ƒ~}ƒ{~†w~x‡‰…ˆŽn‰|}z€yz~~|~†|ƒv|‚Š‚Ž~}~~Œ†‰yƒ…„~vv€}‚y|†vv€}|ˆƒzŠy{x€x€„u‚ƒt…zzzuq‚€‰‹†y‚ƒv€zƒ’~…ƒxzwlzzxv{‚ˆn’x|}|‚~ƒu‡|Šzƒ†y{†so|k„‚{ƒp~}}{Š‚‚Š‹~ˆ|…lƒ}~x†~Šv||„}€tƒ„ˆ‰~…{ƒ€|s…z€{u|{zuu}{‘y…€‚y‹†‚xn}h{}x}‘xŠr}’Šoˆvxzu‹qv}|qŠw„u}ŽŠv‚wŽv‹hƒ|tyt~}}}w‚ur|uy}w~†}…‡r|u{{‹w†‡~„u‚qwzv„{…‚u†…w‡|€‚{w‚}Šƒx€‡r{~xŒ}†|ˆˆ~†v|v{w|yŠ{w…‚†‡€ltr}q~‚{‹y€urŒu‡‚~‰€‚y€{jzvwv}~‘‡„~‚ˆ‹‚ƒr†}€t~zz~’’wpzyy…Œ€€ˆy†}†~z}xs{v{q}yˆˆ}Š„‡‰‰{€vlŠwyusz’‚trrt~€{‹wƒ|„‚t‹‚€€~…‚~|y|Œ€~ˆ„‚Œ”€“u}„ˆ|€Ž…“vyzk€‡€‰|{„‚„szqƒm{ƒƒ~€Št}‘€z„z}|p‚†|Œ~€Žo…zp„ˆw‹~y‚u~„twˆn„{~‚‹„~{€yˆ|z„|Ž}ƒŠ‹‡€…ƒz…r{wu„y€{~ˆru‹tŠo“gz„xtr‡xŠi‘~‚ƒ‰Ž…‚{pw~{{{{p…w‰|xŒw††t„t„‰}‰„{y|su~€~…{ƒ†z‡€‹‡}„‹‚|Ž{…wŒu€{€ƒ}~…}‹†y‡Œ‚‡oƒ~}…}zt€h€{„‡|„v€w{‰|}zo„z‚ˆwƒ€tƒ€ˆ}ŒŠ„“~ƒ„€‰Œ€‰~Š‰uss…v|‰„ƒ~ƒ„„ˆ|s‰~}}„|wƒ||{zŠ‚|‹|‡r†~z~y|{ƒp‹„v~u||„~…vŠ…ƒz€’z}{x`Š{~€~ƒ~s‚vŠzˆƒ€{‡„‚|rq|€€…y…ƒtƒz~€x~t€††}}€„‚}ˆƒˆ|‰z|ƒˆƒ‹{}ƒ‡†Š‹†~uw‚yuƒn‚z}„v€|ŽrŠ|‚x„€ˆnxk‘x‡Ž`~ˆz–Œt‡quv|‹ˆv“}{|}spxojŠn’Œkom†…}ŒiyŠq–‡‹z|€z‚‚}‚uƒ{‡Š†p|‹w‰{€oŒŠ~‰ozs‰†}‡u~˜ˆƒ–wŠq„~ttˆk‡‡}™p~t|†…yˆx}†wwxv~s‰‰ƒz€…~wo{zl™~†’u}Ž„z{„|‰q•’{Šeˆxz‰‹zƒƒhž‡‰c|ys„viŒmz‹|Œ—k…~‚”{…~ƒvŠ‡‹~„’iun–{ˆo{ƒr“Ž‰ˆ|}‘‡†l{z|pxt}‚~‚Œ„‹†„‚‡|‡ƒ}rs{€}‰v„v‰…Œ{ƒ‹†•‰sƒ„~‚w}‚‰€ƒ|‚ƒz}Œ…‡ƒˆ„ƒv{~zw}€…„ƒr‚~‚u‰v‚‘u}…„xŽƒƒ{}ƒwu{~ty}}‹xwuƒwƒ€ƒ†zƒs|zƒx‚|z|‚Œ‰€~x~|…”s€‚‚~}‚€–u‰~|„‚x~~|ƒ†y|…ƒz|o‰t{„ˆq„ts„z|€„€†‚‚w€’‚€„€†{ƒw|ozt†€xŠzˆ‹‹yˆ€y„{xr‰o‹uzzz‡ƒy‰{~ƒ‚Œz“p}}y|}xzn‡~‚…„}‚€Šx…f‹|ˆˆ~‚‚}‰ou}€„…w‡—€ƒuyzƒ~‹uƒz{‰|}vƒ…{’€„ƒ}yv|u{|€u€‚‚r|t~…qzƒ‚}…€†ƒ‰‹…xt}—„‚u€w€{ƒ“‚~‰ƒ‚Šyv„s}u}x‚w‚z}w~†zƒ€…€sƒrƒ~z„‹zq…†„w‚†‰v{~{~‰|ˆ‹ƒ|~~zqvn|ws‰q~o€|†‰…„‚~{€Œu{wywpo||‹šz}zƒ†z~oˆ‹€x‚ye€q‚w‚†vƒnƒw{zˆv‹y’{rv‹x{}tsur~‰‡sŠƒ„„s~ƒy‰z…ˆx{‡y…ww–{…Œˆ„€}‚‚‚ŽqŽ}}n‚mƒˆrzx{…{~|‰}ƒp{€uƒ}ƒ}w„‚‡‰†|‚}~ƒ€xju†‰wz†xt|{z‡ƒ‡ƒ˜Žzˆ€‘u‡€z€€ƒˆ„„‰x|{‚„u|‡zŽ‚‚„Šx~{€}{ƒŒ|{~vŠ‰~z‹…wsx‡y|}~{„“xz‚†‡|{‚u€‚o}‚{y}€yŠwˆzt‹uzŽ~„‡€ƒvy…yŠy{~twŒ}Ž~}…v‡‚}~|uwzty{o~€||…vŠ‹}‡€}‚y‡zyq{€}‹€Š}†€†ƒŠŽv{|€w†||pb~t„ƒ{‰zyw|~‡v{…s‡„{|u†~‹~€t‡ƒ‹„v“ˆ|y{‚…q‚u_~wyg{†zyv†u†“‹ˆ‰x{†‚†zzn™w‚ƒ|‰|‡z~uj™…x‰st……ty‡w|ƒy~‡€mv„wƒ}†‚uog„v‰…sqk‰mv“u‚‡p”ˆp›h~‘wŒmz„€’„€z~|w‡r“qo‡}zŒy„„as‰r—‡osl˜g‹Œr~sv‹†l…h…‹xtzxzywa¤‘~—xŠƒl‹¢l~|b˜tƒoh„€x„}‹}‹ŒR“|ƒ‘„~sŒ‰Šœ{tn•j‚Ž…’p†‚bu}}iz…p~xy‡}ˆu™‡‚o„~jq‰ƒ„|m“ysgngqŽ„x’oeplŽ|ƒvt“w•‘p…‹‚‹‚}jˆpq€|ru‰{q‡rv€ˆ‰r‘~^‰dƒ£‡f€~wˆhxp‚„fœ‰~{˜‚‡oƒ“huuƒx}…›Œxƒ„‘z‰„€¡~xv‚qz‚t„^xsˆ‚……‹„z€q‡~|€{vydp|zuˆrˆ{z’–†Œ€ƒ‰˜x{…‡|}~y“~}‚}ƒ†{†„‚“‡~ut}‘˲ °ÿ{ÿÇéïŸÿDÿÞq$R©ÿ#ÿtÿÖ¼ÿdÿê£<-ÞÿVÿªßÿŠÿ+ÿ¼c_Äÿ+ÿþܨÿRÿފ*C›ðÿbÿÅÐÿmÿ"û¥QxÙÿEÿŸäñšÿ7ÿÃh \®ÿ'ÿ€ÿÛ·ÿYÿ ã˜30—äÿXÿµÕÿ€ÿ$ÿ¸Z lÊÿ7ÿ˜÷æ–ÿHÿÓ~N«õ ÿpÿÏÆÿ`ÿõ“D6—áÿPÿµÚùŒÿ-þÃ`m½ÿ7ÿþó­sµ{u”€~~‡}†‚uzŠ€ˆˆ”‚‹r{uz…|}•~{‡gƒ~ˆz~q{k…„Œs‡{y€€c~uzx†v†„pjcw~†y‡†r|z{}z€Œ‡„ ‡„}†ƒŠ€†’lŽn€‡w…‡|lŒxq~y€|‰ry„~ƒo€x}‚~‚‚z‚s˜€ƒ‘€y„~ƒ”‰{“r„l†…q•}Š~ˆ~n‰ryzlz‰y„œ}˜{„{x}rwŸkyŠs‹}…ww`_nwx{Ž„…‘’ˆxx}{šq‰|{}~ru†y¨¡|‰‚{Œ~„†…šz†~€u‰Ševkz…Šm†l„~qm‹wm‹uns||~‰ˆ}jx„z†o~wz’Žuƒv~€š|„{{„t„l`yqŒi‚—o‚yuysmƒwt€r‚Ž~t~v…vp{n‚†}t…ƒ…zŒh€u„{‰‚ls„{}†‚ex‹{q‰tzˆoxsv‹‡}Œ€Š„|“‚‰~x||n~xvwyˆ…Šƒf~Ž„}‡Žr„uŒžˆ—~wx‹}ƒiuqm…ƒŠ’wq}„}†…i€…y†x}fks„‚…›•Žt‘„”ˆ~˜Šz…Œw}€uz‚qƒƒƒ‚|{“yŠ†u€w‰zuv‚m‚o†˜YЫ^ÿƒPÄä ÿNÿ¨ãüŒÿ5ÿ¾g^Àÿ(ÿŽüܬÿUÿފ.CœîÿbÿÂÄÿiÿ$û§T#yØÿCÿåð›ÿ:ÿÑk[¯ÿ%ÿxÿܸÿ[ÿå˜52˜åÿaÿ±Óÿ€ÿ ÿ´U pÌÿ5ÿšøåÿIÿÍ~M¬óÿxÿÎÄÿaÿõ–A4…èÿPÿ´Ü÷‚ÿ/ÿÁ] oÅÿ8ÿˆðì§ÿCÿÚ~+F¦úÿqÿÈ¿ÿpÿí¥>(~ìµT[Pžˆuyy|wu€“hm{shj‰r}›q…}h“•}˜sppqˆy‰vxŒxŒp…wš‹€‹ww}q{‘tn“^ŠŠ~wy™w‡mŠqz„ƒ|€†}z||}„~}€zy…r†~{Œwˆ‰t{|vˆv‹}vwy~v~|{~vzs‚€}‚‚‰„ix‚‚‹€…œ‚ƒ‚‰ˆ|€~’{|zwkˆ…}…~‡‚…€‹Œv{yŠxz|{€xwv~…w}€ŠƒŽ‡|ƒsr‘ˆ€ym‚„q…m}~z‹vv}}}rvy~y†wx€}€xv……vw‚y‹‚ŠŒŽu„t€{t†‚…Šty|w•‰„Œƒ€{t|{urr~{ˆh‚}|x’|Œ†{vˆq‚}|‡v„~†j‡yŠs€}‡~x“y‚qŠyw|ƒsw‡Š…|v€roŽ~†z|‚p‹‚†ƒy‡yŒu{€w†vyyv~{Ž…||ƒ‰†rx‰y}zy|z~ƒŒw}w}{{€Ž„€y€zxƒu|„xƒm‡…v|qzwd”……†ƒ}‰t‹ury‘}‘‹‘rnˆnŒs}v‹ls’xŽŠ”„•‡}j‰x{u~mkiwxuŠƒ†w{‡„}…|{•{ƒ}|t‡v|x„r‚y…xy”k×°uÿ9Ý÷ÿ[ÿ¸Ùÿ|ÿ)ÿ³]iÐÿ6ÿ–òã¥ÿHÿÚ|%O¢úÿkÿÒÂÿhÿð¤G!ˆÝÿSÿ«â÷”ÿ)ÿÄbd»ÿ+ÿ‰ÿà¨ÿQÿۍ';¤ìÿiÿ¿Îÿtÿý¤L(wÙÿ@ÿ«êï”ÿ=ÿÉp]µÿ-ÿ€úܹÿQÿ èŠ9<”ð ÿ_ÿ½Ïÿ{ÿ!ö´M{ËÿDÿ˜ê÷›ÿ9ÿÌs S³þÿÿÓ³ÿ`ÿç—27Šø ¶AlGš”k‰nƒ…y…|z}…wsˆ~††rk„„w‚yn}€tz„‡‡uŠy}ƒƒ{t~{ˆ†€kwy‡|ˆŒ“{x€‹‚‰|vvŽz‡y“y‚w†—‹|{lw~‚|‚{……s{Œv}ˆ{vŽvŒˆ‚kw{wy}~v{~t‚py‡y‚‚|ƒ}xˆxm}v€ƒvˆwz‚Œ{{{‰ƒ…yzz‡„ˆ…€„~ƒyƒiˆ‹‚ƒ€w‡ƒl€€}”‚vˆ†~q…yƒ‘nˆt}„}r‹x{uvl{||zwŠ‡ˆŠ„€ƒu qzyvqƒ†vƒuƒjv€t‚‘„pˆo„‡||†r|}iŠvzv|ƒtˆ„„~~ˆy†yƒy‚y}}~†‚}”}‰‹}zŠv€uˆyy€x{my‚v‹qx‰†Š†zŒ†|x„ry|†yƒ‰…{~„†€„ƒ„w‚…‡|ƒt†~p€{q€}vˆ…~nŠq‰‰|‡…ˆ˜wu{vx{„s‚x|„{‡ƒƒƒ|‚Œ„€‰tw}{ˆ~x‡vu|{yƒ‡w|{|‰†Œ}{}}w~€yƒv~{vs€€‚…~s|„t„€€{z‡Š|~}}yˆz‰‹z…|vŽ€ƒ|‡…xx{vƒ‡}ƒ|€ƒƒo|t‡Žyu|v†~ƒƒu‰€‚z“_Ë{Yÿ/ÿÇêð¯ÿUÿá06šç ÿ`ÿ·Óÿ{ÿÿ®X"rÑÿ8ÿŸóè—ÿCÿÓxS®ø#ÿpÿÔÅÿ\ÿð–C4‰çÿUÿ³Øúˆÿ)ýÁXnÁÿ8ÿ‹÷ë¥ÿHÿց&E«ôÿtÿÆÀÿoÿò£C-„ÚÿMÿ­çû†ÿ5ÿ¾k ]Âÿ0ÿŒöÜ­ÿOÿä+F™õÿbÿËÍÿnÿõ¦L#‚ÖÿMÿ£Þø“ÿ0ÿÊc c¹ÿ*ÿ„ÿؤÿyö—k †vŒŠƒx|‚†„ƒxŠxŽ‹g€k€{{†‡uŒ—{„…vw“…nƒ‡}|q‰y“xk~„‰Šƒ†”Šxvq{xyz‚ˆ„ˆs…„~s|tˆ€Œ‚~|s{‚~„u}ƒ|„w€€ˆ…|„zvŒ…w}y{„~ˆ}~‚‘qŒrˆ…€tmƒˆu‹vz~z€itzuuvx}ˆ|q…ox”}…‡{€†•…ozymwq—}‡x|†‡|‰}kzvx~}„{~{{}ˆz‚~ƒu„|Žmz‡n‚„‚u†}sŒruo‡}‡Š‹|~{ƒ€pzpŒ~‘Š{sizŠ~€€s†nŒtˆwu†xŒˆ~ƒ„yxxˆh€‡€‰‰€…Žv|{€{yyz„‚Žˆƒw}„Žt|ƒ~x~~}v‹}|{z}y|†v†t{„vyvxv‚r|‡ƒ}„pr‚„‰{…‹l‚q…rƒz€z|‰ŒŠ‚‡ƒyv‹}–xvŒx‹‚~ƒ€uvy{vzŠ~|xŒx‰€z}xƒvˆyzo}ur€}xx†}vƒ‰{„…y†Š€~z„Š„”‚}|Šy~z{||}y„†z{Š‘‡„xy‚w€qau€ƒlq~‘wƒƒ{‚‰u‡x„„‚u‚yw€t}ƒtƒ£L•;Ôÿ°…ÿ3ÿé™>0ƒãÿLÿ²á÷…ÿ2ÿ¼d hÀÿ4ÿ‰õå°ÿKÿ â‚0@›òÿiÿÃÅÿqÿó¬E!ÐÿIÿ ìø’ÿ7ÿÅoV½þ#ÿ‡ÿÕ°ÿZÿåŽ.?–ëÿYÿÀØÿuÿ%þªXtÓÿAÿžéìŸÿ<ÿÔo!Z«ÿ#ÿuÿÙºÿ\ÿèœ9.”æÿ]ÿ°Ôÿƒÿ þ´ZkÈÿ5ÿ™÷ëšÿGÿÌ~K¯óÿzÿÌÅÿoÿñ<µ«icš†k„qrˆ€xŽo†„€f„ƒošl‹„wvvxy}s‡us•xŽ“_‰ˆs w‡cn†l€{…zu‡xsŒhz…j{†vv…}t…~}Žp||j‡}xlmˆlŽk‡€oŽ~†•zƒsz€‚}Šv|lŽ…y”t‰~r{{~€„u”Ž~ŒŒ…‰~v‚tt|~~ar||‡{zs‰‘~ˆ„{Žƒ{…ussw‚€u†{…l|„xƒ†zv}vv‘|„‰ˆ‹{…ux|r}€€ƒ‚†m‡mx†zƒ}u…‡ƒ„|~„“sq‹{}z€‹}„p€ox{u‡~}z}„Š~…wnb…}‚n„†ox‚~ŠŽ‹‡yq€€vz~stˆ|ƒx†tu{ynx‰~‡}‚~tˆ„sux†…„wywy|}……‰‡ˆ‚€”zŒnŽ{rty€€Š{€€Œ…{Šv~€x†ƒ„ƒ„‚z‚‰}‹|…‹ƒ…Šƒ‚Œw…y‰‡‚†‡xƒw…‚w€ˆ„~›Ž‚y‹€†evz}‹„ƒ‚rixxƒ…wwzx~y„u‰ˆ~ƒ{|zp€€€u†}|Šy{y€}‚hzz€|r„„…‹ŒŒ‡{ˆx|ztt}„‡l€p‡{‰€Š„Žx€~†z~y{w„u…„Š|Ž~ycÃTîÒGÿwCr´ýÿ{ÿÒ¹ÿeÿçš63Žá ÿXÿ³áÿ}ÿ*ÿ´agÍÿ6ÿ•ñã¨ÿHÿÜ{%N¡úÿjÿÏÈÿeÿð¡F&ˆÜÿQÿ¥Þü“ÿ+ÿÄbd½ÿ+ÿŠÿàªÿVÿێ)=¢êÿiÿ¾Ïÿpÿý§L(wÚÿAÿ§êîŽÿ<ÿÉo^»þ,ÿ|ùÞ¹ÿQÿ èŒ9?“òÿbÿÀÍÿrÿ ö´L|ËÿFÿ˜íõ›ÿ7ÿËm&^u@Hv¨i~‰gpvy}stuz{“‹x†€x‚‹{uƒ‚}pwvvdn}z€‡ˆ‡ƒ“Œ~‡‰‚‰l‡{s‚x…€z~ˆ‚x}r‚€ƒ„{yŠ…‰|}|ƒ~€†ƒ‚w€‚q‡|x|…x|…€‚~{ƒ}}€xƒ‡|……‚~x‚ƒŠ……€yv€‚‚ƒ†~‚„y‡|…wu€{y~pv†r„‰~{yuwŒ•uˆ€{‹w‘‰j|€‚y…v–zo~}y†x~’ˆr…rŽxƒ€ƒz{†…|Žy{rƒ…‚…‰‰†~z‚y‚ƒˆq|n†{w…}ŠŠ‹‘z}{ƒ‡xvsr†‰}ur„‰v“xxƒ{†…xwmzzlŒtŠq‡~‹zŒw}‰y‚{†x|w}y€ƒ€t‰€€o{‡ƒ‹€u‡t|~s|ƒ€Š|vp†{t‡r‚uvy€{‰ˆ†ˆ~yy†t}}tƒ||{ƒ~w}}q™†Œ‘|†Šm‘€_Œtz…tƒ|ˆ‹‹ˆ€ƒp|{r„€…•q{|vs„kr…qŽ„‘~zs‰z‚{yr‚y’‚|ˆo|Šy€Žw~ttzw‚k€vƒˆ}{{qvˆ‡rŒ‡|…wn|t‰fi„q„‚~Ž{‡p†ˆx‡s—sŽqc…p…m”\pÂRöÐWÿ‚Et¯ûÿrÿÎÅÿaÿôšG-…åÿPÿ®Ý÷‹ÿ-ÿÃ_ h¼ÿ4ÿ†ûæ«ÿIÿڄ,<¤ïÿnÿÀÈÿuÿö©D'ÕÿCÿ¥îñŒÿ9ÿÂpZ¾ý*ÿ‚ûØ´ÿUÿêˆ4=’òÿ[ÿÁÓÿuÿ$ù¬O|ÔÿFÿžçóÿ8ÿÑk +X¯ÿ ÿÿÖ´ÿ]ÿ +á™15šä +ÿ`ÿµÖÿ}ÿ ÿ°V!mÑÿ<ÿœôè˜ÿFÿËxJ·É0[Wœxkˆvpƒ…€{zzr†{ƒwy…|‡‡‰…Šv~ƒvmƒu‚†|€u‚yˆ†r„|ŒŠ€|s„}„{„xˆs‹~z‡ƒ‚}j{~‡…|}xƒŒƒy…v€€€uu€pxƒ‡Š›Œqo€x~tv†nu”yt~€|wƒ†yz…{lvx†t„ƒ|v’€†v†…ˆ‚Ž€„|‡xv}r}z|z}t~xu„‚{…€„~‡‰}‡x„‚tu€ysƒ|…Ž‚wˆzyŠ{‰‹m…‰p…z~‚Š†Ž’uu‹v|„ˆ{ˆzsuvxƒ‡zw†hzŽt}ƒ„z}zz…|uˆ€zŒt‹~w~‚ˆ}…q~‚xyƒx…†Œ|~‰‚~}t‚y~Œ|uz{€€‚‚}x€qy‰r™|€~†‹tˆr”zx…„q}jwƒ|†‡ƒ~‘~†…|z{‡}t–†yŽrw~‚~m|€†q‚†ƒ€zrv}Šr|ny„†„†vsw~p}x†x„~u‘‰Œ~‰~„y€Šv‰…ˆ€xz{~€}zƒ…lƒ‚ytƒj…w†x~}„‚}zuv}yw‚‡†{}Šwypˆ~y`{{}€l„p|~•~‹Š|ˆ…u}Šƒ~{zq{‹Švh{…ƒ€„’€”p›ŠšÎ +Ò±ÿiÿÿÏÂÿfÿî B(‹ÛÿUÿªÝþÿ*ÿÁ_cÁÿ.ÿÿÞ¦ÿUÿى'?§ìÿjÿÂÏÿmÿü¤N*yÜÿCÿ§çîÿ;ÿÊl`¶ÿ,ÿ|üß¹ÿRÿ ã‹98—î ÿeÿ¹ÏÿÿøµN +vËÿCÿšñò˜ÿ?ÿÊt N¸û ÿÿÏ·ÿbÿë•6:“æÿUÿ½Ýþzÿ*ÿ²`oÌÿ=ÿ›ìè¢ÿ?ÿ×r"V£ÿ%ø\C¡‡‚z‚cƒƒt—t~w}…~{vˆx„ykszlˆdzv|e~|tŽ€’…‘wƒ{‚qeŽo‡v„{yv…oŠr…~ršoˆ‘mpp‡dnšY•yl˜{rŒ~…Žˆ‡Žx•yƒ…{€xwƒsw†fq}y†’q•jt‰~ˆ…y†vŠƒ{‰sxzsŒ~‹]}}w~‰ru’„ŒŠzpqŠvzƒc~|{…pŽŽŽ}‹€zŠ„„’r”ƒu‹uuq€r€€vš“Ž˜„yv|~}‹w”‹{–†wkƒqo‘‡Œ‰„~l{tp“…‡”xv€xŠ‚|ƒog„xšŒ€„n‘w…‘j|‚l„xv€„}vj“€~z|~‹‰{‘…ƒ€„…v‰zƒŠ|…zƒ††‡tz|ƒ}~„v„‹z€‚o†{‚‹„‡‚‡tƒ‚†}t}€{z{€|}‡Œ€~|‚y†|€“„„|}|‡‹vwx…~ˆ}~€a‡|}‡wm}……‡Š‰€ˆ†„‰ƒ‰y}Œ‚‡}z~“y‡„v~‰~‰…„zx}{‡€xvˆzs~t||xˆ|}}|y…„……Ž|ƒnt††ŠŠ{€‹“wšzw†y‹k€umŽxq‚}ƒ‹‰†•…‡ƒy…yz‰u‹sx€ym{v…~|„‹€‡Š‘¼º +¾ÿŒòìÕÿÿ%ÿµagÍÿ4ÿ™óä¤ÿIÿÙ~%N¤øÿlÿÍÉÿbÿòŸG%…ßÿPÿ¨Üú‘ÿ-ÿÆac¹ÿ,ÿˆýæ«ÿQÿڍ(> êÿmÿ½ÍÿsÿùªJ)xØÿAÿ¨ëñÿ=ÿÆp[»ý,ÿúÙ»ÿRÿè‰9=’ñÿ^ÿÁÏÿzÿ#÷±O{ÍÿFÿ™ñïžÿ5ÿÎq + S±ÿÿÿÕµÿaÿâ˜15–ã ÿ[ÿ¶Ùÿzÿ%ÿ¯V!lÓÿ9ÿïê›ÿFÿÕvU®û&ÿtþ×Àÿ[ÿí’@7Œî ÿYÿºÕü~ÿ%ù»U vÆÿ?ÿ’ïñ¢ÿ:ÿÑw "O®þÿzÿϵÿdÿ é50’á ÿXÿ²Ýÿ~ÿ&ÿ±] gÐÿ4ÿœôäŸÿGÿÑzS¬ø#ÿsÿÓÄÿ]ÿï–C5ˆçÿVÿ·Øú„ÿ)ý¾V +uÈÿ=ÿóî£ÿ?ÿÔx&J¬ýÿwÿ̼ÿjÿ êŸ9-”ÝÿTÿ¯Þÿ‚ÿ*ÿ³_ gÌÿ0ÿ™ôå¢ÿKÿ×O«ö!ÿoÿÐÇÿ_ÿò—E6‡èÿSÿ²Úù„ÿ,þ¿Z +qÆÿ;ÿŒðî§ÿBÿÖx)L©úÿvÿϽÿkÿéŸ:*‘ÞÿUÿ­àÿ†ÿ'ÿ·]cÊÿ0ÿ™÷äŸÿKÿցM«ôÿpÿÍÅÿ`ÿô–D3…åÿPÿ´Ü÷‚ÿ.þ·\ oÈÿ8ÿ‹òê©ÿ@ÿÚy)N§ýÿsÿϾÿhÿé¡;&‘Ñ]F›n†‹yz‹‰‹v{†€Š||{†rŒ~{m}}pƒƒ}w{–x“ƒƒ{‘ny~†yƒro{u€˜qŒt’€{Ž}ŠsvŠqpˆqŠ„sŠiuzz†Œ|~l„l€Œp†…k„ƒˆr|‹Š„Š~ˆhx‚…Œ‚zz†us‡w†‚bˆ~tŽb„r‰Šuƒzo‚ˆ‹|~wˆr‡‚{Žw}‰m„…s{i‘vzlrˆ”mwx}yu…ˆƒ|†swys„‚ƒ‹m|ˆx†n‹pjƒq‡r‚†y‘†p}nuŠƒ†‰z‰pŒ‡{„vm…qŒƒ€‚|x‰…€…‡‰“v{zy‚|‹yŽ‰†€}x|€ws~ƒz…{€}†‹‡‚‡ˆ„‚†|…y}{kŠo{}y€…„ƒ‰|€…}~…|…‚€|~u€~w{|yz€{~y†„z‰ƒŽ‚{‰|xvwp€~~y}v†wŒŠ~‹|ƒ|‰}{n|„puz‡}€‚€ˆ|Ž…„€}ƒ€v‡nwitx†€{|‚ƒ€‡xwu…}|uxv……|}{‚ˆu‚~~}„xn€‹‚uŒ}{uq€w‡‚‰~…y{t|}…ttv}„‚y}„‡ts€ˆ…‡~…um|v€y~€}ƒyƒu|‚†€n†}t‰~¢Å"á=™ÿ`ÿÿÓ¿ÿcÿê™?(ßÿVÿ¬ÙÿŠÿ&ÿ½`gÃÿ-ÿþߢÿOÿډ&B§íÿhÿÆÎÿkÿú L+yÞÿGÿ¨åï‘ÿ8ÿÎha·ÿ/ÿ}üá¶ÿQÿ ã‡49ší ÿfÿ»Ìÿ|ÿø²L vÌÿ?ÿóò”ÿ<ÿÈv R¸ú ÿÿÒ·ÿ]ÿ +î’;;èÿTÿ¿Úþwÿ)ÿ²\pÐÿ?ÿ–ëë¤ÿ>ÿ×s%U©ûÿvð½•A•tŠ}‚ƒy†||†|‹Š~}‚|xƒqv€‡{„t‰’‰†z‡u‹–‡€z|tp|ˆt”}~v€’ƒ…kŽv„‡……bz|€…Š‡‰€‚„„}„koy}x…{v„y~z…~ƒ}Ž“ˆƒ‡q‚y}z‡t~tw€t…ƒzƒgx“„Œ…„zx‚ƒ‰yz}u|‡qƒŠ”x†„‚™}~~ƒ€}Œ†p~v‰†tƒ}†šwƒ†ˆ„‡€€qƒ„‚s~~}‡t€†Œ€}„†˜‡€w~}m€‡„Œyww|s‚…~‹€„‡†…„‹zx}~w‡t†x{€—t…}„‹y“ˆˆ~{€‚d†€zs{‹w†x‰y†wrƒ~Šowƒ‚€‰}‡urxlŠo†‡st€|ˆ€tƒ{x‡t‰u|‚€trrzyxzŠˆ‹€rŽ…€~{~‰“w}r~‚y†•{‰†}…tz{|„„„‰}€‚~u‰v†~„~‰{†Œ‚|}€„vzy‚oŒ{€Šu†u‘uoo€‡z€~xo„yz‚ƒ„}‚ƒz‚z„ƒ‰€v†‚Œ}{}m‹ŠvŒo‡}s‹ut†vzˆ{|Šo‰iˆr‡z}‹z€†p‰l‘rg”n‚“f‡wmŽk|…Œ€fšJCÀÿžÿׯnWµü'ÿýÖ»ÿYÿ î89ŒëÿXÿºÖû~ÿ'ú¼VtÆÿ<ÿŽôì¥ÿCÿÔ|&D­øÿtÿÈÂÿoÿ í¡@-†ÛÿLÿ®æú†ÿ5ÿ»h _Äÿ0ÿŽöÝ­ÿOÿå€.Hšóÿ`ÿÄÍÿmÿôªLƒ×ÿKÿžã÷™ÿ1ÿÉj Y·ÿ#ÿƒÿÝ°ÿ[ÿà—-:›å ÿdÿ¹×ÿvÿÿ­S%pÕÿ<ÿ£ïë”ÿBÿÒuWµü'ÿvüÙÀÿWÿìŽ=9ìÿ[ÿ½Óýÿ$ù¸S +vÇÿ<ÿ’ïó¡ÿ<ÿÑy !M°ýÿ{ÿÍ»ÿiÿ êœ82ß ÿTÿ³Þÿÿ+ÿ°`iÍÿ4ÿšòã¡ÿHÿØy!Q©ù"ÿmÿÓÆÿ^ÿñ•A/ˆæÿUÿ°Ùúˆÿ'ý¿YrÂÿ8ÿ÷ë¦ÿDÿÔ%E¬÷ÿuÿƼÿjÿ î¡:-ŠÝ ÿNÿ­ãþƒÿ1ÿµb aÌÿ1ÿ—ôá¥ÿLÿÚ~$N¦öÿiÿÑÊÿbÿòœI-…áÿRÿ®Úø‹ÿ*þÂ\m¾ÿ7ÿ‹ùé¨ÿHÿ×(A¨öÿtÿÅ¿ÿnÿï¤<+ˆÙÿLÿ¬ãþ…ÿ.ÿ¹g bÈÿ.ÿøܧÿOÿۀ#M¨õÿlÿÌÍÿaÿôšH1ƒåÿQÿ±Þö‹ÿ-þÂ] j½ÿ:ÿŒôê«ÿEÿÚ{)C¥øÿtÿʽÿkÿë¢;(ŒÛÿRÿªàÿ‡ÿ+ÿ¹cdÈÿ.ÿŠùó´|«|t“†jŽˆ{}{‚x…s†sw…{y|€{}f…r…„‚~€}jt‹€‹€……€|ƒx{tyrsp}vzt}Š€Žzv~y‡‚ƒ€ƒ|ƒw‹q|kysx}‹{‘{Šƒ{~‚‘q…xy{y}ˆps|„†ƒ|ˆŒ„‰ƒw|‚x†|‡~€‚w|h†ƒw‡ˆs‚nt‰†…‚€ww‰zs‡{ƒ€~‚xƒ‚…‚z{zƒw}ƒ~~€~{wt|€ˆ~x}ˆ}}…t‡~~…o{~~‚‚ƒƒ…‹‚~}|y|ƒ{tx‡€t~v‚|‰ˆ‰ƒ€{}y…w|‰ƒ„}‚ˆ‡{‚†‚‡…{‚{}’u€x}u‚s~vp{q‚zƒ}~|u†w~„|r‰s€Šlws‹ƒ{|”yˆ†‡‰ƒwu„ƒŽl„vs|y„€‡~†„ˆŠ…}zxy}k‡t‹mw‡{†~„y|†…Œ~{Œ„Œ~n‡y}‚~q—z‚‰‹„~†€gŒr„Š€|€ov…n}€~‹{‡p…x}„ˆƒz‹„‡……z€{ˆ€u{‚{ˆ~rz|”vvyƒ†y€{„z‚z‰x~{x~…s…‚‹ƒ…u’lšd‡‚v‚skƒsqŽZyr„ˆˆ|{€‚€‡†}†ybŽk‰k„v}}ƒnˆJÿ€µÿÜ*4iÂÿ*ÿˆþâ«ÿTÿݐ,<¡êÿcÿ¼Ïÿtÿÿ¨S%tÖÿ=ÿ¥îë˜ÿ?ÿÍrW¯ÿ+ÿzÿؽÿVÿë<8‘ëÿ[ÿ¶Ñÿ‚ÿ#ú»R uÇÿ9ÿ’ôïŸÿ@ÿÎ} K¯öÿ|ÿË¿ÿiÿ +ïœ93‹à ÿOÿµàÿ~ÿ/ÿ»dhÉÿ5ÿ’ñâ©ÿGÿÝ|(M ûÿkÿÑÇÿfÿïžC*ÝÿUÿ«ÙýŒÿ+ÿÂ^gÀÿ-ÿûè¥ÿOÿ׉#8žòÿpÿÀËÿvÿ÷¤C-ÝÿIÿ©éó‡ÿ8ÿ¾f `Âÿ1ÿ‡ôà³ÿNÿã}/Gª÷ÿeÿÍÉÿlÿñ¦I"‡ÚÿPÿ£ßú”ÿ1ÿÆcd»ÿ*ÿˆÿß©ÿOÿۊ);¦îÿhÿ¾Éÿqÿù¦?,}ÚÿDÿ¬èõŒÿ8ÿ¿p_Ãÿ/ÿ‡÷ݳÿOÿå„3H–ôÿeÿÊÍÿpÿó¨L"‚ØÿNÿ¢à÷“ÿ,ÿÆc b¹ÿ/ÿ…ùã¡ÿQÿ܌)>¤îÿlÿ¿Åÿrÿø¨H'|ØÿBÿ«íõÿ8ÿ¾l\Åÿ+ÿ‰øÜ°ÿPÿãƒ/Iòÿ[ÿÌÏÿhÿõ¡L&~ÝÿIÿ¤àõŽÿ-ÿÒl +b¸ÿ/ÿüæ±ÿRÿۆ->¥òÿoÿÂÂÿqÿô©E&…ØÿMÿ¶ê÷‰ÿ2ÿ½d\Åÿ,ÿ‡ùÚ©ÿQÿ݌.I¦óÿhÿËÍÿhÿ÷K.€àÿMÿ°ßõ‘ÿ1ÿlj±r”~ p}v}„{„„–~‚s€wŠ|k€rœ„z€|wƒz{”‹’xy„{„{}‘—tŠ†~Žz€w‰}Šun‹€ƒ‰‚’Ž–ƒxtŽx}pg‚€•jjou{…k„‰†w‡…v|vom•}„‹twu…ˆ}…ŠŠ€‹kŽx‡—}€u€lnzzjovrŽ†|Œ‚‚w…`pŽu…}‰‚€u‰›|†{„Š~u†„h}y–~{i}Š|s‡vƒ~„qpqwŽ‡‡~„…–“q€~y}vy„~mp~…u†}ƒ‚ˆ€‡tq…‚ƒ„jwzpu‰ux„|ˆw‡}zw‚z€z€yivlyrwvk€€…‰Ÿƒ†‡w}žŒ„{~y}zkjx|k‡€ŠŒv’m‚Ž}|€rˆkavuxy{rwŒz…z‹zxy„jpq‡–„}Ž€x}€}•†zŠ}€s–|Žz‚rƒt|y~w{z™€„€k|’o€ƒ{‚—ˆxˆvŽ€Šxw…r‡„qtow}{vvŽ†•}ƒ’s{r”hx‘p{m’ƒ‚r‹xz”|uˆ…yzzz{zŽulno‰‚iŒx|o|‘…w‹zxŒ‰“”tŽ{}‹vwŒa{ƒvŠ€~‹g{”b‘ˆ_–qu{Š‘z‡uƒ|‰|†ƒ‰‹d´Ž‰Æ­Õÿ‘ÿ³íð˜ÿ@ÿ̆S²ø$ÿwÿÓÁÿaÿð“@5…äÿUÿ²Øú…ÿ+þÀ[rÂÿ5ÿõì¨ÿEÿׄ(B©óÿpÿÉÆÿsÿó£@+‚ÙÿGÿ©ëóŠÿ8ÿ½m +_Âÿ.ÿˆûÖ¶ÿMÿâ„-C•óÿaÿÇÏÿpÿì¬N}×ÿMÿæõ›ÿ/ÿÈh +X³ÿÿÿÚ±ÿ^ÿސ14›ä ÿaÿ¸Òÿyÿÿ¬U&tÔÿ<ÿ£ðë—ÿAÿËwY°ü(ÿ{þÕÀÿVÿî<9î ÿYÿ¾Óþzÿ&ú·RvÉÿ?ÿ’íó¡ÿ=ÿÑs#P¯üÿ}ÿÒ¹ÿdÿ +èž52•à +ÿ[ÿ³Üÿÿ#ÿ²^jÏÿ5ÿšóåšÿGÿÕ{Q­ø#ÿoÿÔÄÿ^ÿð—D5‰ëÿUÿ¸×ú„ÿ)ü½X sÆÿ<ÿñî¦ÿ<ÿÓw&L¬üÿyÿϹÿgÿ é 7.“ßÿUÿ¯Þÿ‚ÿ(ÿ³Z +fÌÿ3ÿ™õäžÿKÿÑ{P®õ!ÿpÿÑÆÿ`ÿó”C6‰éÿSÿµÚø‚ÿ+ý½Z qÆÿ>ÿòì¨ÿBÿ×u'K©þÿuÿÌ»ÿgÿçž;*”ÝÿZÿ®Üÿ„ÿ$ÿ·Z hËÿ5ÿ›öæœÿKÿÓ~Lªô ÿuÿÐÃÿaÿõ•B9‰çÿPÿµÜøÿ-þ»\pÉÿ>ÿîë§ÿ?ÿØt(N¨ÿÿuÿÓ½ÿeÿçŸ9+“áÿ[ÿ¯Øÿ†ÿ"ÿ·T{URWoˆyq‡„…Šƒ‚wŽŠt€q€q{}r}z‚|…uŠ~……w}|ƒ™~’v†}‚‰ŽlunŒ}€}q•™zŽr…|‚vx‚˜z„v|…„‡wv|…‚ƒ„y}Œw}}mŽ|rƒƒ‡ˆ}…|y‚}vƒ~…yŠ}Šƒt|xv{|‚ˆwzŽw}†yz…yŽv†‡Š†Œ„xrƒƒ{Šwv…„ˆ€„‰{y€|}ƒi‹t~x~ƒ†‡Šq‡z‰…}‚}€v–wz|€‹w…‘ƒyz}z}ƒl‰€…z€‡sw„‚s„ˆƒ~ƒ„Š€}†ˆ„|„Œ|yˆ|z„}v}‰€{~sv€v†„tˆƒƒxy~rwv†Œ„ƒ|„x|‹o‡…{„z|ˆ‚‹t‚p€€Œ€…uˆt—wwƒqtw’ƒ„}€ˆ€zˆeˆx……w‡qƒƒƒu{†}yƒ{zƒ“zz~q†st}‚…Šxƒ{~…t™€„‰g{Šl}…fˆ†g}sŒ“u‚z|•qƒ‰ww‡pŽ‚Ž|zw€€z…x{‡k”r‰udkxsr|ˆŠ€~€|‚Š…sŽjˆ„w|lxk}tŠ‰q‡–Ž~xŽ‡‹‡~‰v‹€‹Šz{„w}„k–qpŽuw–{„ˆh}k…Š{†{x‚„yˆh{ZÖjÙò ûGo™ÛÿDÿ¦êô‘ÿ>ÿÃq Z»û(ÿ‚ûÖ»ÿSÿèŽ8>ðÿ[ÿ¼Óýyÿ%ùµSwÉÿBÿ”îñ¢ÿ>ÿÒt#R¯ÿÿzÿÍ»ÿfÿ êž7/Ý ÿQÿ±ßÿ‚ÿ-ÿ¶d eÌÿ2ÿ—ôá§ÿJÿÛ~&N ù ÿhÿÏÇÿdÿóG(…ãÿRÿ©Ûú‘ÿ-ÿÇ[hºÿ/ÿ‰üçªÿNÿ؉(@¦îÿoÿ¿Éÿqÿö¨EWfbe‹{w†}…‚v‚’v{‚€€wyyn‹yw~}zˆ|n‰|†{}wzh‚x‰{v‰„„‚t‚{tƒx„yz€€yy€tƒ|„‚||ˆ}‰zŠŠ‰t‰w~}‘ƒŒ†~ƒwƒ…„kmosv{jŠ€‘v‘y~‰vŽ—r†u‚€~v‚s‹w‹xˆƒ‹Žs}u†‚€}o|x{‚mƒ|‚n‰zx„}~‘‡ƒ}€‹……}‡n„wu†tu‡|„{‹m…xy…|‰„wyx~v…q‰ƒr€yz~‚Ÿ€‰}~oƒw‚tuŠ}}‹t~o„Šv~ˆ|rŠt|}w™‚Ž‰„{xw…‡Œ‰w…ƒnˆ€q‚y€~‚|ƒxry|}†o‡u€nuk„Œ„Œ†uŒ„†ƒv||ypr~wˆx†{Œsz~y‚uƒ}~†uzwpŽs„v“Šzs†x‰yzvz{ƒ‚tuˆ€ŒxxƒuŒƒƒr–q}•qz‡Š€m‡~|‚ˆ|Š}~}jws}r|…Š|“†‚vv†{†…v}xxˆxˆk|Š‚‹~„„q‡†z…ƒt…wƒu{~}{pyŒz~zzˆy…y‚wzs‡zƒ€||Œjx„l‡„rzŒ€y‚q„“ƒƒ‚oˆ‚Š€k|Š‚q‡kr»vWÿ0ñàÿkÿ÷­J ÓÿFÿéø–ÿ7ÿÇpS¸ý!ÿ…ÿÓµÿ^ÿè”0:‘èÿWÿºÜÿzÿ+ÿ°\oÐÿ<ÿ–ìé¤ÿ@ÿØu&Q¥ÿÿrÿÓÀÿcÿêŸ>)ÜÿWÿ«Üÿ‹ÿ&ÿ¾_dÄÿ-ÿ’üã£ÿPÿ؆!D¥ïÿiÿÆËÿjÿøžJ-}àÿGÿ®ãòÿ5ÿÃf eºÿ2ÿ÷ä²ÿKÿ +â„2E›ð ÿiÿÃÆÿsÿó¯C ÒÿIÿ éù’ÿ4ÿÂlV¾ÿ%ÿˆÿ×®ÿZÿà*B›ëÿ_ÿÁÕÿrÿ"ÿ¦T#uÚÿCÿ¤æî“ÿ9ÿÏk`³ÿ,ÿzþÞ¸ÿQÿå79™î ÿeÿ½Íÿ}ÿö³K{ÌÿCÿ›îõ–ÿ9ÿÇqU¸üÿ„ÿÔ°ÿ^ÿæ‘2:—èÿZÿ¿Ûÿtÿ$ÿ¬Y q×ÿ@ÿ¤êëšÿ=ÿÑnZ­ÿ*ÿxþݽÿUÿç:8“êÿ`ÿ·ÏÿÿøµL|ÍÿCÿ˜ïõ™ÿ;ÿÊo R¸ÿ ÿ„ÿÔ´ÿ`ÿä•.<–åÿ^ÿ¼×ÿsÿÿ¬Z#oÖÿ<ÿ¤ëë˜ÿ?ÿÐr[²ÿ,ÿzýÛ¼ÿUÿéŒ:7ð ÿaÿ¼Ðÿyÿ!÷²O}ÍÿBÿ™êõ›ÿ9ÿËp U¶ÿÿ‚ÿÖ°ÿ]ÿâ•17šåÿaÿºÖÿyÿÿ«V%p×ÿ=ÿ¥îì•ÿ@ÿÌrX·ý+ÿ}ûÙ¼ÿUÿ ìˆ8=‰üèLqK ‹y…†€‰‘…Žy…„v€y€ŠtwŠv‰{€‚……†€„ƒ~‡~x‚z~€}~v…vƒ€ywŒt’}–…ˆƒ‡xt{upm}”y‰uw€u‰~‡…‚Š‹‡Šhm|{‰sw„y‚ƒy„„•…s‰†ˆ„ƒw}ƒƒv~v‡‚{z†…y~uxy‚‚~Œ}~‚‡wx„ttŠ~‚xyc‹zoƒ‚Œ~Žw{‰…ˆ|‚zƒ‰†o—~†y‚wŠ{€q†||ƒ€ŠˆŠvzz}ƒyxw‚„„~„~x‚wy‡x~‘|zw~y~msy‚€†ˆ‚}†su‡zˆƒxŠ„q‚ƒvˆwxy‚~yƒ|‰~€~}w{p~~d}ƒ~„{{q–€{ˆlyƒz‚st‚ˆ~‚y€…{xƒˆˆ€Ž{z„|i‡w‡‚ƒ~…my|yusˆy„~‹‡…†{z~~ƒ{†y|ˆ…{…€‡zy{~}ˆŒ}„|‰~yxt‚j‚jvŒ…qwƒ‘…‚{„‚‹…}wk†||v‚†sq“w‚}}€{‰~ˆ™€‚~vsjwyx|„‚s„‡‡Œ|€Œ~ƒˆ{‚†vƒ|xr|†|q}‰x‡zƒ{q‰‚‘‡Š~‡|tuy|€‡}ns‘}Š“}}Š}y~y{~w}‡xsvrvrtˆy·‘™ÿÑ·öÿFÿ¤ïñ—ÿAÿÉt S¶ú%ÿ{þÓ¾ÿYÿ ï‘=:‹ì ÿUÿ·×ú}ÿ*üº[ sÆÿ:ÿñï§ÿAÿÖ}(J©øÿyÿͽÿlÿò¥;+ŠÙÿMÿ¬äþ†ÿ2ÿ»i _Æÿ-ÿ÷ݬÿPÿãƒ,JœôÿfÿÊÏÿkÿö£M#€ÚÿLÿ¦áõ˜ÿ0ÿÊe b´ÿ(ÿƒÿ߯ÿTÿގ,9Ÿê ÿiÿ¹Íÿxÿû«K%wÔÿ<ÿ¢çí·m‘_‹u‘j|{{€Šy~wŒp’y…ˆƒ|‚{}€x‚‡y„…†uƒƒ‡{xƒ~wˆ€‡x€yut†{}„…€„~…{v|}yƒ~‡„†}x€‚|ˆ|‡‰|…|ƒ‰~–~n‡sŠ†‡Š‡ˆ‡’{€ˆ–}x{Žz‚…{ƒ…†‡€Š}„w…‹‹†vv{{‚€zƒvq‹‚‡ƒ…|†}y…w€„r}}gyz}~xˆ…‰„xƒ{|’iw€ow„{s}…}|{pzƒx€„‰y‚‡{‡~}}…u€yz‡{…|~v…„ˆƒ‡u‚~~~ˆ|o{Žyv}|Š|‰|u€~}‚}|t‚~‚€v€vz…{}…z‚w“„…†}†‚€€vi{pw…|xˆ€{pƒ„†€Š‚~x‚z~xƒv~||wxƒˆ}‚z}Š‰‚„{~€}|qt}tƒvŠzu‚ƒ‡†„wpyˆzƒ‚„„‚t{€…vxŒ~v„x{|~u„|z„vu†~}Š†~†~qp‡‡xŽ€{~~|‰|w~€ƒ‡zz…†w‡ƒ}~{xŒqz~~„{Ž‚‰~ˆ|„‚‚…m’€yƒ~‚ˆ…‰’‹}}v}€€}~tq…†}}um}}x„ƒˆ†‚ƒs{yzy|Š~€t‹gÈ}¢ýâ&©ê ÿ/ÿˆþá®ÿPÿ܍-> ê ÿhÿ»Îÿyÿþ¬O#tÓÿ;ÿ£îî“ÿ@ÿÏvS²ú(ÿwüÖ¾ÿXÿï?7‹ëÿVÿ·Öü…ÿ'ü¾YsÂÿ9ÿŽõí¦ÿGÿԂ%EªöÿuÿÄÁÿmÿó¤@-…ÛÿMÿ¯çú…ÿ1ÿ¾i ^Äÿ0ÿ‹öÞ®ÿOÿä/IöÿbÿËËÿnÿó¦Mƒ×ÿKÿ¡ãø–ÿ0ÿËg ^¬ÿ-¼_‰IŠs~v†„‚vƒw‹„o‡zyw…z}ŽŽx…~€zwv…ƒwƒ‚|‚‘}‚}tŽŠ{‡vt€zŠ—}…ƒv…x}k†€}‚wˆ~q|~x{z~ƒ€‡‰ˆƒo€†€yƒ|‚Šy|ƒ}‡…‡€{y‚{€vv‡†q}}|†€ŠŒ„…„w€zusvƒj‚uˆvz‚‹{‡„tŒ|„ˆ|€†y|u†x~€~y{uˆ€€~y€x’r‘€ˆ‰}s…u~y|}Š{…tŽqŒŠq…t†„uvi}Œ~x{x†‘~x†ŠˆˆˆˆyŠy†~~…nyy‚zusˆƒ}|~€„€r‡t€Œrzz}†ˆw~…|qx‚y„sv”Š‹l|‚f~v}z}†ƒ‡qƒwj‡}‚‰y€‹x…u€s|ƒys}‰‚€‚„€…~|‚vƒx|Šˆu†z{†ƒ|„{ˆ€Š€t‚u}xxix|q||z„…‰v€ˆz~†y}|z~w|v}‹}€|zŠ‡ƒvt“Œc|ƒƒˆr‡hwytƒk‡}‹~’v~…w‰y~Œ}…ys…‰|‰u‡˜ƒˆ”qƒ„c•{‚iy|zwƒ…~fŒu…”ˆ|—js{h}~’‚rŒp‡ŽfŽn}ŒzŒu}zquˆgv.ÿkÇÿçK%6âÿ[ÿ¸Ûÿ†ÿ(ÿ¸]jÈÿ/ÿ“úãÿLÿل"HªòÿiÿÈÏÿeÿ÷ŸK(|àÿKÿ¨áó“ÿ4ÿÉde¸ÿ+ÿûæ²ÿRÿ +ߏ0;œí ÿdÿ·Íÿzÿü¯K!wÐÿ;ÿ ñð•ÿBÿÇwR´ø$ÿ~ýÓ¾ÿ\ÿ ð<:Šë ÿVÿ½Ùú|ÿ*üµWsÉÿ;ÿïí£ÿ>ÿÖv'Pªÿÿwÿκÿfÿé A)~Bˆ„Pˆˆo‚yt„vˆ|r|†‚ˆ|z{ƒ}q{tƒ|…ƒp}~}ƒ„ƒ˜€||€zr…ˆŠw„qwu~…†…ˆŽ…‹j€‚‡ƒzˆw‹‹x„v}……Šƒz†‚zˆ€|x‡~yvz„€†…u‡tx‚vtzw|Š}……Šyz‚q‡}u‚xy{„{€‰‚‚‚‚Žz‚…|‡ƒˆ{|qƒ{~vx~™„Š‡“ƒˆx‚‹wŽx}}t‚x~oˆoq}ƒ†‰„ˆ‰}u‡{‚‚y|||f‰~t†}~‚{‡€ƒ‹{ƒ~…ƒ}}u{jnz}n„„|}‚ƒ‡„~}„x‹t‡‹‘|†‚†w€ˆ~{xˆ‰||‚hw|„‘‰~xq‰}{„ƒ„|{{{y|w„s}{‚Ž‡ƒˆ„t‡v~ƒ€‚qˆ|‡{w||}xq…zxuxy†~‹„‚‡‹‚|po†…Šs†„‡…‚‹wx{xx‰|‹zŽ|ˆxv~z•’ƒ€Š‰‡€‹hoƒ|vr†|€‘”‚†‡x‹€„Š‚~vt~bws€}ƒzˆ‚ƒƒƒ…~}yz|u€x~{‡x~„„Š€‰”‰||ˆŒw„x‡„}q}wuz‚ˆŒ{z†‚‰†~›„{wuu„x†y‚–v„uxx|€t™x“z„ƒŒŽf RˆÿWÒþUÿ0ÿÊr O³øÿÿÑ»ÿbÿ ð–=3†æ ÿOÿ·Þù€ÿ.ÿ»` kÂÿ9ÿŠôç¬ÿGÿß},E ÷ÿmÿÇÄÿrÿñ¬A$†ÔÿGÿ£æýÿ4ÿÁmY¿ÿ%ÿýÙ°ÿXÿä.@˜íÿ[ÿÄÔÿqÿ$ý©T#vÖÿDÿçî›ÿ9ÿÔmZ­ÿ%ÿyÿÙ·ÿZÿä66˜åÿ`ÿ´Îÿÿþ³Q qÊÿ7ÿôí¢ÿ:ÿ&Á¨­Z‡oˆ†{w†‰‹z„}ƒx‡†Š…z~}Š„~‚„|…y}}}†€‹}{€’ƒŠ{€}{xz€qyƒyz„€x{hŒ‚„xz…{u€}†~|}‰~rwz„Š‚{€‰w†{u}}x€{~ˆ„{w†‚vy~v€‚}ƒ„…„~‚ƒxŠw‡xˆ}…xqt„{u|sŒ‹ˆ’…„wŒw„‹r…p„y–w}Š|ƒyˆt†„ƒ‘{{‡zuvgtnwu„y€ˆ~€yŠ~Š–•u‰ˆ{|†r‚ul~z|„{€|•†s‰‰ƒƒ{}…‡iyz€qgz„†‚~vt{…Š€Šw†}~…~rsx‚~|‡|t†s‰qq„‚|‘Œ€‚vzˆ{~wwkuz{‡‚…}Š…‘‰l†„u{y}{}€zt€“w…ˆ~‚†’w‹m€xƒ}wz‚sŒ{ƒ€†x„ƒ|vy“xˆ|v‹wu€yxx|v~€‘…Šz|rxz}yyƒ~ˆ–v}l}v€‚††zŒuww{zˆz–€‹‰€‚y‡z‚~rŠu~†‚…€ŽvŽ…x‹v††‹|{{‰i‚oz€{……sy~tq„„}…‚|‚s€yy‡xƒ{yŽu€‡z€‚ˆv“||ƒ‹‰}„†izvŠl|g»p¸îï=ãÿ*ÿ‚ÿÕ¶ÿ_ÿ ê”69’æÿSÿ½Úÿzÿ*ÿµ]lÌÿ<ÿîé¥ÿCÿÜv(N¤ûÿnÿÏÀÿlÿë¢A%‹×ÿQÿ§áÿÿ,ÿ¿g^Áÿ)ÿþÛ¨ÿUÿމ(CžíÿcÿÅÒÿnÿ ü¥Q(wÚÿFÿ¢åð”ÿ8ÿÏha´ÿ*ÿzÿà¶ÿUÿ á75šéÿeÿ¹Ïÿ~ÿû³P rÌÿ<ÿ›óï•ÿAÿÊw K¶ó%]N›c„‰Šw•€xŠt…vy{x†…z‹t…|zt‰w„‹‹zt}xyu{‚t‹€w€}ƒ„Šm”‡qkˆ{…n–|~„hpzst„…ˆƒ|{ƒ…~{tŠ€Šv€oz}rƒty‚tyƒ†~…{‰~ƒ€ƒyww€vv{€}‚‚}…|zy†y…}s‚|{t„Š€Œ€yƒx{}uƒt‡y„ˆ{ŠtƒŽ„ƒ‚|Š~…{y}v‰Š{‚Šr€‹x}y…‚ow|m}{s{‡vz†mz†‰†€~Œp~|€†Žƒ|Ž{|zxy‚yv‰~z‡„Œt|…zŠˆ€t~ƒ€€…{xxy}ƒ~‰}{Œƒ‹||}Œ|†~zxu‚w~ƒ‡†tx}z~ƒz€|q€y‡ƒxp€~||„||}~ˆ}gn{~€~|€†t„q…‚vzy„ƒ}{‹}xƒv{Šw}q{‚{†q‰~}‡yu|~nƒo‚~{€‚‹‡‚‹†vvx{‚tƒr‡…„s„w‡{|…†…’~|ˆwz{y||ny{|’{–uz‹s…€z|p{‚„}{tgvz€†‰Œ€†Šwz„…‰Œy}{p‚uƒw‹~~ŽŠ|Š‡„r‚nŒ†qŒp„†ƒ‰u‹q„v‚z„|…”vŠff¡+ÿƒ¦ÿÑ-"a³ÿ&ÿxÿÛºÿ\ÿ蒝ê ÿiÿ¼Îÿ}ÿú±N! wÎÿ:ÿŸóí•ÿ@ÿÉyP·÷#ÿzÿпÿ\ÿ î’=6‡ê +ÿSÿ»Ùú€ÿ,ý¸[ +pÆÿ<ÿŒïî§ÿCÿÙx)K§úÿuÿÌ¿ÿlÿë¥;*ÚÿTÿªãþ‡ÿ,ÿ»b^Èÿ.ÿŽùݦÿQÿ܃(H¥òÿeÿËÎÿiÿøŸK'}ßÿLÿ¨àõÿ2ÿËb +e¸ÿ1ÿ„üã°ÿOÿ ގ.= í ÿkÿ¼Éÿwÿõ«F$|ÓÿDÿ¤íõÿ<ÿÄrV¿þ)ÿƒüÖµÿXÿé‹2B–íÿ[ÿÄÔÿrÿ"ú¨T{ÖÿFÿæðÿ6ÿÏl]±ÿ(ÿ|ÿÞµÿWÿ á’1:™é ÿeÿ·Ðÿÿþ±L! vÏÿ<ÿ ïò•ÿ@ÿÆv Sºù"ÿýÔ¸ÿZÿì9?’ëÿVÿ¿Ùþtÿ'ü°WsÒÿCÿ—èîÿ9ÿÓm W­ÿ'ÿxÿÙ·ÿXÿã“72šçÿ_ÿ´Ñÿÿþ´P vËÿ7ÿœóð—ÿCÿË{L¸ø!ÿ‚ÿѵÿ^ÿë“9<êÿVÿ½Ûþwÿ)ÿ°YqÑÿ?ÿšèíÿ=ÿÕnX¬ÿ%ÿvÿÛ¶ÿVÿæ:-œçÿaÿµÕÿ‚ÿú¶O nÆÿ<ÿšðî§ÿMÿÊz P·ùÿ„ÿÒºÿ`ÿ +îž/)j“‰O‚ˆrv†j†›““pul†}„znˆy‚a€{†|ƒy‡‹dyt“xw…y{††‚Šsr}p{w}˜r‡Š{‚‚zqŠsƒx}}}}ˆyu„|Œ†Œˆ†‚u|xŠwƒ‚„‰|t‹uv‚„{{„„‰ytˆ‰jŠg~{a‰z†Ž…{‡ƒ™}}wbq”z…{yx’}ˆ†‰{‘}}|‰u†|Žbv€ˆ}z‘‡‰rp–w{c€|„aq†Š‰„ˆ‡‰„s\‚k‚y€wuqnrŠ{u†}‚n‘ƒˆˆŠy‰vmšvˆŠ}~Š}xwŒ~y|u………|xsb„v€z~l‡€ƒ}…Œ‚ƒzˆ–q‘vˆv“nsƒ{r•y€xŒ‡‡ˆƒ’w„€{}v€}|u{m‡v{†„y}€]~||t~‡gi‚z…ˆx‡sd’sƒ~uzˆ~w‹€ˆ„wƒwŠ{u€`nv…ˆ{€u¦sŒƒ}‚‚r€”|zx~z|}sn{„z|xr‰„…}ƒzƒƒ€znj†q‡{{|„‚yœƒ—}‘€|um“zˆ€~vƒxƒmzƒm|ˆˆˆ‰tˆ…ƒŒt…‡‰sopk„€}v}twf€…‚|•y™‚€r‘{h‰w„|ƒˆ†ow‰‘…Ž}}†|‡jµ3ÿ¥~ÿ©/uËÿ=ÿ—óðÿEÿÐu J±öÿ|þÖÂÿdÿó›E3„ã ÿNÿ±äõÿ1ÿ»f fÅÿ7ÿ‡ñå°ÿBÿހ.F øÿiÿÇÄÿrÿð¨D!†ÖÿLÿ¢çü‘ÿ7ÿÄkZ»ÿ#ÿÿׯÿ[ÿç+>˜ëÿaÿÁÖÿoÿ.ÿ¨S%vÙÿBÿ£ãñ–ÿ=ÿÒm +a³ÿ)ÿyýá·ÿTÿç:+—ì +ÿeÿ·Ïÿÿù³PuËÿ>ÿœøìžÿ=ÿÈv M¶øÿÿгÿaÿë–68ŒèÿYÿ»Úÿvÿ+ÿ¯[pÒÿ>ÿ™ëéŸÿ@ÿ×t#W¬ÿ!ÿsÿÕÃÿ]ÿè—=0“æÿ\ÿ°Ôÿ†ÿþ´RrÇÿ=ÿžöëÿFÿÎn J³öÿ€ÿ;ÿeÿ ò˜66ˆåÿKÿ§àþ|ÿ-ÿ³`kÊÿ9ÿ”ïæ§ÿBÿÜw&S¦þ!ÿqÿÓÄÿ\ÿê>+‹àÿZÿ´ÕÿŒÿ0ÿ¿UjÄÿ4ÿ‘øëŸÿHÿЀ$G°öÿvÿËÂÿkÿ ñ›>3‡ß +ÿNÿ¶âü‚ÿ0ÿµb fËÿ:ÿ’ðä¨ÿDÿØ{&R û"ÿrÿÓÅÿ`ÿîšA,‰âÿXÿ¬×þŠÿ(ÿÁUnÃÿ7ÿøì£ÿHÿҀ"F¯÷ÿvÿÇ»ÿgÿ ïž<'†à +ÿOÿ´ãüÿ-ÿµcfËÿ4ÿ˜òã¥ÿHÿÙz Q¤û#ÿoÿÓÅÿ_ÿñšB0ˆæÿXÿ±á÷wÿ™›œœjŠkŠ‰y‹„~x{zt~wy•~~†}Š}„y}ƒv†~w†~{tv{|x„~Š‡‚|–‡}zƒ‚us‚w‰xv…||u~i‚zzƒ€w†„}|€‚…{}s„‚wz‚vw†xu„zƒŠ–{…pxu†uuuqŽs‚}€}…~ƒ„Š€ˆv}Šxkym}w{vyˆm•…‚‚}|~{jx~{o€vqˆ}ru„z€„y€‰ƒ{}‚ƒ‚‚}Š|ƒzp}u~{…vz‹{ƒ}€‡€€†~t|€y|w|Šy‡qt€€~‚€yŠv‘ƒs†‚swmˆ•ƒ‚i‚x€x~„‚w…}z{ƒsŠ‡nznˆ{}‚w|y‚‰sŠŒq‰v‘~}‚rw‡ˆx‡‚u„€q‚~z|…’z‡ƒ†€ˆv}ˆowrt„‚|‰€p„Š{…ƒ~€ŽzzŒyzr}y}‡xw~x‘y…y…xy‚…ƒlƒx~tvz|ƒ~}Œuw…}|†o€wŽo{‚†ˆtw{dƒm€†~~€|}n‹‚‡…~pou}€†€y‘ƒƒu„|w…~{ƒx‚~…n„…s‰€„x…vˆ€†t{~ƒ}w†ƒ†„„„ƒ{ˆu{mt…zˆ€}ˆƒ“~w…€~w‹vˆyxyƒ}…’P¶Nˆÿ^Ïÿ…ÿRÿè88ï ÿ[ÿºÓÿ}ÿ'ü¹T +vÅÿ;ÿ‘òð¡ÿ?ÿÑ{#K¯öÿwÿÈ¿ÿjÿñ @0ˆÝÿKÿ®êõƒÿ3ÿ½h aÇÿ2ÿ‹ôà®ÿLÿâ/G›÷ÿeÿÌËÿoÿò©I „ÕÿNÿ ãù–ÿ-ÿÇjZºÿ%ÿ†ÿÙ­ÿ[ÿߑ,9Ÿèÿcÿ¼Ñÿtÿÿ§N&t×ÿ>ÿ£ìë•ÿ?ÿÌrZ´þ*ÿ{üÛ¼ÿ`ÿæ4®Š·in—‰{Œˆl†yvsrx‰vsym†…r{ˆ|}€b}‹{ˆ†rˆƒ|š”yƒˆ„†ƒt†™~Š{‚…}~rˆx„qzŽƒ}†ˆ•…v€‚ƒv„u‹z}y‚r‡vw|xx‚~‡tˆx€‡t†…w…x…„t†‚yŒzx|wˆˆx‰w…~Šy…†wwmo|}€…‚Š‡Œx†‡{~|”xyz}†{{…jt‡|„xr‹{wŠgƒ‰}‚„„…|q–wyy}nwy}˜|†~y‚‹…y‡{„~{ss€…ƒ‚…€y~y„„ŸŠ†Šy…†zx~{v~w}‡€‚~†~‰qˆ‚w€zŒzŽ~z„w~‚swwt|~z„uŒ~Œz~Švˆ€zuƒz~qv{ƒg„ƒ‚ˆxƒƒ{kƒz{|o~{u}q|„‡‹||…r†„x|‡|~‚lo…z~†€|‚‚ˆ‚{w‚zŠƒ‚˜~‰‚{w‡n€y~Œ‰z‚uˆ}€†Œ„}Œt~z|‚}zzvs}ˆŠ}„ƒ‰{Œqvz†‹ˆw‰p{‡qz‡{€ƒt„Ž‚Žƒ„ŠŠ€…wz‘|‹~q{vg€}‘Š~w†}|ˆ„‹Šz~|vŠtj}h‚~~‚ˆu‘d”‚w‡}}‰x‘rwu{y|yxm‚}ŠŒ|ˆ€†s•XyŠ ÿIèñ8ÿP]¸ÿ,ÿ‚úÚ¶ÿTÿ êˆ8;“ñÿ]ÿ¾Ñÿÿ"ø·R xÉÿ@ÿ•ôï ÿ>ÿÏz + Q°úÿ|ÿ̼ÿiÿ ð;2‡ß ÿNÿ°åùÿ1ÿ¸e dÇÿ2ÿ‰òã«ÿLÿâ}.Iœ÷ÿeÿÌÉÿoÿñ¨G ƒÓÿFÿœæû•ÿ.ÿÆhY¸ÿ%ÿˆÿÚ¬ÿZÿà’,;šèÿ^ÿ½Ôÿtÿ#ÿªU#qØÿ<ÿ¡êë™ÿ?ÿÎq[±ÿ(ÿuþݾÿVÿè’;4‘êÿ`ÿ¶Òÿ€ÿ ú¹Q wÈÿ>ÿ–òñœÿAÿÍ{ Kµøÿ|ÿÍ»ÿfÿ +î™:5‘ã ÿQÿ¸àþ|ÿ,ÿ´bjÊÿ8ÿ”ïå¥ÿDÿÛw$S¥ý ÿnÿÓÄÿaÿìœA*‹àÿXÿªÙÿŒÿ(ÿÁYgÀÿ3ÿúè¢ÿLÿԃ!C­òÿpÿÅÅÿkÿô F0àÿHÿ±åö‡ÿ4ÿ¼h fÄÿ3ÿ‡ôá¯ÿIÿâ€.JúÿhÿÌÈÿlÿñ¦E#…ÙÿQÿ¤Þü‘ÿ-ÿÃac½ÿ*ÿŠÿá¨ÿPÿ֊(?¨îÿmÿÂÌÿpÿù£F-{ÛÿEÿ­éó‰ÿ8ÿÂj `Áÿ1ÿƒöÞ±ÿMÿå.HœöÿdÿÇËÿkÿó¢H!…ÙÿMÿ¡Ýû‘ÿ.ÿÇcdºÿ)ÿˆÿäªÿRÿٍ)=£ìÿkÿ½Ìÿrÿú§J*zØÿBÿ§íî‹ÿ<ÿÄn \Áþ.ÿ{úñ­¸°J„¦|’…xy…ƒzq}|Š……Šw‰~}zvxŠnŠ‰wzzzz{†`ƒt~…€}}•–…ˆ…zˆƒ|‡|j„qzyzzw{ƒ|k…ƒ}‰|ƒ…„ˆv}Žy„‚vz†zwp}}v}‰z‚…zzŒ|~w‹}{„s~ƒ…~ŽxtŒ}}€„x‚|€~Œ‹syrvxvo…‰~€Šˆƒ~Œ†€Šx€w„…€xqt~…||†…xv‡~‚‚‚Šw}x‡‚}€xuŽn‰€}‘‚€Œ„|Š~ˆymtz„{~{x€myt€€ƒz|‚…{„|~{~|‚v‡xŽ‡tŠw~‚}‰nƒ…‘‹y~ˆ‰qzvxz}|mƒ˜}‹‡‰Ž‚€ƒˆywzr‚}‡vu…{‹~ˆ…„‡Š}€t}p…wx„~…u}p|q{~s‹…|‰‰„v{zuŒtˆzwz€~s„nu†€„}–Š“l’z„uxyˆzsuq€}r|…vgzs…ˆ{ˆz‡u‚svˆ‚ˆˆ{„r{yz}y{yyn~~…€vz„‡}‚xƒ†ˆx€‡€|us~v€qq‡|€r‡{ƒu~ƒzƒr}ƒ{{}}wzw‚xy|€‡‚~k„|}‡tƒ…‡…vwrƒ~…Š‚|{˜ox‘_Ù®…ÿ¨( Âÿ*ÿƒÿÙ±ÿ\ÿá’16šåÿ^ÿºÚÿyÿ#ÿ¯Y lÑÿ8ÿïç¡ÿDÿØz#U¨ü"ÿoÿÑÆÿaÿî›B*‰àÿUÿ©ÚþŽÿ+ÿÂ\g¿ÿ,ÿŽýå¨ÿPÿٍ%B¦ìÿiÿÀÏÿmÿø¤J+wÞÿEÿªéïÿ:ÿÇm_¸ÿ/ÿúÞ¸ÿQÿ ç‡6A˜ï ÿaÿÃÉÿwÿõ²L€ÏÿAÿ™êù˜ÿ5ÿÉr T·þÿ„ÿÒµÿ`ÿã–28‘åÿ^ÿ»Ùÿwÿ&ÿ­Y mÔÿ<ÿšìé›ÿBÿÔqX®þ&ÿtÿÚÀÿXÿê•?6‘èÿ]ÿ³Ôÿ„ÿ"û¼SnÅÿ=ÿ”ôîžÿ?ÿÏ} H³öÿzÿÊ»ÿgÿ ðœ;4â ÿQÿ·ßÿ}ÿ/ÿ²`hÌÿ6ÿ“ðå¥ÿEÿÙy$R£ü ÿpÿÒÆÿcÿîœB)ŠßÿVÿ«ÙþŠÿ%ÿÀYj¾ÿ3ÿŽüè¢ÿEÿ҂"D¨òÿvÿÆÁÿkÿõ =0†ÞÿJÿ±åùƒÿ1ÿ¹f +cÉÿ3ÿŽòâ«ÿJÿß}.M ùÿiÿÐÉÿeÿð F)‡àÿUÿ«ÚûŽÿ(ÿÂ\i¼ÿ2ÿŒûè¦ÿMÿֆ&BªñÿoÿÃÂÿoÿó¡@-…ÜÿGÿ®çù„ÿ3ÿ¹h +cÇÿ/ÿ•öÞ¬ÿKÿÛ~(Lž÷ÿiÿÐËÿfÿóH+„áÿSÿ©ÛùŒÿ+ÿÆ[j¾ÿ5ÿ‰ùé§ÿJÿÜ}v¸P†„y‡’m|…|~„ˆr‚tsx{z{l‚dŒ‡yƒ|„…ˆ–|ƒ{…‡q|y€n‚zx„ty||z}||‰…z…~y†y{xk~~y€~twwtŠ†~}€‹†Œ{ru…yxy‹ƒƒ‚v~‚…ˆ‰}ˆ{w~xt‰€y‡†}…{‰†xzvŠ}{€z‰€}€wx~w„‰‚‡‚€|„s€z|zwx{€†tƒ„x}~vw‚u‰„x‹rz~{ruƒ†z†~yq}€|~‡„€„}{‰qx€Špyu{Šyƒy{‚xŽ‚”€€z†~v‡…Šovxƒ{~†z{puƒ€„}…}|ˆw€~}~y‡ˆ}|…‚‚ƒ~‹{‚€„zq‡y‰…zysr~†|}†‚~nxx}ˆvyz„vxtoˆ…{ƒ†s~g‡„|‡yx€y‚˜€}{…Švz€wŽ}z„}€}xkŒzxˆ€tŽrvŒ†‚{|„€‚Š€„{„|‚z‚‹t}yˆt~€qy‚}{„€}~‚z…}Œ€wy{~…ƒ~‡w}‰s†€~…~~‚v|ovƒ„z{yt…pŠŽ†‰€‡~~h™u€vpŠƒ…n„y‡u}zp…y–‚‡€|‚}q‡}‡w|‚w…ˆq†}€Š}}ysˆ\ëyÊÿõ>_}Ëÿ;ÿðê£ÿEÿÚu(K¨øÿqÿÊÁÿmÿî§>&†ØÿOÿ¨äýŠÿ1ÿ¼h]Âþ(ÿŒûÚ°ÿTÿâ‰.F—ðÿaÿÄÔÿkÿ ø«Q yÖÿHÿåò›ÿ5ÿÐm \°ÿ#ÿ}ÿÚ¶ÿ]ÿ â˜23›ä ÿ]ÿ³Õÿÿ ÿ±U! oÐÿ7ÿóêšÿHÿÌzRµ÷#ÿxÿÑÁÿ\ÿð’?5†ë ÿUÿ·Úùÿ*ü¹Y rÆÿ<ÿŽïî¨ÿAÿÖw'M«úÿuÿ;ÿiÿ è¢:-ÛÿUÿ¬áÿ„ÿ(ÿ¹` aÊÿ1ÿ“ùß ÿMÿ׀$J¦ôÿjÿÍÌÿdÿö™H-ƒâÿMÿ±Üö‰ÿ/ÿÃ^ l¾ÿ6ÿ‡óì©ÿFÿہ+H£÷ÿqÿÇÃÿoÿï¦>'ˆ×ÿPÿ©åþŠÿ.ÿºe^Äÿ,ÿ‘úÞ§ÿQÿ܄&H¢ñÿdÿÊÎÿiÿ÷ŸK-ÞÿIÿ®àóŽÿ1ÿÅc +g»ÿ4ÿ„øæ°ÿGÿ܁,B¢õÿmÿÅÁÿlÿï¨C#„ÖÿMÿ¥åþŒÿ1ÿ¿h]Ãÿ(ÿûݧÿTÿއ%D¢ðÿhÿÈÎÿiÿùJ.~âÿJÿ®âóŠÿ5ÿÄb g¼ÿ6ÿ†öå°ÿFÿ߀/E úÿmÿÈÄÿnÿí¨@$ŠØÿQÿ¦àÿŽÿ,ÿÀcbÂÿ*ÿ‘ýâ¤ÿQÿ׉ D©ïÿmÿÅËÿiÿ÷ŸH1àÿIÿ±äôÿÿL¸šªe|…ƒeƒr|wqˆxŒw‚†q‰q~|„€sur|ƒ†i‡|Ž‚y|{ˆ”wˆnp‚t†|ƒs†|xxz‚|~jŽnŒ‹~x‡Š‚x€„{‰x††€€‡ˆ‡ƒ{}~„ƒ}p…{~~t‡rq„u‚y†z„‹v|~€ƒxƒ€zxuuw{‚‡ƒƒny}‚†xz‡ˆŽr{‡~Œ}„‚~™„z{u„t‚u’„…z†‚ƒ}o{w…‡~‡~Šv|‚wˆwŠwˆmƒ~u{zˆuz|y{yx’x‰{}‰zt‹z{‡}‡v‡†††‹sz€w‰xˆ|ƒƒx}~‰|z}~{„|‚€~~€…ˆ‰y~Œ‚ˆ†s€k~|wƒ}|ˆ}z~z~{„~…}y†s|zv€}tsŽz†tŠ„vŠ€syƒ|zy|~zˆ“€†€x€}}}ˆzƒ}„‹‚…‚~„€~‹{yy}€€}xy„|‚o{n}†|~w{rm€tŠ|€x{t‡ƒy„Šy‡pk}u€rx„|q}s{ˆ„€Š|Š‚x‡l{{…uysuƒƒƒ{}Œ…t…p‡{ˆ‹s~v}x}|}}w–s‚ˆ‰„‚€Ž„‰‡„|vƒ‚t{u{‰v~…‚w“€‰|}ƒ‚€{—h‡|z}to{xe‰{z…ˆ†s–Jzÿ]Éÿï¯~(@¡ëÿmÿÀÍÿrÿü¨M'wØÿ>ÿ¦êí’ÿ>ÿÉpZ³ÿ+ÿyÿÙ½ÿUÿëŽ:5’íÿ^ÿ´Ðÿzÿ"ûºS vÅÿ:ÿ”÷ìžÿBÿÏI°ôÿ{ÿʾÿgÿòœ>3‡á +ÿLÿµâùÿ2ÿ¼deÇÿ7ÿñäªÿIÿá|-JžúÿjÿÍÆÿoÿï§C$‡ÕÿOÿ¤äû“ÿ/ÿÃg^½ÿ'ÿ‹ÿÛ©ÿVÿߎ(=žëÿfÿÀÑÿpÿý¤O'uÜÿBÿ¨èî”ÿ:ÿÍn_µÿ.ÿ}ûÞºÿPÿ æŠ8?—ï +ÿaÿºËÿxÿ÷´L {ÌÿDÿ›ñó™ÿ9ÿÊs U¹ÿ%ÿ„ÿÓ²ÿ]ÿ ì–29”æÿWÿ¼Úÿxÿ(ÿ¬YnÓÿ;ÿžëêžÿ@ÿÓqX«þ%ÿuÿØ¿ÿYÿé”=/éÿ_ÿ¶Óÿÿ!ú»RsÆÿ<ÿ”óïÿBÿÎz I³øÿzÿÍ»ÿhÿë˜;4Œã ÿOÿ¸ßÿ}ÿ+ÿ³akÍÿ8ÿ™ðå¥ÿCÿØx#T¦ý"ÿrÿÓÄÿ[ÿìš@+ŒäÿYÿ°Õÿˆÿ&þ½TnÄÿ9ÿ÷í¡ÿFÿÏ~!I±øÿyÿÍÀÿiÿ ðž53ß +ÿNÿ¶áþÿ-ÿ³bhÌÿ5ÿ˜ñã¦ÿFÿÝy$P¥ü$ÿnÿÒÃÿ`ÿð˜B-ŠåÿWÿ±Öý‡ÿ(þÁVpÂÿ5ÿŽóð£ÿFÿÒz$G®ôÿyÿ¿½M¡}Œu{†{ƒw{ˆxƒzx}‡z‚‚|‹~zz€~ˆ‡ˆ†{ŒrƒwŠ}ƒ„‡ˆy|xy†xƒƒyŒ’~x…p„~ƒ€ƒxtˆx‰†}yƒ{xnz„rŒ|Œ–x†i€‚q{…rŒ|Œ‹}~…}ˆ~ˆ~‰xr‡‚‹ƒ‚sw{}‡s„‡•‚~€€rŒy…Šuu|y€‹z‚z„ƒ„y€…‘ˆ}x}x„zqu‰x~w‹vŽŠŒ‚w‹€‰‡vn‚v„wuyuˆp•ƒ€‰z|‡~tŠt†v|zwwe{rwyvx†r„vwƒ†~…ƒ‚|qz}zuv€‚~ˆ”z}‡…‡€………t…‡‡{‚‡n‰nw…ƒ„‰{ˆ‡xƒ{€}†uŠ}ƒ‚s}tzˆwy‰z|ˆ‡|Št€p„~ƒyˆ†ƒ‘aq…Œ†{‡„{vj~„nzysˆ|hŠk}ŠqƒrŽz†v—ƒw~ƒ‚s‹wlpwy€rwm~ƒ‚x€‚‰‡~‘nw‚qzƒx{{xl€z}}x‚„‹†‚ˆ‡„{zzzw€v‚}}†n‚s‚…ƒ†‚{…†‚u{‚p€rz{q|‚‘…wp„‚‘‚™Š€|šr|xyƒz†|m‡~|‚}~}Œu€s‰‚Žw~sŠ™xuy‹w|o|‚|Մ§ÿÙ$™¿÷ÿlÿÌÈÿhÿôF(ƒßÿOÿ§à÷•ÿ-ÿÈc a·ÿ)ÿƒÿà¬ÿWÿސ/5žçÿbÿ»Ôÿxÿÿ¬U$qÒÿ:ÿ ïè›ÿEÿÒtT¬ü&ÿsÿ×Âÿ\ÿî•@3‹çÿZÿ¶×üˆÿ&þ¿XrÃÿ7ÿŽ÷ì£ÿFÿҀ$G«ôÿtÿÄÃÿmÿó >/„Ý ÿMÿ°æùƒÿ4ÿ¼g +aÄÿ2ÿŠôá­ÿKÿâ€.Jòÿr©l_”•~~„ƒ}…Œww|‰}‚z‹|‡ƒqkƒ|xxoƒƒqŽ”{‰€€†ƒv}Ž„–€‚}ƒxqto}ƒ…€‚tzu’yƒ†u||v€Š‘|w|u€‰‹ƒx……ƒƒ€vyz‚„‡ƒ{}Š|~ˆx}~€xw|}‡{{„ˆ~w‰€ƒ~’x‚}t€~„Š~fƒsƒ‡ˆˆ—ˆ‰€r…†wz}|u—zŠ‚~‡o‚~‚€~|‰…}su€zŠzy}‰z~{…sƒz}€z€ˆ„vƒ€Š}~ˆ…‚w~x†zz~ˆ€x{~y|ƒ•wŒƒ‚€†~†”Š…~‚{ˆp‚›uŒ…{‚ˆˆp‹r–}yw€„€pz{vƒ~ˆƒ‚tzŠu‰w†s‡}„„z†yˆ€xƒyzŠ|u‚w„}‡x}}€‰w‚rk€x…ƒw€‡ul}‚t€Ž…m~|~‰kˆ†qnƒuŒunqˆ‹hi{Œ{ƒ“dˆŠw¡|z‹}|ƒ…€a„uy‚yŽ‹z“tŽŒ|Šy}zm“tƒ|pr~c‡‚{‹v‡|xŽ—x“yzƒn†…q†tl‡vf{‰y™|Ž~„ƒˆ{ˆ•{v€r‰ˆx‚ˆƒ“v…mŒˆr€€š{xƒkŒˆs|aix}ˆmˆmv•p‡†xŒ‚sŒw†”ST® ÿ€«ÿÑoOuÎÿEÿ˜íïŸÿ;ÿÕq"O¬þÿxÿѺÿiÿ ê 80ÜÿTÿ°âÿ„ÿ.ÿ¹e ^Éÿ0ÿ÷ݱÿNÿâ+JôÿeÿËÌÿkÿõ§J"ØÿLÿ£â÷˜ÿ2ÿÊf ^¶ÿ'ÿ„ÿÝ°ÿXÿޓ.8›æ ÿfÿ¹Õÿyÿÿ¬O$oÖÿ=ÿ¢ðë•ÿBÿÍtU´û(ÿwý׿ÿXÿî‘?7ŒíÿYÿ·Ôü€ÿ$ù¶W uÅÿ=ÿ’ñð£ÿ<ÿÐu"K®øÿyÿ˽ÿiÿ í¢A/‹Þ +ÿQÿ±àÿÿ.ÿµ_ dÌÿ1ÿ”òâ§ÿJÿÛ|'O£÷ÿhÿÏÌÿ`ÿîŸG)†áÿTÿ¬Ýùÿ+ÿÆ[g»ÿ2ÿ‰ýå§ÿLÿ؆(=©ñÿnÿ¾Æÿpÿö¦F+€ÙÿBÿ­êô‰ÿ8ÿ½k]Âþ.ÿ‰öݱÿQÿæ…2A“óÿ`ÿÍÌÿnÿ õ¨L"ÖÿMÿ¡áø–ÿ0ÿËe b¸ÿ*ÿ„ÿÝ­ÿRÿې+9 éÿeÿºÍÿwÿûªI#uØÿ@ÿ¦îðÿ<ÿÄq +Y¼ý+ÿ„ùÙ¹ÿTÿè‰5C“òÿ_ÿÆÒÿpÿ"÷´P |ÕÿIÿ›äõšÿ4ÿÎm ![´ÿ#ÿ}ÿÙ±ÿYÿ ߐ.6ç ÿgÿºÏÿ{ÿü¬N$xÓÿ=ÿ¥ïï”ÿ@ÿËwW¸ú'ÿƒûÖ¹ÿUÿç;‘ç +ÿSÿ½Ûú‚ÿ+þ·\oÆÿ;ÿŒñë©ÿ?ÿ×{)K§üÿrÿ̼ÿjÿì¥B-K~^n“h……‰w{yz†z‚ny…€z‡~Ž†”~†ƒ~~}u‹yt~‚Œ„~€‹‡ƒ‚„‚‚ƒu‘|q„z€…€x{i~~~w…€‰‡{‘…ˆ{{|zxy‰…Šƒ€…„~€ƒ{•Œ…‚vƒ…ƒ†€Šo‡~€ƒ€~‚€l‰tˆˆ~zv‚Œ{}v†|€€‚~Œ€ˆu~‰}‰zx‚~€…Švy‡v}vxr‡Š†}†„‡‘t…x„w~{ws’yŠxƒ{‘‰‘~‰u’}|Œ…uwi}|tl…‚ƒuz…|‡‰x˜†“o{zlv‹r’†~w…†Štv†y†yt‚sq{}z€wx‰„—s{~Ž€†„‚€…‹„x‚sv}†…y€‚†‚†…ƒ}††zxˆ{~~{yl{~~ƒ‡‡{wŽ~}x†€‹k|€{„€{s’„‡tz…„}~ƒ{{r„yxˆyŒuz…fn{|€‚w…yn†p‡ˆ{|€ƒ|Œv|~…„y…tuziƒ…„zs~r‰w€}x€v‚‰x†ƒ|py|~|~zv}xn~y†…t‚|‡ƒ‡……‰ƒ‰‡‚ƒuwq{v}~ˆyz„vmz€Œ|…{…•†‰}z€~ptru€{z‚unŠ‡‡‚~~ux†e†~vw|om³Ç,ïPÿ=ÿqÿ²åûˆÿ2ÿ»h bÁÿ,ÿ’÷Ý°ÿNÿá…0D•ôÿbÿÄÐÿsÿ"ö¯O|ÐÿFÿ˜êõÿ8ÿÏq + R³þÿ}ÿÒ´ÿ^ÿ çœ82˜â ÿUÿ´áþ€ÿ,ÿ´afËÿ5ÿ–ñä¦ÿIÿÝ{'M ùÿjÿÑÇÿeÿò¤F%ˆÝÿQÿ£Þüÿ-ÿÆ`f¼ÿ)ÿŠÿߪÿRÿڐ'>£êÿiÿ¾Ïÿrÿþ¦L(uÛÿBÿ¥ëî’ÿ>ÿÉm\·þ+ÿzúݹÿTÿ éŒ;;’íÿ_ÿ¾Ðÿ}ÿ ÷·NyÈÿAÿ–íô›ÿ;ÿÌw R´úÿÿιÿcÿê™55ãÿTÿµÞÿzÿ*ÿ±^jÐÿ8ÿ—ïæ¢ÿEÿÛx%T¦ü ÿoÿÕÅÿ`ÿí B-‹áÿYÿ¯Ûüÿ&ÿÂXiÁÿ6ÿŽüæ¢ÿLÿӃ"D­òÿoÿÅÄÿmÿöŸC0„ÞÿHÿ±æö†ÿ5ÿºg +dÄÿ3ÿŽóá®ÿIÿá-JœúÿgÿÊÉÿkÿñ¦E"„ØÿPÿ¢ßü’ÿ,ÿÅdc¼ÿ+ÿŠÿá©ÿSÿ،(?žéÿkÿ¿Ëÿpÿü¤I+{ÛÿAÿªêñŠÿ9ÿÃk ^¾ÿ0ÿ„÷Ý·ÿNÿåƒ3D—öÿcÿÉÌÿrÿó«K‚ÔÿLÿŸâù—ÿ2ÿÊe]¸ÿ'ÿ†ÿݬÿXÿܐ,8¢èÿeÿ¼Ñÿuÿü§N)yØÿ@ÿ©íïŽÿ:ÿÐb9ib­uf‡‡‚{‚€ƒy{svs‚y|~z~~‘{ˆv}ƒ~‰{‘y{xw{ƒ‰vƒy‡{Ž€}r†w’~{ˆq|Š}o…n|z„{{xŽ‚‚„k{†}~}„yo~…~ƒsˆŒ|}„{…€‡pŒwz€w~rŠv}~y€|€ywt~t…‡yŠyy‹„}w}Žˆ}ƒ|€Ž“x†z„‚~ˆ‡†s€zuƒzyl|q‰ˆ€}|t~xk~…x{o„‹ovŽ†}ˆŠ~‡|s€q…z€yp|‡qx~ƒ‚‹„€Šv€€‡zz}t|}€ˆ†‚Œ‡p„‡ƒ—|€{yƒ{sz€s…x…z†~xs}zƒŽ„€€Œ}”y„„z~{x{–ptˆ|~ƒ…†~‹†ƒ€€€wuo€v†v‚x|wt‚Œ‡z~Œ†|syx€€~xvsƒy‹„‹Š€}€ŽzŠ|‡|Švt~{}|…y|y‡‹|ƒ~~„}kŒx~~‹r}„|‰Š†xy€„Œ‡ˆ‰œŽ}ywŠƒ„v“‰~†yzv†tŒxkv|††›~‡wo|~†~~r‡€€r„}‚Ž‚‚€{…‡€‰{‰€€|—v…{z}z}}~ˆ‘€„z~ƒ|…{‚€}{w’}‰{{˜ˆˆ~{„‡•mÓ~Tÿ-öÞÆÿ•ÿ5ÿÌq +V´þÿ€ÿÒ´ÿaÿ +é™43’â ÿRÿ¶ßÿ}ÿ*ÿ²ahÏÿ7ÿ–òãªÿFÿÞ{'M ûÿkÿÎÆÿjÿð¥D%‡ÚÿQÿ¤ßü’ÿ-ÿÅb_¼ÿ)ÿ‹ÿߪÿZÿڌ*=Ÿêÿeÿ¿Óÿrÿþ¨Q(u×ÿAÿ¦êì”ÿ<ÿÌn[³ÿ,ÿzüܺÿUÿè;8•ìÿ`ÿºÏÿÿø¶O {Éÿ?ÿ–ñòŸÿ>ÿÌz O´úÿ~ÿηÿbÿ ë™87äÿTÿ¸ßÿ{ÿ+ÿ±_kÍÿ9ÿŒîæ¡ÿDÿÛt#R§þ"ÿoÿÕÁÿbÿì›@-ŽáÿXÿ¯ØÿŒÿ$ÿ½WmÃÿ4ÿ’úè£ÿMÿ҃"C«òÿuÿÅÃÿiÿ ó@1…á +ÿLÿ²ãú€ÿ3ÿ¹c fÉÿ4ÿŒðäªÿHÿß|+N øÿjÿÏÇÿdÿí£D(‰ÜÿSÿ§Þûÿ(ÿÂ_f¾ÿ/ÿ‹þå¥ÿMÿ׆$A©ðÿpÿÃÇÿoÿø D-ÜÿFÿ²æöŠÿ7ÿºg aÄÿ2ÿŒôà°ÿKÿ߀.KœøÿgÿÊËÿhÿð¦H$ƒÚÿRÿ¥ßû’ÿ,ÿÆ^aºÿ,ÿ‰ÿã¨ÿPÿֆ)>¨îÿoÿÂÆÿpÿ÷¦D,ÚÿEÿ¬èõ‡ÿ7ÿ½l `Æÿ0ÿ‹öݯÿMÿã,Jœ÷ÿfÿËÍÿhÿó¥I#‚ÜÿOÿ¢Ýù“ÿ0ÿÉ\`ºý6r?—rƒƒn~{„zv|‰‰~Šy€ƒ|ƒ}“vƒu€‚xxmmr~ƒ„s…{‘}w‰†}~w€h††t~z|ˆ†r‰~|Š‡ˆ‘„…‡„~y…j}s}w~~‡nwo~€…‚zƒzxqpz‚‚‰†š€‡s“zp{txsˆx€wŒz€xovt||„r~“}‡€}~‡‡y€~z€z‹ƒk€s€twx„“w‚u‰|yˆs€{y…„q†€†|k|y…€w„{|‚„y…€p”t€…{‚„€cn~u…ztˆ€xk–{Š‚vˆ„{‚‚||vz~‰x†os€w†t‡†uƒq}‹x„zyzyv…r…”„…~‚‡ˆwŒ…~}…|v‡ty|u†t}‘|€ŠŠŒ‡€ƒu…vx~o‚‹zƒy||„ƒŽl}z…|‚t|…z†k€‰}|z…‚‡osy~€‡‹‚~‘lˆ}zp„‚„†tqvƒ‚€y|{€‚~xŽŒ‡ˆm„v„ƒxnrm{Šo†~‚qƒ‘}ŒŠ‹~…wiszww|…|}ws}{‹~|tˆ‰}……‰‚lƒ~yytoxƒjz~ŒyŒƒ¤y‘†r†y|u{go™t‡Žt†wwu}|ŠwrŠ{‰‰w‹|{|q’x†xˆ‡‚‰Pl½DþÄZÿ5YœñÿdÿÅÍÿwÿö­M{ËÿHÿšîòœÿ9ÿÌq O´ûÿ~ÿиÿcÿê›76â ÿTÿ´áý~ÿ.ÿ´biËÿ5ÿ‘ðäªÿGÿÝ{+P¡ùÿiÿÏÅÿfÿî¤E$ˆØÿSÿ¤âü’ÿ-ÿÅf^½ÿ)ÿ‹ÿܪÿXÿݏ'?¡êÿcÿ¿Òÿsÿÿ¤Q&vØÿ>ÿ§èî•ÿ=ÿÌp^²ÿ*ÿyþݼÿQÿè9:“ëÿ`ÿ¶Îÿ~ÿ!ú¸O yÊÿ?ÿ˜òñœÿ>ÿÌ| L¶øÿ}ÿλÿdÿë–87åÿRÿ¸Þÿ{ÿ,ÿ¸dkÐÿ;ÿ™ïæ¤ÿCÿÛv%S§ýÿoÿÔÂÿ`ÿëœ@&ŽáÿXÿ¬ÚÿŒÿ(ÿ¿XlÆÿ3ÿ‘ùè£ÿRÿӅ!E®ñÿqÿÆÄÿjÿõ D1àÿLÿ²æõ‚ÿ2ÿ¿f dÄÿ5ÿŒòä­ÿFÿâ}1J úÿiÿÒÅÿmÿï¥C%‰ÚÿRÿ¦Ýþÿ+ÿÃ`f½ÿ*ÿÿâ¦ÿMÿ׊$A§ëÿoÿÁÉÿmÿø¢H,}ßÿGÿ«çó‰ÿ9ÿÂj aÀÿ1ÿ…õá²ÿLÿä‚2GšöÿeÿËÉÿpÿñ¨H!…ÕÿPÿ£ãú•ÿ-ÿÆg_»ÿ)ÿ‰ÿߪÿVÿݐ)<¤ëÿiÿ¾Ïÿqÿü¤L*xÛÿBÿªêñŒÿ;ÿÃn +^¿ÿ/ÿƒ÷Þ´ÿOÿè„3C–õÿbÿÅËÿzÿ ô[À‹¬Ys„z‹s‹p†|†„ƒ~tŠ€‚ˆ~x|…|w}|›‚w…„‚|†•wˆ{}z{syŒ”yx…ˆ‹ƒ’x‰‹‹|ƒp†zqvzz}v|q†p}‰yƒˆ}Ž†yx…‰u‰yu}‡~€zs{q}}……y†{„w|wƒzƒrzp„wŒŠw…‹…|€~e„‚xƒv‡ƒsq€…y{z~r‹‚‰}†„‚~ƒƒ‚ƒ‹‚wŒ‚{|xvvuwƒ‡ty|Š~}mr|„{ˆ…ˆˆ€†{zzzƒ„€y{ƒ‘‡{‰{}~~kq{‡w…†}zyj{x~s‚o}|lqy€o‰€“ƒt‹ƒ…ˆ€‰wyqˆ|‚{€w{x’|…Ž€x~‚u}|„ˆrzt…yy|x{…o{…ƒˆ~~‚…ˆ„}vˆ‰~wvx€‡s}u‚†~Œ}‡}ztwƒz‘„zvyurvx…zƒˆ}}ƒk€}Š„„‡‘{pjw„„ww‡r€‡†Ž„‹Ž†–„€€ˆ‰jv|z…wxztƒs|€uzz~~‚Žu…‚{ˆƒ|Š~ˆ}}‚„†||ƒuy~‡y•w{x€xr‡‚Ž€|€s„{{™}€{„~q…‚„~…Žov{‰|‡€uˆŽz{~y{ƒq|‰‚Šz„|nÃnÍä3ÿ[k­ÛÿKÿ£ãö“ÿ1ÿÉi +`·ÿ%ÿÿØ°ÿYÿà“08›å ÿaÿ·Üÿ{ÿ!ÿ²ZiÑÿ8ÿ›ñåÿFÿÖy!R¨ú#ÿnÿÕÄÿ`ÿï™D,ˆàÿUÿ®Ûûÿ(ÿÃ\j¾ÿ.ÿ‹üæ¨ÿPÿي&?¥íÿpÿÁËÿpÿù¤G+zÛÿCÿ©êñ‹ÿ9ÿÅo_¼þ-ÿøݸÿQÿ çˆ7?“òÿaÿÃÏÿuÿö´K +Šn?RfŸ€w™rq‰‰‚†rƒ„„†zyrrp{‹iƒ†uƒ€Œ‰k{|„yuŒ~Šyu‰}Šwˆv€ˆuˆ‚Œ…z€‹u}}j{zpx€}}……‚…{‡€z‚}}…{s€„‹ˆwv{~~Šƒƒlƒ’€…‡ˆŒ…Š‘ƒ}v‹v‡†˜…’zr…}€}‡’†zv‡‡w~{u“|ƒ{~v|†…svuxz„v‰†{sƒƒz†tz{xƒyˆŠ…|€~ƒ‚Š†yq‰sŽ…|ƒ€†…k~ztŒ~‡w‹y‡ƒŠw|}{€ƒ™Š‡…zŠ~~~‡•ˆ|‚„ˆq‡‚ƒ–„…u‰xu|€Œ˜s€‚~ƒŒ‰‰q„ƒ|„…x„}w€…‡{{ˆjƒ‹ƒ‘v~„€‘Žˆ}ˆŠ…†~r€syz€†‰xŽ€‰…‚Š€Š‰††“s€z…{‚pul’u„€~‡uŠ‰‡Š€‡yŠ„ƒ|„w|†€|‡}€˜~‡€|}‰†r€u~…~~z‰€‹ƒ}„†ƒ{|x†p~€†~…x„‚…{…ux|{ƒŒoŠ|ˆs}‡w„nƒƒ|}u}zŒƒƒ†uˆxr††€~~ˆst}iƒ†x||„x‰“u†z…†„Ž‚†{|‚ˆ‹~pˆr‰~‚w{{nz€u‘€Šv‰zz¦8ÿ™–ÿà +.eÃÿ1ÿŠöá´ÿLÿâ…1A—óÿdÿ¿Ëÿuÿô²L~ËÿCÿ™ðó™ÿ>ÿÉv +O¶úÿ}ÿÏ»ÿdÿë•;6‹ä ÿQÿ¹ßü~ÿ.ÿ¸_jÈÿ9ÿïè©ÿEÿÞz,J¡ýÿlÿÍÂÿjÿí§A%ŒØÿPÿ¤âþŽÿ.ÿÀg]Áÿ(ÿŒþÛ¬ÿXÿތ+BœëÿeÿÄÓÿmÿü¥P'vÚÿEÿ¤åï•ÿ:ÿÑi^±ÿ)ÿ{þà·ÿVÿäŒ66˜éÿbÿ¶Ëÿÿù³O qËÿ@ÿœòñ—ÿBÿÊz Oµøÿ{ÿϸÿ_ÿ ð”:;çÿQÿºÝûxÿ*ÿ´\oÐÿ<ÿ’ìê¥ÿ?ÿØr&Q§ÿÿsÿÖ¿ÿdÿè <,ßÿ[ÿ¯Øÿ‡ÿ%ÿ¼[lÅÿ2ÿ•ûäžÿJÿс!G­òÿsÿÉÆÿfÿö˜C1ƒåÿJÿ´àö…ÿ2ÿ½b jÃÿ7ÿŒóç¯ÿDÿÝ~-JŸùÿoÿÉÃÿlÿí¥@#‹ÞÿRÿ§ßÿ‹ÿ&ÿ¿aaÁÿ*ÿŽüߦÿTÿو%C¦íÿgÿÅÏÿjÿú I.|ßÿFÿ¯åñŠÿ5ÿÄf e»ÿ3ÿ…÷ã³ÿKÿ ã1D÷ÿiÿÇÇÿqÿñ«E ƒÕÿNÿ¢æû“ÿ0ÿÃf]¾ÿ'ÿÿÞªÿWÿ܍'@£ëÿcÿÂÑÿnÿü¢O+zÜÿCÿªçð‹ÿ9ÿÈka¼ÿ1ÿ€øá¾ÿBÿ‘¿rži{Šyzv…‹x£}q„€ysŠe~rƒ}}{„o‹|ƒ€|‡˜{‹xŠzg|}‰qƒ€ˆˆzˆ‚‚zs|‰‚Š€|w}„o~z†|{…‹€˜{…’vŠ|ƒq’q„‚oson~|{‚{€„‡x„ƒvmŽ‡Š‚ypy‚m‚rˆ€ˆŒ†„Š‡|‰sˆ†p„p}wƒ{~qr‹„u~}oŽ~ƒ‡~x}„vhzpx{y|{‰‡‚…€z†€„~|j|}ƒtxyv}}Œ}|‚zˆƒƒ}xƒ…Œ}‰u‡€…‡€pyx||z~}„ƒ…†€Œ|’{Šy‚yw‰o†sŒz{ƒ‚}ƒyŠ‰x„†‚‰Š|Šyy}uqys€u†sx‹ˆ‹ˆ‚y}l…„Š‘€y€”zx‚”Ž€†Š~ˆ€~†‰Š|ˆjŽ„„}€x}‰{ƒ|‚swuˆ{|w€knŠ…„…†y‡€ls…s‡z~†ƒˆw}{x~t~‡{‰ŠyŽ†xqx†x”Œ‹„€{}‰s{„t~s†Šz|‡z‰yh‡}zŒ{v…wzš~{}v†zv~ŽzŽu€{}…Šsyp‚Ž‡xŠq‰y†n‘||}ƒ‚Š€gŒs|xx‰w„xŒrŽwy‚v€w†€„|’zˆoyw€†•˜mlj@÷ÿÇßü­ÿRÿݏ09œæ ÿeÿ¼ÑÿwÿþªR#rÓÿ5ÿ£ïè—ÿCÿÔuT°ù#ÿqÿ׿ÿ]ÿî–B/ŒåÿXÿ²Öýˆÿ&þÀWnÁÿ6ÿùé¤ÿJÿӃ%B©ðÿsÿÄÆÿnÿö£D-~ÝÿDÿ®çõ‡ÿ9ÿÀi _Âÿ/ÿƒõàµÿLÿä‡4E—óÿdÿÄÍÿrÿó¯KÎÿJÿœêö˜ÿ6ÿÉkU¸ÿ"ÿƒÿѨÿµ©v‰{€„|aw„y‚t‡Ž‰‹~}ˆ}{}~ˆyƒvŽpvv‚q|u„”ƒ†€‰ˆ‚‡{Žuƒz„‚}yu~y‚t|ˆ…ƒ„~ŽŠ}uƒp~|z{msƒ}w…lu}€o‹t‡…‚‚‡z„|m„{|ytxŠ~~|’‚~‰‡‡’–†{†v{ttˆvk|„z€‡xzs{„…t{u…“€xƒ…v‚„xq†wƒ~s“u‚r~‚z|v…yˆs~ƒƒ‚{~ŠŽ~w‚‰†€…{…|s‚sƒ‚{~vƒ‡q“{y‚|‚†€vv}|€‚{|ƒk…tz€‰w|uƒ‹†”‡wˆ~to„„‚~|}‰¥p…p~„sw{pk‰gƒ„}s…l{‰{‡mŠˆ„{Žvz„yy‡~……„yˆ‰ƒ‰}Œ}ƒ}‚j…uƒwƒˆƒ}ƒz‚‡–…ƒ†‘Œ~xy|‚€{v|ƒxy„{ƒŒƒ~‡€wuv„y„€{€}}kuw|‡x~uŒ†s™Š…ƒŠ‚}~t‹|zxwtz€„–€~‡u||t}}…ˆ€‹s‹lr{y‰‰{‹m|‹€~|qw‰|€„„ŒwŠ‚r‘|„{ˆ‡„n~j†|}Ž{}„‡Št{‹{ˆ‚…†Š|~‰„‡‚‰mybN¾#ÿŠ™ÿÁB*9šæ ÿ\ÿ¸Òÿxÿ#ÿ®UhÒÿ8ÿ˜ðæ ÿDÿ×w"Q¦ûÿjÿÓÅÿeÿî D&ˆÜÿUÿ¨ßüÿ,ÿÅb`½ÿ+ÿ‰ÿÞ©ÿVÿ܍)>èÿ`ÿ¿Ôÿrÿ ÿ§T%sÚÿ?ÿ¤éìšÿ>ÿÏoY¬ÿ)ÿxÿÚ¿ÿZÿé•:5’äÿ_ÿµÓÿƒÿ!þºUoÆÿ5ÿ•÷ìŸÿHÿρJ¯òÿvÿÉÁÿfÿó›B3…âÿJÿ´â÷ƒÿ3ÿ½e gÁÿ6ÿ‹óå¯ÿGÿá}-IŸ÷ÿjÿÇÅÿpÿïªD#ˆÙÿOÿ£âþ’ÿ5ÿÁi\¿ÿ%ÿÿÚ­ÿXÿގ)?ëÿbÿÀÕÿmÿý¦Q&uÜÿBÿ¤æï–ÿ;ÿÍk _´ÿ-ÿzûá¸ÿUÿå89˜ìÿcÿºÎÿÿøµL yËÿAÿ›ðó˜ÿ>ÿÉt Qµøÿ€ÿиÿ`ÿì–5;‘æÿSÿ»Üÿxÿ*ÿ±\nÐÿ<ÿ—ëê¡ÿAÿ×t$T¨ÿ#ÿrÿؾÿ_ÿéš=0áÿ\ÿ¯×ÿ‡ÿ"ÿ¼XnÄÿ:ÿ˜øéžÿGÿЀH®ôÿ{ÿÊÀÿhÿò˜=3ƒå ÿNÿ¶àûÿ0ÿµa +iÊÿ8ÿ’ñæ¬ÿCÿÛx)P¡üÿnÿÑÄÿdÿì¦@*ŒÝÿVÿ©Ûÿ‹ÿ*ÿÁ[gÂÿ.ÿûæ¢ÿNÿي$B©íÿiÿÃÊÿjÿõžE0~ßÿIÿ«ãÿ¡â¬‡džyi˜s~‡…†v…ŒŒ}zrŠ|{mˆ|uŽwƒzwŒwŽ‡zxxŒ||‰wx‡}†v…}}p€’€s{vƒ~oƒ~x‰ƒ‡‰Œ„€yŒyiyn~}†x‚uu|m‡†ˆwŒŠ{†zŠ‚z~ƒrŒˆm€w~ƒ}ˆuƒ„‹wt|‚vo‰nŽ|„w~yˆƒ……Žƒ~†mq~nu‚tˆ†yl|‚‰y…‡~}Œzˆx|zzƒvp‚s“q~†€€’{€ˆx|z‡‡x‰Œ…z|wxyy…~›~Šˆzƒ~€uqwxtˆƒ…‘rˆ‰‚”{z„|ƒˆyz¡x‹ww‚|…~›Œ‡„‡vƒp…s‰pˆz††|}€ux|x{s‹r„Œ†††w„|opŽwŠvˆ‡……{„„€€s€vy‰u}{w€~‚††y‚…€–x}€w‚}ƒ{|ruyzˆx‚{†~€vxˆ‡zw†}y|u‚ƒ~Šv}xŒnyz‰~„€†y•p„v{w}Ž|ƒ€Œ€ˆz€Œ}‚z~…y‡~v‡}y€tz‰ˆ‚†„„|ˆ}†wƒx~~„‹€Œq€€{€zq|†’w€x€w††~rŠu}„whxtƒ~‰€…ˆ†‰“„s€„jy‚f‘y{xqÃwÁö÷Fx£ÙÿIÿ¥åûÿ2ÿÂl]½ÿ%ÿŠþØ°ÿYÿåŽ/?—ìÿYÿÂ×ÿvÿ(ÿ¯XrÐÿAÿ–êí ÿ:ÿØp#S©ÿÿtÿÓ»ÿeÿè ;*’ÛÿWÿ­àÿ†ÿ'ÿºabÈÿ-ÿ‘úߣÿOÿڃ$H¥ñÿgÿÈÐÿhÿø L)}ÝÿJÿ¦áô”ÿ3ÿÌdc¶ÿ,ÿÿâ²ÿQÿ ݍ2:œê ÿjÿ»Îÿzÿû°J ‚Pbšmxˆrw†‹z‚„{yw~lx‡|ƒ~~€Žm}xy}|•†Š}•€|~Š‰t‰y‡}~|€srx|…{ˆ|{Š…Š{œ}ŒŠ€{u}|‘t~|xˆ‚v„z”€–ƒ€‚‡„yvŠ~€ˆz}„‚u~z†‰{|ƒ…„Šyƒˆm‰‚}st|…y}sz€w‡žv{ˆƒ‚|zpj‚v‚‚~{ƒgn|„‡z…ƒŠ‰Œ†yŒxˆ€~}yuwvv„x{ŠsŽ{|}{ˆ„{…yr|{‹„uƒ‰…‰|ƒ}‹|~‰z|€ƒ}‡u€‚ƒs‰‰~„v|}„z…}€…Ž‰~ƒyˆ~€ˆ|yv†…ˆ z…‹qq‹Š~~u…zxˆ~~“g…|–„ŽyigŠ|}zwŽ‰–‘x~q~‚v}x„x‹„•zŒ€|uŠ|…pyŠ}‡l™wp‡€…Šq„‘cŽ„px}yvs™wv‚uqš|ˆ‚o‡~Š—{n‰yšœƒˆy{„‘ƒŠ’x‰}z„‚–Š„v~„u—y‡Ÿqzvxˆuxˆ‹nˆƒšu˜…†‹‚Œ‚y€djŒ£p†p|Œ}y|‹‚‰|z…nzu‘‡“l{„|Žcsp“ˆ€‰~v‹w‘žzstt{q„‚rr†}†p|œJê®aÿŠM¬Ïÿ<ÿ‘óç¤ÿ?ÿۃ'M¤ûÿmÿÎÂÿgÿî§D#‰ÕÿNÿ¤åû•ÿ7ÿÂo\ºý$ÿˆþÖ¯ÿYÿãŽ0>—ìÿZÿÀ×ÿrÿ'ÿ­TsÒÿ?ÿ§åó ÿ=ÿÖiV©ÿ ÿsÿÒºÿcÿçžB.‘ÞÿYÿ­Ûÿ‡ÿ%ÿ¸YiÆÿ0ÿ—úãžÿLÿ؁ F®ù#ÿjÿÌÇÿhÿü›H-æÿJÿ¯ßõ‹ÿ2ÿÃc_ȚAlN®€j•‡„†Šszs|Šx‰€…¤…ƒ…ƒ}v}h“q…‰…zx‰yt‘m~…†lƒ€„‹…‡€€nu{†y‚yr{…vˆviŠx{{ˆ„“q~y‚‚u‡wcv‚z{zx€|g†‚}‡‡~ŒnŒ{ƒszvypuuu…‚†zŠƒ{~’€Š…~‡y{…vYwl†‚tz„‡|Žlx‰‰}~yŒ€‚‚wzp|‡~w‰‚†ŠzxŠqˆ{zr{~rw{‘“v„x‚q{y‰ˆr„t{|{wf“‚‚~€v}‚x~x†sŒƒy…‰{ˆ~`cŒq€ˆl~‡{cxn†„…‰z†“xŽ…x…ˆ~‚{z|“mt€{‚u€{‡hpwƒ‡ƒ†…lŒsƒ~…wy„}t…tz‚‡ƒ‚„ˆˆ|‹v‡~€zkzwwq…yˆx‚‚‡|€~‡†“~xz{zt…‚„£y}|‚€yy¡v…ˆu~v‚‚ovpv‡€}{„~v|ew}{‚|€‚{‡xb{„z}t~wvŽ‰‰„zx‡ƒt€w„…‚yw{y†q[yu…~w€‡€ƒzy‹€{Š€‚twŽl…€tŠƒ“xuxšzx†sss|l‡ux{x}vˆm‡—y‘‡s‹‡„yv“iy‚}t‰p}’žw€xsx|ƒ |‚zxz’lÉ¡`ô„Të ÿ4ÿrÿËÀÿiÿöG-}ÝÿUÿ±äñÿ9ÿÁe a¶ÿ0ÿ†ûß·ÿOÿ ä‹3:˜î ÿ_ÿµÎÿ~ÿû·S yÌÿ<ÿšòð›ÿEÿËzK³öÿ}ÿϼÿcÿ ò”>6‹å ÿOÿ¶Ýø‹ÿ3ÿ¾` `¹ÿ;ÿŒõå¯ÿCÿÝ{-E¢øÿmÿÇÄÿqÿî©@%ƒÓÿJÿ£éùÿ2ÿ¿j[Áÿ%ÿ‹üÚ®ÿWÿã‹,CšîÿaÿÃ×ÿmÿ"û¨S%wÙÿFÿ¢æï˜ÿ:ÿÒh[°ÿ'ÿzÿݶÿYÿ á‘63šçÿbÿ¹Ñÿ€ÿü´O +qÌÿ:ÿœöë–ÿBÿË{Nµ÷"ÿ|ÿÏÃÿ^ÿ ñ:<‹é ÿRÿ¼Ûú~ÿ,þ·\qÌÿ=ÿ‘íë§ÿ=ÿ×u(R©ÿÿsÿÒ½ÿeÿè¥9,ÞÿWÿ¬Øÿ…ÿ&ÿ¹ZiÈÿ1ÿ—øæŸÿLÿՄI«òÿsÿËÄÿeÿ÷˜C2‚æÿLÿ´Þ÷†ÿ2ÿ¼_ kÂÿ8ÿŠðê­ÿEÿÛ|+K¢ùÿqÿÌÃÿmÿë¦?'‡×ÿRÿ¦ãý‹ÿ)ÿ¾d_Åÿ-ÿýÞ¤ÿSÿ؅!D¦ïÿjÿÇËÿfÿô›F-~ÚÿIÿ±âóŠÿ3ÿÄe h½ÿ5ÿ†ôæ°ÿGÿà€/Ež÷ÿlÿÊÅÿpÿïª@#†ÖÿNÿ£äýÿ-ÿÀd\Áÿ(ÿþݨÿVÿڋ)C£ìÿhÿÅÏÿlÿü£Myªkuƒvƒ€„{||’k€{}„r‰ˆj“yq†„{{ww™…|ƒwzƒy~‹ƒv‰l‚ƒwy~r…s‰Št…}r…†ƒŒv…}‚x}}„€ƒw{t„~{ˆŠ€‡}€‰‚|}}r‚uz†ƒƒ„„†{†rz‚uˆ€{}s|zlwx„€|‹ƒ‚‰sxƒov~}ˆ~mc{~{ƒ}€Š‹m~z~ˆ‰‰‰‰nƒt†}{ts—xo„[~‰‚|Ž€y–{~…xƒ€~xŽ‡ˆ†v‰€‰ƒŠ…„v}|~v€~{z~„l~x{…{Œq‚‚u„~y~{y‰ˆy€‚ƒ€ƒƒl{}€}y…ˆ‡‰rw„y}…‡yv‡„Š…u}a{y~~z}–s}q~Š}‰|bƒ„€†p€}€wŠŽ‡x}Œwrwr}{‡~w}ƒƒz~ƒ‚~‹zvw€wz|{w|€{|€z‰zƒŠ|~‡|{ws‰|z}rˆŠyxwzu|}Œy„„‚€Œi€‚|t}„†††€€ƒ†Œ~|‘•…‚~u†~„h…l‹y„syƒˆ„–„€}„{€‹xx‚}}zw‚wƒŠy}„|‚‚‚‡•‚„„~z~‚z‰s„z†~‚zŒw†z‹†„„„Žxxzyvuswpy~ƒˆp~’u‰fv‰ÿ@æù2ÿŽoJ©ñÿqÿÉÇÿiÿùF.}àÿHÿ®ãó†ÿ4ÿÉfc·ÿ/ÿ}üáµÿVÿ ã‹47šì ÿdÿ¸Ïÿ~ÿø³Q +uÌÿ<ÿôí˜ÿCÿÌ{M´õ ÿ|ÿÑÃÿ`ÿò“<7†ê ÿSÿ»Üù‚ÿ.ÿ½a mÃÿ:ÿŠòë«ÿFÿÚ-F¥ùÿrÿÉÂÿlÿì¨@%†ÙÿMÿ§éúŒÿ7ÿ¾k[Äÿ*ÿ‹üÙ¬ÿTÿ߇7OYpF{›eŽ|€~Š”‚Š|†vƒ‹zƒzŽ€€‚{ƒ}o‡{}|‚x}vu‰v†~‡€z‚ˆ~v{w|ˆ€ˆ€zttywq~j}—‹†y~v~ƒ€j}ˆŠŠŠxŒ€‚‰ƒzƒmp‚~tp}yoˆŒƒƒƒ~‰‚Ž|‚…~ƒt}v|m€xvˆ†‚~–˜…‰†|‰{ƒl|wz|~sv{z…ƒŒ€z‰ruv‰xy†|iyh…xˆyŠo~n~Šƒ†„€‡‰o‰k}~s€yƒ€’x‹~ƒs€€„v“ƒ‹w~t}„r}}y…~†t†~‡‚|‚€Œƒ€ƒp‚„|t~~x‰tŽƒŠ|ƒ|†~ˆ~€„y}~}|z†mp{w€|‘ŠŠ†…”‰{x~‡“y{og‰‚yƒŒŠŠ‡“‚~‚‡y‰z„~w€‡{€y|ƒ‚•||‡}~ƒ†‡„Šx~}€‰}ƒ„€}”uz€{ˆŠ~‚‚‚ƒ†yk€‡{yz‚|‚y}~€‡z}|y…~}‡|{‡}†qŽs€„t‡{w€}‡|Š{‚}t†‚Œqwx‡‡|…}zŒ{ˆyz†yy…†€—|}‹zƒ˜‚ƒ€„}|{|–‚‚~…t~|ƒ~w|†wx{~}“zz‰ry|Šv ƒÕ³ ÓÿŽÿ½æõ–ÿ7ÿÌl Wµÿ"ÿÿÖ´ÿaÿä™64–â ÿWÿµÝÿ}ÿ+ÿ°_gÍÿ5ÿ”ñä¨ÿIÿÝ{&J›ùÿhÿÑÉÿjÿñªE&„ØÿOÿ¡âü“ÿ/ÿÇe[ºÿ&ÿ‡ÿجÿXÿޑ,;œèÿaÿÀÖÿuÿ!ÿª\#qÔÿ<ÿëê›ÿAÿÖrWªÿ(ÿuÿؾÿ\ÿë•=/‘åÿ[ÿ°Õÿ‡ÿ#þ¼WqÅÿ+ÿ¢Ÿr”fy|qŠu†z†Šz„zŠƒ‚ƒ‚Š„‡…~{„ƒsyv~„x…xƒh}‚wt}Šƒstw|†{uxyryŠ~w…v}‡rqml‰‚†…~z€‚Œ|~‚‚~…w‡~x’z’|€…u‡|~}}‰€~x|~{€y€v‚ŒŒv‡|ƒ„wvŒ‰‚~}twŠzxw~}†tz~ˆ‚~ˆxƒ~Œw‡ƒqwyx‚vŠ€‡Ž†„–}Š‚yxsˆutz€wx~‰yuƒ|Š}u‰†€‰x‘q€}…‡y€†}{}~‰†€‚x|‹€ƒrƒ‰‡ƒw…o’ƒwzz}ƒ|vrƒvˆ‚w~€Šs|{~ƒŽuyyz‰s‡|w}~u}q‚{z‹xxkx~~„}y}ˆy}„xy‹€z‰}~ƒwŒ‹ˆj{rqŽ~ˆwˆ}zr‰yˆny†~ŽŽxŽ_v‡s…t‡ƒuoŒv††‡~€–|‹|uq…x{Žoˆuu‹Ž‚nz~x‹ˆw‹zvq{tˆ–pzŽy…†`›y”|Š’rŽz•zˆvtpƒq“{{|‡‘v†uyx’Šm‰tofzˆqxƒu‘n•p‚Šw€ƒˆ…|‚‡ˆt‹us€tŽp‡Œr–Š~šqs‹nzx}v~y{ƒgxS͘‹ÿÁ ÇñÿAÿ¢ïî›ÿBÿÐxR¯ù%ÿvÿÒÂÿ_ÿð’@0‡çÿTÿ³ÚúŒÿ*ÿÃ\i½ÿ2ÿ‰ýæ©ÿOÿׅ(=¦íÿmÿ¿Îÿuÿú¨L(wÙÿ>ÿ¦ìî‘ÿ?ÿÉqZ¶ý*ÿzüÚ¿ÿVÿêŽ;8ëÿ\ÿ¸Ñÿÿ!ø¹R +wÇÿ>ÿ”õî ÿ@ÿÐ} G¯øÿxÿȾÿiÿ ñ›<0‡ß +ÿLÿ³äú‚ÿ1ÿ»g +e¼ÿ;ŒO”NžŸ‚|†…ƒ}‚€‚ŒŒ’”}…vzršpŠwˆ‡s€„„€ƒ†~‚uŠ„‰€}€x…}†{z}€„}†}ˆƒs„}‡}~x{…z{…‰‘‡Ž……~|{…}|uƒy„…†v…yŽ}…}tq„ƒt~{u†€iwy…„ƒ‡€z{“|‚xƒn‡x€‰ƒ~Žuo‡…„x††…Œy|‚r†{€~s…‚„xz{ˆ€}ˆƒ‰ˆƒƒ‰€‡ƒz|y}{|Š†xŒv€€yƒ„tŒo~{yx}|€xiy|€‚†p—}z‰sŒxŠyŠsƒ|w~yy…€„”†‚z‡w‹}…s‰…vƒwuw{‚v‘w~rwzr”€†x…‚‰ƒ‚‰wƒe€v|zw~vˆw|u{‚|Šƒ†…†‡}Ž„ƒ‚…~€„~w||‚ƒxq‚~{€‚‘ry€~…{|}mt‰‚††{‚Šz‘uu€|Œv‘„€€r|‹}txx‡Œ’y„…ƒ„{u‡|~}}„ƒzz„Š€v‹€s~‡„€z|xqp‰z…‡x†ƒ‚†…w„„x‡…ˆ‹€‚x€x}„zr‡‰€†‘tŠs}~†{Ž‹s|‡x|„zŠw†‰…rv‚vu|r¢|‚~‡Š{~pv¬cºÀ>ÿbgý ÿAÿ†ÿà²ÿWÿà‘18œç +ÿfÿ¸Óÿzÿÿ°Q mÒÿ7ÿœóæœÿGÿÒ|R¬ø#ÿqÿÒÅÿaÿñšF,‡äÿRÿ¯Ûùÿ*ÿÄ]j»ÿ0ÿ‰þä©ÿOÿٌ(=¤íÿkÿ¾Êÿuÿû§N(x×ÿ?ÿ¦íîÿ?ÿÈpZ·ý+ÿ~ûÙ½ÿVÿ êŠ9<ëÿ]ÿ¿Ñþ~ÿ#ù»Q +uÈÿ@ÿ“ðñžÿ=ÿÏx!K³õÿ†Û…D–¯j{‹p€……„ƒ~‰ˆz†u†~|~i„‡{}‰ˆ†‚…{ƒ…wŽ|…†yzyyy„t„…}{‡‚Š†}~†~uyur{€|u†|€viƒ~Ž‰‚vtoqw~~n~ƒƒˆƒƒƒŒy„†~„…„†y…}„y…|{‹qŠo…u}~„||„{{Š€‚€~~zw~ty†v…‰~‚|ur}~…€|wtxxy€|~‚wv…~ˆƒ‹z}ˆ|€‚||€|ƒ…~€{zxy„m„‰{r}~v|sqw~z~{†u{Ž‰ƒ‹†„}€}„‰ˆ{„|‹~|q„r…ƒz‰}~y|‰‚{y~†‚ƒ‚}„Š||‚oxŒu€Šxt}wˆsx}y‚„zy†€Š‰}„zz†‡xˆs„…~{}}}tsq}††‡„„}l€}ˆ|ˆ~„}„em~r‚w}v‹|Š€„~vƒ‰„‰uŽp‚†}‚t€wyy‡‡x~~xwmty€z‡ƒ‰…}|{tzˆ}ƒ{sxy|†”}‚~„‚„‰„‚y}{twypƒsx‡yˆ†ˆ„vh†z‹|Šy‰p‘pouw…|‰zs}€‚’z‚|ƒ„‡…yx„}y†}k||„sx‰~ˆ}qƒ„|~}jot„~€ˆsŠmvm­§nÿ¡6æÿFÿuÿÐÇÿeÿóŸH+„áÿPÿ«àöÿ/ÿÉ` a¸ÿ)ÿƒÿâ¯ÿWÿݑ07å ÿeÿ¹Öÿxÿÿ­V"nÕÿ:ÿðè›ÿEÿÑwT¬û%ÿqÿÕÄÿ]ÿï–A.ŠåÿVÿ¯Øý‹ÿ(ÿÀZm¿ÿ4ÿüæ¦ÿLÿֆ%@§ïÿpÿÂÇÿoÿù¢E+|ÜÿEÿ¬çô‹ÿ9ÿÂl ^½ÿ1ÿŠøܶÿQÿ æ„6@–ôÿbÿÀÎÿwÿõ³M}ÌÿGÿ›íõšÿ9ÿËp Tµþÿÿѳÿbÿç—27ŽäÿWÿºÚÿyÿ&ÿ®\ mÐÿ:ÿ›ïæžÿCÿÖuV©þ$ÿrÿÕÃÿ\ÿì˜@-äÿZÿ¯Öÿ‹ÿ%þ½VnÃÿ6ÿ‘øê¢ÿIÿ҃!F®óÿvÿÆÄÿkÿóžB1†à ÿKÿ³âû‚ÿ2ÿ¹g +eÈÿ5ÿòâ¬ÿIÿâ|+O¡øÿhÿÐÆÿfÿð¢D%†ÛÿTÿ¦ßúÿ+ÿÅ]e½ÿ+ÿ‹üä§ÿRÿֈ&A¦ìÿnÿÃÊÿqÿ÷¡J-ÚÿBÿ¬êòˆÿ8ÿÀk `¿ÿ0ÿöß±ÿPÿæƒ4B—öÿbÿÆÌÿqÿòªKƒÔÿKÿ¡ç÷›ÿ1ÿÉiW¸ÿ%ÿ‡ÿÝ­ÿYÿߓ);Ÿéÿcÿ»Óÿsÿþ§N&sÙÿAÿ§ííÿ=ÿÈoZ¸þ,ÿúÚ»ÿRÿ +è‰8@”ðÿ^ÿÄÎÿwÿ$ù·Od°a“zn‚v•|}•w}‡s‘™qˆ}p€‡’pkz‹‚‰Šl‚ƒu–{wžynx|Œ„|šu{‹~Žt…‡i’z€Šƒ{|€Šˆˆ~x~‹}€…—|y€q{†}}”„‚‰w……|‚‰v~…p‚v‚{‡w‡……‡vŠy†€†yv„|ttv€yw†‰„†‹‡€vŽz‘€|w‚upƒtxcrv|s|‰y“†}™y‹…|y{zn…‚}{‰|†z„rˆ€‡zŒ€ƒ€m~vtwƒr„~…ˆ~„x„†zˆ‚Œ}ƒ‹†vy||~|~‚ˆ‹z…u‚z€……†}‡~…‘ˆ}‡pˆ…z‰„Šs‰„zv‚€Ž|hƒ|†‚„ˆlvŠz‘yzŠ„Šˆq‡v|…wq…~‹x{…y~s€xwsa†‚~‚y{{‚rwxnƒx{†…„t‰€wx}|€wzƒv}€‚…}€„{|‚„~o„zsˆxy‚‰—y†…}}~}v…‡ƒƒwy}~€kˆsŽ„|‹x‹‰}‰m„…ƒ}xzyv”}€y}Žƒ„†‘z‹Š„‚†‚{ˆqƒ~uv„ow}…|‹}‚x‚‰{„„‚†}ƒz‚xvx‚~€z‡~‡€{ˆƒ–‰†~x{|‚‡‚‚†ƒ€yŒx‰zz}y‹‚sŠJOžÿkÂÿì¦v$K¤ùÿmÿÎÄÿgÿð§B#‡ÙÿOÿ£äü“ÿ1ÿÃk[½ÿ$ÿ‰ÿ×®ÿZÿâ.>˜éÿ[ÿÀÖÿsÿ&ÿ®ZrÓÿ@ÿ—êëŸÿ>ÿ×p#Q©ÿ"ÿsÿÕ½ÿcÿç›<*ŽÜÿYÿ¬Ûÿˆÿ'ÿ¼]eÆÿ/ÿ’ûâ£ÿQÿ؅#G¥ðÿhÿÇÐÿgÿúžL*}áÿKÿ©áò’ÿ6ÿÈd e¹ÿ/ÿúä´ÿQÿ +ߊ2=›ì ÿjÿ¼Ìÿxÿø±J!zÐÿCÿžòñ’ÿ=ÿÅu +Rºú#ÿþÔºÿ]ÿê:=íÿXÿºÙþyÿ)ý²XrÎÿAÿ˜ëí¥ÿ:ÿÕr%W«ÿÿvÿ×»ÿ`ÿç¡8.‘Ýÿ\ÿ­×ÿƒÿ,ÿ¸ZeËÿ3ÿ™øæžÿNÿԁK®ôÿsÿÍÆÿdÿõ—D4…äÿOÿ¸Þ÷ƒÿ.ÿÀ_ kÁÿ:ÿŠòé¬ÿDÿÜ|+F¤ûÿoÿÈ¿ÿnÿï§>&ŒÙÿQÿ§äþ‹ÿ.ÿ»b`Ãÿ*ÿ”úߦÿRÿ܈%G¦ðÿhÿÉÎÿhÿùžK1‚ßÿIÿªâòÿ3ÿÆed»ÿ4ÿ„ùæ±ÿLÿ à†0?žôÿlÿÃÇÿuÿó®D#‚ÑÿGÿ¡êùÿ4ÿÀhYÁÿ%ÿ‡þÙ¬ÿXÿáŒ,Bžíÿ_ÿÄÔÿmÿü¥Q&xÝÿGÿ¦æïÿ4ÿÍic¼ÿ0ÿ€ùä´ÿ\ÿ äˆ4:›æÿt¿wG¢«e|ˆn–{{}{ƒ‰€~j€‰€„z}†ztuoƒ„~rxyfy‚…{Žƒsc€†€‚y„w‰‡ˆ‰‚~‡z‚„|{€|…ƒ€ƒ~‡‚y‚}€zs‚mymyƒ}ƒt{zŽv}„‚v…z…ƒhvƒ‚z}„z“Ž{œƒ‡†‚|€‚€€puxv†tƒ‚u}x€‡…ˆ„ˆ|s„„vƒ|‚}†~wsŠyw‡‡€…tƒ~uj~uxnu‹zs‘~‰„ˆ†pƒ•|•„yx‡‚Žn„ih‡k‚r…‡–‚†xxxmŸ€ˆ‚„‚‡vz‚Œ€ƒ‰•‡‹}”z‚|yt†…ƒ„z{{{‚l€‡ƒ‹}‡q}ƒ€„†~|‰‡ˆ‡€€|‚~}„ˆvˆ†y|q€ˆr‚n~~sw‘ƒv|€ym}–„‰x‡€‰i‚†€wy†z‹‡††|x„„|u‡~˜…sy„{Œz|†…Š‚„~‹…‚z€„yŠw}‡„ƒ{z…mx{zuyv{z|•sŽw€|w‰†zx„„u~w‹l’pq„‚{ƒ‰v†œ~€}|€“‚‡yˆƒv{Œow}~~v„ˆlŠ…‚z††ƒ|y|{y†st…Š‡†€}Š{€Ž{yzy‡xlŠ{~z„ƒ‚Œ’{‰y„‡rŒ{Š{t}u~w‹…‹Œ‚~|{‹|ˆ†{‹z„z€nexv}|~~…™ƒ–ƒ‡‚†|‹~“’xv†}‡ƒ~z„Šz††‚‹uqˆp‡}†}Ž†‡z}xv{…}z€z€…€p…u|{}†}tŠr€ˆt…}‹z‹‹|‚„z„z|ƒ^ƒ}~Œ‹€„Š„‚x}tyw…oŽ{~|{x{Šwšup‚ƒ}„z€‡Œi|yˆ…‚†ˆ‡o{w~~~t}„n{Šw„€Šy~x„o|~†|z|‚~|~ƒxˆ…Š|{{ˆu€‰x†z}„~~uu}||€w|uŠ{Œ…ƒu†u€€}‰zˆy‘vr•ˆr…x†€ˆ‚Œ—xw}w‚wŠ–y’z’yˆ‚zt„q|ƒ}|~|†m‚{{ˆ}ˆƒ†f|y‡}v‡~qŽy}€ˆw‚y~v}suv†„r‡rsƒ~†‹yˆ}lzst|r‡‚„ŽrŽ€s‘‹‚’smŽv€‰r„z[‚ƒ|‰u‡ˆ„~u|€x„vzysjtŠoˆŠpŒwuœr}•}|v}ˆ‚ ‹q{‡jŒ{}‹]‡t}Šz‹l„n–ƒw…h†}„cvƒo‡€v’i‡xg„ƒ‚€vvuw{tl…q†–e‡rr‰†zŒtŒ†q‹ˆu~Š‡ƒzh{‰w“sŒzuˆ€‚“~~‡r‘ƒ~Œpt‰|‹…€x…z|ž…~Šsv–}Ž‚ˆgv‚‹hyƒqp˜w†}vŒƒŠeŠw}„sw‚xz…„†ƒx‰‚ˆu“q„}‰r‡y„x|ry…~{€ƒ~…yp…{…†}‚x‡yruq‚~z€w…‰xˆs|€z†Ž‡€u~~†ƒ€Œƒ{‚v‚}z€‡{„{v‰oƒ†xˆxƒyqˆ€…~‡„}wvx€†t’}€†…~~|~Œy}‹ƒ}‹~}h{~yyr{ro‰ˆ~{|…y}{xk‚‹€…up†ŒŒxjŠzz{}‚kˆv}€r{u|{‹ƒƒ„wŽw{vu‘ƒ‹‡zw~ˆ|}|s†‡‚…twz|v}€m‚t{‚v•{|w‡tzŠv€ƒwzƒ~‰ˆj€‚€†ˆ†ƒ‚~’…vw|zt‚vy}u~„€‰Ž{€z›t€z€~‡‚z€›||y|ƒr†ˆŒ’’‡|‚Œ~{xfx{}|yrs€{u{ƒ~†Š‚‹t{Š{†zƒr|sr†x…‚|{ˆŠ”„‚›‚†r…t‚ˆ||~s‡„z‹y“Š|ƒƒˆvƒqp‚z‚v|wŠ|rwƒ{€ˆ‚‚„xwƒv|Œxyz{zx„\…xw€~|ˆ‚}‘yˆ‚„‡{‡œyŒ~Œ{‘ƒx~}r‡‰}‡Œ……{r…z~€xx€|ƒptx~t„~t†…z|ƒ‹‚}wvy{u„zp‡}€„ƒ‹s‹yŒy{y‰u‹~zŒŒ…‰{„q‹w}†rŠ†„Œ—ƒy‚t|wxyow–€‚y€‰pƒs„yˆ{™„n‰g‡o~„s…||v„‚ƒ{vt˜|Œ‡||‚…†ƒzŽ‹ˆ‚v}|ƒ‚|ˆr…}}†}u}}€‹€u}~|wvƒ{†~€~€ƒ‰||‚r‡€w~}…‰|xˆx„wx{v~|s|xu††vx€k……z|‹~€y„l|†}„†„{ˆŒŠ…zzƒ„y„vŽ“||‚tŒ‡’|z‡}‹„}„fv‡~‡‰{†~Œƒuzy…wƒw|w€r‚n‚„€€Œ‚‚…}„|zt„z‚~w‡Œ}—s„„‚‚|}Šƒ„y€€z‹€‰{u‚z‡ƒˆƒ¢„ƒ…v{€ƒ}rwos……ixwnzmoŒ}~‰†…€‰€{szs}kkxrŠs…kŠ{ˆ{‹~‹†~‹ƒy€„zqvƒ„„‰s†qƒv€{tx……{‡‚Š}‰n†‹z~|{~…{w—y€{‹tˆu˜|†ˆ{‰†z‘qm~‡€ƒ~ƒ€mvˆ{‚‰‚sŽ‚{€r|q’•zŽu}y~ƒ†wx}•sˆly|x–|„qw“n†ˆ•qƒ~u|Œu‹{zzpŠhp’|Š”g‚‰nšw~wm‡u‚‹tws‚…ˆ‚‚„}‰u‡n vŒj}…qŠ‰y‘wu‘‚ˆ”|…ˆs‡…nu}„€Ÿfˆsy•v‘ck‹xŠ‰qƒws™„‚€w{z…„tu~vq•„œz…•r‰ƒy„ot†p…wmŒyu„Ž‡ts“‡ƒŒjvz…‡sz…r‡—o‘€g‹|u…|}‡sŒy‡{}q‰…‰Œh†v‘}‚z|ˆ€‰~u€ƒ…„€~Œ|„{z{€|‡‹rnƒƒyp‰qŽxs‡€~v“tv„€o{g~‡y‡‹ryxt—x„ytswo…styuyˆy{{}t†wi†zxƒ~…{m‰}‚yŠn‡vzŽŠ{‡zv}€y~su…ƒv‰ƒ~‡‡yƒƒ~‰Œ†‡‚x‰‚€~…‚~Šv{vzˆ~w„g{‰wŽ}|‰yq‰t‡…~ƒr…vuw…xƒƒˆ€–~‹|x}™qwzw{xƒ~x~y|dz€Œy~‡Œxƒ{{y‚}‹…wx‚z€€ƒŠŽ…‰}ˆxƒ{‚†ƒ†€ˆz‡~|t}‚l‚s~‚~€Št†~m†v‚}‹‚…„–txwzx|vvk‡{ˆ€€€€kŒm†~†}…y„m‹t‚ƒu†ƒ˜}}uxƒ‰~‰hv‹|‹y‡……’k‰†€€yz€z…~u}y}‰‡…w„†z{‚Šxswv„ƒ{}vs‚€ƒ‡}‡†zƒ‰•|‡„†~yy„sm|gŒ€w|‹ˆst€m€~z‘hz€v€‰w€z—ŠŒ~’‡swq{x‰k‹yr~p€v{€›„x}–x†ƒf‰||™‚†‚k€Šz†{‡{”w~{}yxw|u^‹|ƒ€†•urlw}x‹‘‚‚cn€‰†„ˆ‰‚Šƒ†Š}„}‚…w„c{€{ƒ€‚w~Š„ƒ|€~…Šixuz‡wyu~tp‹{€~x‰u|‰{ƒt†~‰|z€Šcˆs}ŽŠsƒx‡†q‘rn‚|€Žy|ŸŽn“y…ŽrˆxŽƒŒ~…~ŽlmlltŠs‹|~€v€~€t…tŠ|“bŽq|€pyxsv˜ˆ{{‰ƒ†|–y’‰p‚y‚}vz‹iw‡pˆ€x~„€eŽƒ…†|}}l’nŒw‚‡uz†ƒƒt}ˆŠ‹v}’Ž„‡„u‡{‡t‡|”†u†qŽ‚~u~vsvŽx††|w‚{j€~Œ…|zyjsrz‰|iy†uˆu‹‚‚‚v‚†‘ˆzƒŠz‚‚|cˆ…€~„‰‰‚td€‡€Žx‰‚y‰ŽŽƒ‚z…Œƒ‚ˆw™e†z‚~x}…‚q‰vy„~„zƒ Œ˜Šs|„{ƒxtp‡z€€zvˆv‚™ƒ€Š†|{}ƒŠufŠ…l„€ƒp‚{‰z„…†›€y†•un{xxz•Ž~ƒ†€yƒŠ~l|oŒ„}twwƒ„™w~|‚{„€‰ˆ {w……i…‡]w†Šs‚‡u€}ƒ„€~yxz•w‰‚†„ˆ„w{™z‡„s‚vt}Œl{t}~~xˆ~u„ˆŽ€‰‘|}{jrv}u‰|‚Š‚w~€{Šw‡l„ty|‰r}y~†Š†‘Ÿu’y‹•›}|‹„„…sŠ}wu˜qŒp…{€v†›‡su~y~„”e“yx†w…˜o{~p|lƒz‚o~ƒ‡{z‡x|‹‚ˆ…ts{…ˆ‚p‚…ŠyyŽypykŒt‡o}wtlvƒy–y{|†‰€„„Š…€~u‡…ƒ‚†py{}“zj‚†Œyšyq€ƒŠˆ‚€r˜z‰sxtxƒnorsuxˆf…‹fŸp{Œvy}~„w˜o…ƒ…‹n‰woƒaxz‚ƒv™Œpxq€{„r’€Œ€yŽ~‚szƒˆu|ŠŒŠ~xƒnxxs„v‰ƒŠ~††€uŽfu€|ƒiƒ}h‡„|†xqŠ€s“‰Œsqƒ{pvl„€~|€ztt_t~†~ƒ…€}osŒ€~xoŒ‡uepf€‡{Žo„qš€xŠƒ„|fvup~†ˆŠs}€}‹‰€€x~Œy•‹€~Œuy…l}~”y†|t}}n‰’‰…š†‡~|Œ‚„s†wŽ}Špt{€‹ƒ£}‚…†ŒƒŠ|tb‡syt~|j{—v‚€€{n“Š‚ˆr„ƒp}z[pz~€v}t{•p€|}€…}…€‹s†~z|…pw‘aƒƒ‚†ƒr‡…„ˆ}~vxyklz‡x‹‚p‚zqxƒ…—xˆl”†jˆw‡iwyƒ‘ƒ…~„†‹d†y€‚~ˆz†p†‡|…x||xxŽv„y‚†€Šwkyp„ŠvzŠ}Š…s{y€„‚€‡z†Žzˆvˆxvuy—•‚}~…}u|y‚}‡x~€sxˆi†ˆ{{~t‡ƒ“ƒŠs‚ˆƒ~khzy‡€ƒ€}y…s‰~Š„tƒvu{€„~€Œ{€xw‚ˆ}z~‚€~ƒ}x‚ˆƒyt…x‡||vƒ~}u‚|ˆk„w‚{†{‚{…ƒrƒ{y~vzvus}Œ~€ˆ†„mn}‚ƒx‰„€m{q‚zz}{‘†p†}t‰{}{t„p„‰t‚„tŽ‚yw‚‚‡|‚‚yƒŒnˆzv‚€v{v„}†‡€€~‡€uƒ{ƒz…vzƒy„xˆ‡‰‰ˆyˆ~Šw‚z€vuƒl…|{vƒŒ€„“{}‡€€us…ƒ‡|ƒ†qwˆƒ•‡{‚‡|Šƒ…ysj‚„€x…Œ{exxŒw†‘u~”z‰…|€‰xˆvŒ…u~xy‚x}ˆqz†‡‡€|ˆ…x}y‚us{t‚uzw‰…ˆy…xŽ€uzxˆvz{ntq†x…}Œ‚‹‰‹|€}Ž|‹v|{}‚vx|‘v…€†‚ˆ}t‚ƒ†€€tos„„˜qŠ‡|rˆ‘}¡ƒr„pm’†‘…~‹}|yƒw~|mƒx“mxlˆ}mtl”yƒ—y‰z}ˆy€‰v}„}”z…ˆl‰†yxz‹vw’uˆˆors|…Š|u€xŠ€‹nƒtf‰x…ˆtyzŠr¡qoŽk‹ˆwˆt‚~w‹h||u‘y~€~„k‡nwŒw‹“‚–ytŽ‡y…r||g—{ŒŒn„ƒ€ˆ‡yw||ŠsjŽƒo~nvu–‡z—d‡o{~z€‡v‡ƒ‡…p‘dw‚j‰„ƒq„n„˜aƒ‚i—€uy~r‚‡|†twy‚ƒvƒˆ€†€‡Šˆt‡…{‚|€rˆ…‡}um‡m˜x‚}w~m}‚i‡uƒzz’‡z}{o~x{†u~†{‘z‚…„‚‚ƒ|v‹†vzp{Œp‰vx‚r‚u{|ƒƒ…‚‚Œv}€kƒ‚ƒƒo„}„{wt{‚Œ„„†‚†‡{wŒƒ‘‡{~w~zy{xv“v|…z‚ys”z}†~€sr‰wŠz€~~{n‘o‰nx‰‚ˆŠpƒ~‚ŒywŠnt‰x‚„…„ly{oŠy‰~ˆŠx}xt€~‰‡y{‚…„|~v|„xvtˆ}†ƒp„‡„t…Œv…nƒz†ƒsŒ{Ž‘m‹wti‚rxpŠ…|tt‚v€ogq‹„Œ‚uzz‰tˆw‚wx‡€pˆty|vn„r’“ƒyv……ˆswtpˆ|„–|…w†t‡u’}q‚ƒt}xt€vzvw€‡’u„„ƒƒ}w‚„}‰pqsuŒy~x~‡‡}}xuv†|ƒu}’x{‚n‚z|ˆ{rƒ}„|„u‰|‡„wƒ†‚yƒoˆ…‚vt}~~‡ŠŽ€{‚„z‡p„’s‚x~}s~„ˆ…‰u…{…|sˆz‚…~€‡v}~……tqƒ‚ˆyy‡€~~‚wz~~~€†{Ž‚„x{…‚€yˆr›‘†r€|p†vl‘t“††ˆ‰‚xizt~y|‚ˆžo„r~†x‚’u|zƒƒƒ‡ƒƒ|p€„w„wptxz„w†ƒ„|zƒ†‚w}y|ƒs~ƒ†{{~‡}…z††„zv‚ux|k‡{{†€‡~‹‚Š{|{†€vwui…u}y{y„}‰‹Š‰ƒ‚„zx†Šul|l‚ws{|‚{o|{ƒ…‡‡ƒ~~ux‰z|x‡u‚„‚zv„‰ty„~‹}Œ„Šˆ†ˆzˆs|}„vquz†pzy~ls|„…ˆ††tn|xt~„uuuŠ‚ƒy€€|…†‘uŒ‡y‚€zn†r‰~~yyuzƒ{ƒ„r€€y‡}vpˆ{†‹yƒuysz„y|xx}ˆ€Šy„}„zy‰„ƒƒy}€yx|{Œ€€}•€…‚~~{|nwŽ€Œ„Šv‚v|{}px||‚ƒ„~”||„xz€x†ys†wˆ„ƒ{u„|‡uo„‰ˆ†{|x{„tƒ~ƒƒ‚v~{xr†y‚‚|z–miŒ||•v}rqˆ†~‹gx‚uwz‡€‰€wtŠ†w{rg’oŒƒqvrqy~‹sxŒx”ˆu‚|€z~„†|Šƒoœp‘‡‚Œs„v††n„Žv—pz‘d}yl€rƒ}xŠx{”†|tm}t„zŽwyy…‡ux€kŒ~Œix~rzi‚|‰pŠ…‰xys‘pƒ‚i€uu‰d~†xˆ{t‹~w„|‡~‚’~Šc~i}wtˆ}|j‚‚r}xpr“wŽiƒƒr{}…{Š€ux{v‹qˆn’w…j|~r˜•nˆpmˆ‡…“}xƒxt„„€zƒu|}r‚z€~|~~}zƒ~†ˆƒ„…wzwy‰ttˆ~z€p„||†~wˆq‚’ƒpŠ‚xtyŒz~†€„†‚‰sx†‰Š~~‹‚”}zx~w|Œv€s‚}~†‚{ƒ‹‡†~‡€‹z‚‚~y€}~‹{ƒ€€}|„‚Œ{z‚z‡~yz”v‡zv€|~y}€„ˆ|‚‡|}{sqyŠˆ{„‚‡kysrŠ~|Œ{t}xmx}z{t†zxŒtƒu|m‚}l€z€‘ƒ}„zy‡ˆŒwˆ~…†z|q~ƒz|~‹‚€wŒx„~tus|{o}}|††€{ˆ}~|tˆŠƒ|„w€|Œxww†ˆŒw|Œ}Œ‰x|…‚‚|‚pq€ˆ|…€€„~d|zw}ƒ’ˆŠyf‰€†‹z€zp‚nˆy„…„††‡k„~ƒ‹w~|w‰~v‚}„ˆ|‚“†Ž~„lo‡m~hw‰‚€Šˆyyp~ˆ{yƒwzr}~u†z}~„†‚zˆ{|ƒxƒyx~zq‰„†„‚‡ŽxŠ‰†w…w‡s‚uŒg‹}ƒ}‚vŠ€{{Œ„€wˆ„’{|}€zg‘t‚‡|~ˆ€‹ƒŠ†t…zxixw}“y„xy|„“vˆ~‰…{Šwˆ‹y{v|u‚‡jˆv‡{”|†‡†‚q…‡z‚{†„{s|usxz|…ƒ‰‡r†€€‹‡|‚†…{ˆ~‚€wz€€‚x…}~{…„†x{†ƒmuv‡v~€‡‰™ƒ‰w~‰woxw†€‰tw’‰z~|‡~ˆh{nw|ˆ…yz~m~|x„‰||u~‰‡|}oŠ{{v†~Šˆ{{{„w{yw‹zŠ…~Œz‚zy‡tˆo|ƒ|‚~xtŠzŠ}…x‘z˜ƒ|‡‚†|wz{zŠ‚tz‡‚}|‹€y„€„‘{Œyp‹ƒˆx†u…uˆ‰Šm†t‰~qnv‡Œ}€}v…s}|xz}zt…x~Œwˆ~x~}||ƒ…}|z„{€„ˆ~wƒ{Œ|{p{‹z”{Œ„w„p~y‘€ƒy‹€u…qz‰z‰‡s‹tvw‹y{zzx‹{y|k‚…xŠ{‰„}‹u€Œ†y‰}…xŠˆ„}~pyy‚s€m‡yyŒ~‚…}ƒ„ˆ„zŒ|y‡o}ˆw€xw€xŠ~…‰}“}‚|zyu|{zq~x|„r‚{}~rr{’€‹zr‰do‡‚p‹}t‘wz‡„‹{“Œzy„|ƒŠu‡z~z…w„qtr}ˆ{ƒ€ƒyŽp‚„vwqxr|l‚z~‚Š{‚Œ„‰€vz}vƒxs{zz†{{„z†€ƒq‰u‚ˆy†}€m€wn„ƒ}}‹…š…ˆz„|wŠ„gjvz€l{utkƒt‰z‡†’w„q‡†‚p~k‚…sŒrztnwzw“ˆŠ„‚„yŠqŽy„~€{Šy}y€|†v{z‚‡ƒŽ}‡nszytƒk„~~†t~‹x„ut‚Œ…Œ…uŒ†ˆ„€Œ|‚{z~~ˆŒf“z€‚ƒƒ•ƒ‡uwss}}‚yzymwj€Šƒ€„z~w‚}{tƒ~xq€z|s‡t‡}€“z‹€v{z„‚Œ{‰{y|yˆz‡y}~{ƒ…{Š‡Šƒs€tzq~y{{zˆm€xr€|Ž‰š{ƒy‡€ƒxŠwn{k|€‚w‹y‰…Ž|s‰‚x‘q{|ƒ€{gxwswvz†…~€„ƒŽu‡„…{}o‹ˆ„†yz{~s†‚„Ž‘v‡‰}„{{ƒ€„ƒŠ„|‚„{z‡€tzzx}ƒzƒwˆ‚€~Œ{„…†ˆ‚‰…~‚~uv‰}”}w~rv}}“n{|w}t„€pƒy|ƒ„{r†€~€t……„‹„v…~r|xŒs|„Š€ƒqˆƒˆŠ{x{{yy}zxx„v‡s„‰‚‚~y…†xsz„}€†t‡‹{Šx{Ž…‡ˆz”v}‚„‚„ƒ…˜‡y…‰n€x€kxnr†zq†r||“{‰vˆz†‚ƒ…q{„~‚~‡{€†‚}~u€„€{|x€|ƒ†u‚wƒ€€xˆ‰|†~}w{}v„„}mz}yƒ„xt‹w|‡vp…z‚{z|zw›x}ƒ|Š‚r‰~‡zzzv†z|qt‡‡€xv}|qŽŽ|„y„‹q„{`‚~yƒ‰{‹‰kˆuƒ~~y‹y‡…‚‚}{|vz€†|‹|yƒ…{}~vŠuˆt†ƒƒ‡‰€ƒŽyx‡x‹~‚ƒ„‚|~}wr€~~}„|Žq˜|†~u‡uy‡Ž‚’|xv„zˆvsg‡„ˆ‚‰†|Œ^†‚xˆ~ƒ~}w‚ƒx…„‚‰kˆ{ƒ‰|€„w|~vr‰v|ˆ{zˆ~‚Œv~„…ƒ{‚x†‚{‚€zx~{|€ƒyŽz…€z„z|zyx~u…€y{~xr|g†wŒ€ˆ~‘Š‚‚}~…‚}c„|ƒ„y‚†~‰€‰€‚ƒ||‚‰„Œz‡z„‹…‚{}kx|{r‡{„x‡}ƒ~€…}ˆƒ{…„y{€|‚|{€€†yƒxz†y|€z}‚t™u€‚‡{–ƒw†pƒxz‹}~t’{|~zx„j„…vƒyu†x‹ƒ…s†vˆŽu”€’t{„{„…oŒz{ƒw{uƒŒov€’k…yo…~p…rr~wƒŠvss‰|Š‰x~tw‚f‡‰}…wp†€}•d„€q‘‡y‡z€€w~‹‘|qˆm}ƒ{’}}‚Žf{vdšhˆu…zqŽsxxqˆ‡}t~k~‚‚m‡}q•v‚ªn‚vxŽ€ƒar†x‡rn†ƒ|}zsˆqˆ{Œtk‰„zŒx„s…„€Ž€wˆx‰€{ŠytŒm‰sƒyiˆxˆ™u‡vq…nzyŒu‰h…jpsyŠ|…€v{s‚Š‚xrŠx˜r€™x…‚€€w…k|wvƒs~mu|n|q€…†}|xƒp‡~}|~…‚xx~|ˆv„xy”…‡†zy}}…z}‹}}€u‚„z‚|u…{Œˆ|‹ƒ†z‰lxo„my†~’wŒnƒ{xuŒƒk~‡~ƒn‡zw‡Š†z€„qŽŠ|’}z„v~z{…hƒ‡~u~€„…†p„…~‚†‚qvs†‰x…|nr‹s‰ˆ€‡|‰~|}zwx„|}Š{}‹€…{‡Š}„t„„€ŠxŠ~€€†ˆ‡ƒ}‚€€„w~„„y„…zƒ|~ƒzŠz}ŽpŒ{zŠu{|Ž€†{ƒ„zz{u\†„|‰~~y}‡}yz}„~‡|nvxxŒ…|†…zqyj…Žyww}—s…~‹ƒu€tq•‘…‰x…€ˆzw†vƒ‰†‚ˆ—€ƒ…{‡s~‚‚‰Œ†z}‡{}uv{zw„„}‚k‹‚{~v‰€‹„‡€‚ƒw|Šl„ƒˆˆ~‰rr|~|ˆ‡z{ƒ‚x~||Ÿ€zƒxyˆy„jo}~‚’}psn|Š€y†~v…{zu}nw‚nƒ|{‰……zv“€y…uˆ€ƒ…}vtw~y~‚z„€p{‰€ˆ€}‰z€‰z†~~„‚‚~…Œv€„ƒ†w||‡u}}{”†„‡‚}{v}rnx~Ž}‚}nx„rr†}}„{‚}•€‡}}ˆu‹xŒ€|ˆyr€|z…„ƒ€z~}{}†zz„v…n„~ƒzŠ}x~Šs}zƒ‡ƒ}†–|}n||„n}ˆ|€xw„‡„~||~Š~†x…„}}v|€„ƒoƒ„{p‚zƒ€‰z‚‚„zƒrx‡~~…~…p††€wŠ}ut‚†|~ƒ‡wƒ|†…{xxxˆ~ˆy†ƒ„jk~rˆ‡|…z|wv|zy}|vz~Šy…l‚€‡{‰‰u„ƒ}…x€{ˆ†„ˆz‚}„†|Žx˜p†ƒƒ‡†j†|y‚}}{~’„ƒy‚x{~wqƒxy|qw…ˆvi~‰€wŒ€v‰j„„€|…{ƒzy~u{~qˆ|qˆ~€~|}v|}Š„~‚xˆ}‹Œ‚z{q‹tvur€|…w‚‡y’‚{|~††~†Žr~…‚€{xrˆgˆzy„yyƒu}Šo†‚~‚ƒyw‰~“‚qƒ}rƒ…}€m~yˆ~}€zyƒ{‚~|‚€x}„z€ˆz|‚}‰ƒ‹ˆkŒuyy{„€‚m}™}{‚‹~wygˆ…|ƒo‚€eˆ€t‡x˜|…x}w„‡qqztyˆvn}Š~”{Œ†{v~‹zƒx€zs‡{Š€{~‚z‚xƒ‰Š|‚x…‹€|zƒˆ{Žx„’…}‚wz…yˆu‡†ŠŠ~zyŠs€€qeƒŒ~v†‡iw|…u„xƒŒs‚~p€€}“€un€ƒv‡†yysrƒ}‰|„Œ|}w|„ƒxy~€u„‚†|ƒx{€|ƒ~†Œ†~ƒƒ‚|}tz{Œ€|†yy‹…~ˆt†yz…}nt€}€‚‡|ƒ„™x}€}{uzˆv…s||wsx˜‚Ž€y{‡}|x||r}€x†€ƒ‰‹…~y‰„zs„x‹~zy„ztw…‚ƒ€kw„„‰y|u‹tz~„Š~‡{u€‚€zxŠ‚v{jz„zz€†w€ƒfh„v€|…Œˆ‚‚g‚|w€ƒy‘€m’m†{wxlƒƒq†|†s‰{•€…zv|}q€…s‡ƒ€†„x{|z~w|{z€ƒ…ƒƒmsy’ƒ…|„|tˆ†…Š|„…{z‡ƒ‰w~|}€}tm€}ˆƒ~‰ˆ˜}ƒ|}yzn€‘q€s|‡…‡ƒ†y€ˆ€|ŽvŒuˆ…|{„„Œ|~}{z{vˆˆ‡t}z€‚„x|‚s€Šs…w‚€y|sƒŠy’€~‡‡tz}€€”‚‚zyˆ{ˆh…‚z„vƒy•rƒ}|ƒ€wvs~|„Šx}zz~ztv„…x€|~š|~}‡‚„‡sn|~ƒ~yv}z|vt|ƒ‚x}†}~€s„{w‚ƒwƒsˆn„…}Šƒ‚p„ƒw†|ˆv‹o}‚v…s„u‰{ƒzxyŽ|w}s„y‚zˆ€Œx}…ƒszvlz…ƒ‡~…y~™†„~~|yŽ{†k‰x…„z~€o}x†ˆvzo{z~xq…‡{xƒs…lŠ{‚……ƒv{ˆ‘|ˆ~„‰y„…‡Žƒƒy|u…m‹{zˆz…w{{ƒvŒ{|†w~~y~ƒ|z~ƒ‚z€…€x‰o~€~‰…Œ{x†s‡„|ƒ€y„Œo€p‚‚z|‚|y‹r„†‚}{•‹~|‹€z‡|st‰…ˆ{}qx‚rˆw„ˆ†t‡€…‘u„€‰€sul‚zˆ~Žv€||‰|‚|€v}o}†|…Œ|{q}}ƒ…t„ˆ|{‚x{|†€ƒ‚o‡{}~{„~‚v…{€‡~Š{‡ŽŒ„~|‡|wŒ~Œ~†‚ƒ†{„~rlo}‚†{~{ƒo„ƒ}ƒŒ„||‹’}z„ƒ‡tŠ}‘„~ƒ†ƒ|‹„Œ~„…u„‰~ˆ…—qz…}ˆ{†yƒu{~€ˆ{ŒwzŽw‹ƒ†‰…y†wx~†šˆ„p„|Žƒqˆl„‰‰ˆt…x‚ŒqˆzyŒw€‡„‘ˆh†…{uzrk‰xˆsy€uv€r|‹n€‹rŒk…“s{Žw‚~o†˜Žt|}t~~p{gx„}†{fƒj‚‰r{jŠun™{ƒz|z†ŽwˆzŽl„iqŒg|t{‚ƒt€{~ƒ`yzoŠyŠˆtv†d‹„qˆtiƒo‹{„sqŽ~‰Œrvqx‘|{‚w‘†swnˆp’v‰‚zy{†s}‚pˆƒz{yxwu‹u{Œkx}‘…€o€|€•…}{‡ƒ‰…rƒ‘v‚{yˆw€‘‹tz‡ŠŠxr{Š˜y~w‚~z{ulƒ}{‰ƒŠ„Œs†~|~~Žzz{‚„{yz}„y€{„|”‰{€y~…„v}‰~‰~xz€†}ww~‚}€v‚€Œz|~ƒƒ€„lv„{†~uƒ}m„trŒ}uy|xsxs€wyq‚rƒuf‹~Œ|{~}z–‚zŒuv‚†…rvqz|~‚vtx~ˆ‹}wzx…|jxv…ƒ‚u…€„jzz€~†|ƒxp~}‚~y}†|‡w„‹|‡†{‚uy}z„}„€}y|{††„ƒzw†vŠ„„„„z€{…‘t„~†„‡t|…pyu~‡ƒzz†wk}‹‡‰ƒu|‚zk}s‚|†u…„n||€‹~ˆŠxr„k„Šs‚ƒhyvyyqzƒz†…kˆzw|ˆw{ƒ}…˜~†‚|‰}x€wŠyy…xƒz|ƒ~x„~ƒ†s…‚„‚|zvz{Š|~€~‘s}vy|…„soƒ…}…s~}r}Ž„~‰x„‚|s“vw{ˆ}Š‚tzhy€†||†tƒxpŠ„w…‡j‚pxp}x‚„|‰Ž{~†…Š€sƒw{w„pz€|ˆr~…v˜€xƒ…€€ƒzr€…„†{yw{ˆuŒuƒ„vƒ|‰‡‡‰}z}y‚yƒ€‚…‚p‡p{ƒƒv…|p„ˆƒˆv{xo†„‚„|‰u€‚•€}‡}}{‹’ƒ‡|†‚z›ˆuƒl|„‡zrˆy}q‰Žƒ‹…t€wŒ‚{‹|zŠx‡Šx‡€vvuˆz|„hz‰€„Œt~ƒsw€y…sƒvx‰|~}…‚‡‰z‰‚xˆs}u‰‚|Œ~ˆ|h‚z„}x‚ƒ‚t€t†ƒ‚yz{…‚ƒz~zƒwo’lx…‡{ˆƒ…sl{ƒ‚‡‚|~{‰zx|‚|z~mx„nƒ‚j~‚€†vvpz„ƒ~„‹‡q„}ƒ…z||€z{t|†ƒz„„†|vt{y€vy€vw~„{‡€}ŽŠw”}„x€~uŽg}{}{~ƒˆxeˆr{‚{€Š}k‡m„„rz‚}yx•Ž{†€‹„~s‹^‡{~ƒ~ƒ”}„x…ƒ„†„˜€…Šl{€~€ˆw€o€Šv€t„r|€l~„†„…x‡v|~}ƒ†u„†Š}€{tƒ|wƒ„|‚wŠ{…y~€|mƒ‚uŽŽ…}‚r||†|ˆ–s{ƒ€…zy|‡‰rz~ƒ~{‹y‡|u‡~{„cj‰z‡”r|}liƒ‹|~zŽ‡†s€xxx„~pƒyqˆŠ{‘m‚“wƒ§m‚z˜ƒŠ~‹†…}|stƒiŠxw‘o~…c…Š|‰wj”vŒ‚s‰}~‰|‚~…rƒtv|‹o{h‹ƒs‹|z‹w|Žmsy‘}}‰‡~Ž|†‘vŒr€Žtˆƒ…ƒ}{„‡wgtw…v„r…qt„‡|…sz‡z˜˜zŠ€t†||u‹€…Žt‘{kr†v~‚vŒ€‡‚n|Œv~ŒtŠtŠ}‰y”xvƒ”‹v„s’Št‡rqˆt“Œrv‡~‹v|ˆ{†s|…€‡ƒuƒ~ƒ}x€…x|o||‚}‰z€†ur‹zw€yvyj}Šrz|ttk…wv…{~hr~{wt€ru…‰†…Š‚ˆ’|‚~rvŒŠ…‡ˆ†s{‡yˆ‚uy…„„‡‚t…‰|sxv‡s€}Œx|{…‚…{z{mƒ…yzy€…mˆvˆ‚}‚€ytxts|‡ˆŽo}luŒ||…‚t|ƒy{‚z}…‡„š†„„{{„}t‡zm„sr†‰Š‡zƒi…z‡ƒy‚|zs‡‰{yuuy‚y†pws‡„‚ƒ…‚~€}yzs’zŒsƒƒxy}q†y…‚x‚sŠu‘‚s€k}uuˆ~u|‚v€‚‡†|zz…~Œ‰‰‚Š‡{xztzxƒ‚ˆu{|€{~}y|rwg‚ˆ~{‚}u}‰p~v‡…x…yˆ~‰q„yŒwpyx~xˆ€ƒ}}…€{“…}v{~†{Šu…wx€{~†vpˆjw|†}qŠ‡‰u‚€ƒvtz}vŽ€v‡ƒƒ„Œz„€zƒy‡~}„uy‚‘‡w€‚z„~‘€†~}z}j~w€n„†ƒ{{‰yx}€t…xŠzo‚x†€„}ƒ‡‚v“†uoˆ‚€‚tyyˆ~Š€Ž“ƒ‚}u‡‚…‚urps~y{{…uv†i„‡}tw{ƒui~ˆ~Š€†ƒ‰„ny}|ƒ„}†€zˆ…vz€{†{k†}„‚ƒ„zxŽz’„{}|€‡yƒwsŒ|Œ}‚†‚€|…ƒ{s~{y›‘†z„~ˆo€m„uy‹ƒ†r…‚‹ƒy|Šˆˆƒ€‚‚€‚pwoƒ€Šwƒwx}ƒ€~€{‰‚}y‰}ƒ~„u‰~Œrx…p‚wy‡|}ƒ‚s|ƒs˜€{‡ˆ…€v”u„yw„€‚‘m€€q‚wt„vƒ}‰ƒŒ‡}{x~x{}wˆ~€{…‡x|yz†‚y…‰‚†ˆy‚{ˆƒ}ux}€}…xx‰z€eˆ}{~u„{xwŠw†€y~‚zv}Œ„z‹{Ž}†q„xq}v‚s…ˆ‡†‚Šzs‚uƒ‡„†}Ž€„|x†x†~ž‹‡|ywe‹‹}‰~}ŽlŠ}yŒ€}ƒt˜‚}‡oŒ~‡y€}„‡…t}y~}sŠ…ƒ}‹†ˆw~…„{‚s€€t‰l„†~‚‚rky†mˆ€xsrƒj‹Šqtuq‰ƒ•w†qno‰…|f‚ešŠw–av}}‡…~„ƒy“~†žlšun‚yˆx|Šg„ˆ”vvŽlˆiv|ƒ†’‚…‹~ˆ|y•tŽ…sx€ƒ—}wŒttŠju€~„vz•m–Œ~‡ru~€Œc…Œu™ƒx”u~qŠˆ…x‚|zƒ€”{~‚}~pŒz…‹„‹s¥owx}ˆ‡Žv’…qˆ„e}uŽŒˆyŠuay›w†hn€†–‡€‰††ynrvd„saz‡ˆn~i|Œu‡ctvxy~zfˆ…„†„€m€}uqkfŠz…‡y{ƒdˆˆz„z~z{¢‹zx|Š†…‚„†x‘…Œ~‚}uŠq„†x|n}ƒ†y–y‰…~‰‚~{‰†ŒŠ„~ƒ}‡‰Šy‹zk|xx‰j{…m‚„ŒvŒxkz{r”|}Šu{“zrlns~‚•p‰zzzrz„s€y~|‚‰c‰{„~{~…qj{‰‡ƒo‰yzp‡w}~„€{x}ƒ‰¦‚wz„x‹{’‹ƒ€ƒtutysz‡†ˆwp‡…„…ƒ‡Œ‰‚‡s•ƒ~‚o~|‘„~wp{€|ƒkŒƒvŽs|‡|‘t|x…‰{~|™”ƒŒ{†ƒzw‚cxtl‹x{ŒyŠwq|}~‡w}€r„|m‚€}ƒki‰‚~ˆvxtw’ŒŒ†…|zŒskq€}{‚†…~f_x{‹~€€–r•~Œv~†‘tzŒ{Œy}ƒŠ‚„“v{q||ˆ€|‰‚~‹‰y}wx‡‘|ƒƒ‹ˆ†my{€†“‘v~‚q}k€„€‚€zˆ|s~rŽ•ˆ…Œz‡„~€vf{o|†r‚„x†~“‰}}‡†v…€Ÿ}{ˆ‚~px•{šw…ˆy{‡ˆ|†‚€y}Œ†€†…†—€‚€€zzww•Šˆ~{€~s{„q~pt{Œhz‰z‚€‚Œ‰ywy€zk€uq~~x„}Š‰…ri€€Œƒ‰u{žq~s‰{z…{¡‡Šz†‡‚Œwgqhˆ{s|†wymy~zv{vzy~yˆ€v{ƒ€‡‘rŒzw~…uzˆyvx~}v|}vrƒf~‰z|ƒqw~z—}|u~y…wŠ‡y~††Žsvˆ„•~wx|‰Š}|‰yz†…wwy‡€y}~gp…}{t€|wvjƒ}Š{‚|~† ‚†y€€„~„‹_ƒs‚|†|‰{’~†{…s}ƒŒŠƒ†y~y„†z^eƒ}}†z‡…i‚u|€rˆq‚„Œ—•t†j…‡•yw‚Š{Šqvœy…€rzŠ€~…{’|p„n…lx˜…”ƒ†‹’ol‡s‡~›}ƒ~}}ˆ~™~‹s‚~ˆth˜‚“œz}…ƒuŒ†”|swu‡r†€Œ€yˆv|v|˜||“‹†…„ˆ‹‚pu~~wzwŠ{„Š—}„|†ˆm‹|“€‹{‚|Œy‰‰rŠjxƒ“}r€}r€Ž‡Žy†„ˆ}nvtt†xwz‚‚ƒh†v{uˆ…Š„|™w…vz‚{rˆ~Œ–x‚…ƒ‚‡€l|ƒ{s~…}y„Ž‚{yy}€’ŽŠ…|uˆ‚~x{‡|ˆn…€Œ~}{Œz~}p}Š„”‚…‡s„zwŽu‚…vˆƒtvŽ†˜Šy†z}yo€…‡z|Š‰r‚||™“yƒ}~vƒ{zx~‚~z}†ˆzuŠ{‹‰yƒtw‰†‰vw€ˆw{€s|ynu€~…txˆ}ƒjz~†}€ƒ•}ƒ‚y„woŽŠ„‰{z€~z|n†oƒ‰‚‰y{†˜~w~‡z‡}}„Œ~‚zˆˆ~‡†‹ˆ†|ƒ‚x~€‚—~ˆ‰w†x}z|{w”}}†‚…|||†ˆ„„yŽ‚…‡Œzw„x{ƒtƒ‚‚†ˆx|~€‚„…†{‰y~Žpˆ€‚‚€€}~|‚~€†{‚vr|€Š†z€ƒ†„|znl{yzw”~…‡tˆ‰y€yxvƒ‡l‡s}‡{ƒƒrw}‹„r‹~†€zm‚„Ž~y…|‹uzrzŠ€x†z~‚€z„}|z€z‰ˆv‰|‹{y€o‡}z€…ƒ†}…ƒ†„}ƒ€~€|xzxt~x…‚‚Œ}‡zƒˆ‚ˆ€t‡mŠ€„mr}•{‚|„ƒ~ƒ„š‚‡w}„|…|Š€€{zƒ†‡‹o„r‹~t…zs‡zlyl†ˆx{„q}~ƒy…{‚‚€ˆtpƒy‡~z‡‚ˆzŒ…{{Šxiƒ{|Š{‰~~ƒ‹{}ƒy{|‚‚wƒŠ~~‰y…|zwˆ‰wt€rŠ„}‰~…u‰vƒw‰~v€Š~‰ƒ„Œy~|ŠnŠƒ††€|}lv‚‰ƒyt{“{‰‡t~„w‹Š‚q|p‡‘‚‡‡v…‰Œ–ƒ~€}}€qy{…{†‹ƒ…ˆŒ‚‚y„y~wˆ}y„{y|zzŒ}†Š|ƒƒ~{{z…|‚Œv’~v€ƒu}yr’€‚„xzˆztm…}|~„vŠ}’x„‚~zh€wpƒ{Š‹†ŠuŒ}x‡Š€†€ƒ…€……’…|€x‹ƒ†v†›u‹sŠ€†vydzl{‚t}€s‚rƒ‹ƒ{‹Šˆ…ˆqŠz{„{‡}‚Œ‰”…}~~ˆ||ux}€…wyzy}py|yst‹€Šw„…}„~‡‘~{Œwy…q‡†r€ˆ|y}wvzyˆ€d…|~€ˆ…{—y‚u„„€|{‡…‡Šzv|€‚€…ƒn~Š€~Œ}Ž}qgxz‚ŠuŽl„’~…uy‰‚„{{{lŠz„{zŒu†zus~|~wru|}{Œt†…}‡z†ŒŽ{‚~„~†r‰Ž{}ox}wv~y‡rŒ}}€y|„Š{‹u‚Œ‚swzrgp‚|‡‚…‚™oŒsr„r…xƒx„yu…}y„~{v‰iŽ…€}€|„c|w|‚{y…~pw‚vy‡o–ˆm‡tw…ƒsxo{pˆ‚‚ˆ…‰‰zw~‰ˆp†€|Ž{ƒx†ˆh”†wr{„j„ƒs}yn’|“‚ˆx{‚o‰‹‚‰nˆ€„—kvvŸ…€‚rvŠz‡†u–}ƒx‚~†[|Šf|r|tyw‡tŽ…nŒg‰€Švyt™y‹‹s‰|xš|‚p‰ƒx—w{{‰}Šsƒs~ƒz€~€q{ˆƒˆp~{p–|…q|“y…€v‰i†‰y‹tz|um†~x|xz‡ƒ“Šu~sŠ‚~˜kpyp‘Žv„vl‰ƒŽ~y{~‹t}||vyƒ}„„{…o€€}‚€€‚w††sˆ|t…xƒ~~|„vƒ‘t…ƒ‚~…~}‰xzŠqˆ€x|‰z}pw~…ˆ}…€~›„~„‚zu{ssŒ…ˆv}yƒpzrq†~x~ˆ~~~q{„{r‹€…„€‡xŠ†wƒz†wŠ~~}}|y„v†ysu‚€}˜~k|ƒw„ƒ}}t”‚ƒƒ{}‚€~‡xŠp}|z…‰€€y•Šy|zŒt“}gs„}xr“x|x…„ƒzy~‰~ˆy‰‡…{„s„{ƒ~z~~|‰{x|}‹}|~~„Š‚……Š}zƒxwy}“yƒ„†ˆ}€fƒ‰s‰x}z†y{}{ˆu…ˆ}pyƒ€uw~xŽ~‚|}x{~ƒ‰‚}yx{wqp…ƒ„pzƒ”‹}„|{‰€€†zj{|‚ˆu{‚Œ{ˆ{„~ˆ{|vv…w|zŠ|‡Œ‹{~€ze€plƒ~‚ƒrƒ„n„t€Šu„‹‡Š‚‡€Š|‚wŠyby~†w‚~„|Že‡‚z…z‡|ƒtfƒwˆ‡€€Œ‡qƒzs€z|€ˆv‚ˆ‰wtz‚zŠƒˆƒzŠq|{‚o€zwŠ‚…ƒzƒˆƒ‚‰|yiz~}‰w‡ˆv~y€‚|„sŒ…z~|€}ƒzxˆh„z|‚†|{r“‚t……q†‚~sys|~ƒ~Šz‡”‡™wu~y~€~Œ}y†pu|Š}“ƒ~‰xzƒz‚yx~z|„xu‡„}{ƒƒŒ|}€‚xˆwƒƒy}|‡|z}xˆ‚~‚u†„ƒ…Œz†‡€†~„ƒ€“}~ˆv†x€{”xˆ}ƒ}†x†‹ƒ…|y“‚„|ez€u~…‚t€}t‹w€€}ˆ€„€xy…uŒuŠpt|}w…~…~ˆy€‹‚ˆ…„„€|v‚Š…†ƒ{Š€‡}ˆy~…{†pz†~…Š†…ƒ‰zw€w†€~|y€„‡€€{—‘|}p„‚Œ‡Šy†…v‰„}“p†…€~ƒƒrtzu€…wŒzxŠq”yˆwm|z}zm†wƒƒ„…€ˆ{€}}|†€~{ƒ‚~ƒyxŠxŒ€z„yy‹rs{}x†|}v~z€|z|ˆ†„}€us„qqux€w†}~„“{ƒu{‚lŠ…}p‚yŒzƒz€‚†l~yz}{x{†|‚u}‡z}~Šv€‚zzw‡ƒo‚vx‡{“z€…u‡”g„{y‹|Šv‰‡|ƒu…ozzˆ|…ƒ}{‰q…€z“}u™xˆ†vz|t‹t‘u„„s•‘}ˆv‚|’i}‰t˜yg‰ww—zƒ‹^„z‰‚„v†‚i‡v~‰u}{puz‚uswŒ”q…~h˜}ˆtzŠ{ŽŒsvzx|…z’s}…u‘€‡|v|ˆk…ˆƒƒ‚r‰…€‘s{…ƒˆ}€w‚}”…€‡r|„p…h„hk”€‡w…xuqx…{t~{‹ˆgœq€‹t…~xpnŠr‹›h…{rŽz‘~‹t€–Žx†v{ŠpŒˆ{‰†Š‡†qr…†Œw‚†€x’vu}x}{€‚‡z†|t}s‰~‡‚w‡y†‰Œu~}‚‡~ˆz†Ž€ƒ€xƒ†y†ƒ‘~ƒyˆ{€|uzˆm†~Š‚w|u‡~“…}…{ƒ‹t|€‡€}~‘|‚{…Š{‚‚ƒ†ƒyx~~‚wj‚ˆˆz{y~wx€‚Šx‚€‚ˆzzzt…ˆ{„pw€‡xz}‡‡|šƒ{fwt~‹x{‰yŒr€r€|w€puŒ„ws„†p~e€rŒ}†y‚lo{{{…{‰‚~…€|…v~€o‡x‹ƒz‚‚‡†u}{{€z€†‰yŒ|wz‚}z{‡y}ˆ{…~„~|†}}€ƒˆpyw€wyt…{Œ……yƒ‰|Œ„}|wˆj†}Ž„xˆs”ƒv{x{wƒ…q{x‚‚z‚r”x{†ƒ…r„€z„ƒˆƒ†‘‡ˆ‚|vw}€}x‚{Œ~…yŠ}ƒw…€ƒ~€ws‡{z~{}y„}x€wƒz’‘}x„†‚~wz}‡…‚€‚u|ƒŠ‘|‚ˆqw€z{‚|ƒ„q~…‰ˆvƒ}}}€‡ƒ‡ƒ€zƒˆ‡wt~ƒ~‰wŒ|}{ƒ{€{z{†…Šzˆu€}…u{„x}†yv{rƒƒ…ƒ{ˆ€o‰yƒ‚‰}w{}„€‘{~{ƒ}|‚}ypŒ|…qvsƒ€v€{…†Œ€~}‚}€n~tw{‡}Ž‰z}w‹ƒy€ywrˆ‚|ˆ}uƒ{…Š€„r|~yŠt…‡{ˆ~†‚{…}|yu}~y~v†„Ž€z|w‚wƒpuz}w„…€|–†ˆxƒ{†w|{„}…€ŠƒˆƒxyŒ|{zƒ{Žuƒ„‰y€q†…nƒ~~‚ˆ||z}z}wxƒƒpƒw}€Šy‚…t…oz…{ƒ€‚z‰…~†|ƒ}zƒwy~…‰„ˆ€Œu|}h€y‰|‰u‡Šyƒvp€z‹uƒo„x†w}‰t…q†…‚…~h{…x}Šuƒ‡ˆ…x‰€vˆpˆ~ˆ{{}zyˆŽŒz„}}‚‚‚€Œ…€|ƒ€w|vw†‚x†‡„{v~€€}z„svy~}†„…Štu|„…vw†ypƒq|{ƒ~€…}‚m{{~{„{rn‡€|}„z†‚g|y‰†z•„ƒ||r‹}~|Š„€{„v{ƒ{…x‹„€†y„‡}‚v{‚{‡z‡u~€{ƒtx„€Š€‚ƒ}v€y~}ˆwƒ„tz}woƒ|ƒ†~~–|†‡w‘nx…ou…z}„q‡f“vw‡qŽƒy…„…‹g†fŽ€™ux}‡Š~†€hƒw„‹q‚|kzwmwi„y}”z~xˆŒ}‹u‰‚ˆ|o…s†~‚Œ€ƒvyƒ‚~Žs…x”‡y€pqšy„—o‹Š‹|€„€’‚ƒˆv~„t‚v†…|o‡“p~qwz‰Š‡v‡‰€Š‰syuv€s‰€’{Œ}z†…}‘ƒ€ˆqŽsŠysƒƒ‚w‡…|“‹†‰rz‚p†}‚ƒ|……prr‹‹†‡y‡„‰ww„…y‹€{z‚~„v€s|~‘u}wpr†k~†s‰y‰z†™sy€wŠ‡†q}†w{{u}q‡v…‰}}~|zul†xŽ{ƒ‚‚z‚…w‚zŒzˆ|†‰zt‡t‡„‡„s„~q~z|€€|˜†‰€w}z†}„l„t„‡€„‰‡‚Šxs€{Œx‰zn}‡}y‹t}gt}‹€~fyqzŒ‹…‡…u€rƒ‡{~Œƒ†p‹†{‚|~ˆq…{~|y~}†ƒ}…|||‚~}€~{†{|t„y€ƒm|„„‡{|…€}†wq~|€{s„|u|‚‚~ˆ…k~p‰~~€{q†z}~uzk€wŠps†|Œƒ€z…ƒ|ˆx~‹v{{{y‡{†Œvxz€‚|€tŠ€„}}~Œ~‰„z€‡y€{Š„y|{{ƒzŠ{r~ˆ|ƒoŠ€vp“w€~v}p{bwz}y|ƒ„€‚„vz~ƒn‚}~†{…ƒjtx{x€‡ŽŒq{xz‚|†‚‚}‡ˆzu…‚~„sxyx„…t‹†‚p||ƒ„zn|†ƒxz„€{–wy‡v‡|†}vŠŠv|wr€{”qŠ€€‰}ˆn„mƒqƒwry‚‚u“{€ƒyw††pr‡ƒ†ƒyz}j‰†‰ƒ€x‡„mŠ~x’vƒ€zv‚‚‚„{ƒw}syƒŠ~†o}ˆ}prƒy…|‚sww„}ƒ€‰‡t|{ƒ~}•y…„{‚}{Žz}w}ƒˆz„„}ywlƒ„|ƒ{…{y}m„}‡|p}zˆ„w…z}tqŒy†yy‡ƒ{{„uˆ†‚…‚Š}ƒvy‰‡{‡}ƒ|xx}|ƒ„{~{{~}u~z‚v†|{y{‚‡€w{s†yŠˆ~z{z€ƒ|wt€†}u…s}„‹ƒ€}‚†x„xkŠ€ˆ†wyzxrz€‚€{~t†…{~{‚€††„z„nn|y}~|Œr{u‚~}|†q…‚†€ˆ}€‡wƒyƒ„x|x~}sƒv€{~Ž€‚oy|…ˆzŒu‡…u…rƒ}’†}ƒ‡~ƒ€epz|~‰€vŒp€„|€‰v€‰wŽ‡{{‚yƒ–“|€|‹vvŠz‚†‚}|‚lxsqqˆ{zƒƒ…wq|…yƒ~z‚yŠ‚„~‰}„ˆ{€‚y‚z~}u|ˆt‡{ƒ|€ƒ}~‚‰~sŒx|s„x‚pˆu„…n€‡z~z{~„~|‚yŒg…{„y…wmƒs{‰~|‚y‹uoŽ€x‘uzkqsux…|‘‡~€€ˆ‚vŠ{u~€‰ˆ†~ywŽ€wyo€€Œyƒ„}x~udƒoŠ„‚~ˆrˆl†€„‡rƒƒ…€’x{Šx{wu}xvj„†‚‰x||u„„†‰}Švz€u†syƒ{yƒy‡€qxy}}…svs‚{~‚‡m{‚„…ƒ~|~Œ‡wx€}q†|wŒ|„ˆ{‹yyˆ€{‚‡…†|~‚zƒy†}‰~…}…{qu„ˆ‚w€…|i~{„}€|v|{yus{…~u||}t‡‚~ˆ€vy{‰{‚€ˆzzw€~ysz}ŽzŠ}w~y„}w‡~z{t‚„mx†zƒ‚x„‚u{{ƒzƒ„‚yp‡‡w…•}†—ˆy†ƒt~||wssz†z‰†}~Ž‰•t}„r‚x~yk‚…~~‰qŠ~vwƒ‹z~’}mtoƒw…ƒkz{t…t{€uˆ‡yŽy€}€‚ƒ€~ƒ}†‚r~…„Ž~‚€|{‚~†y~‡v{‚~pz~…z|…€|€ˆˆƒ{{|‰‹•y…ƒƒ†s|ƒ†„||jwx†q‰ƒƒ}smwŽsuƒwŽŠ‹}ˆ†wƒ|‚uuqmŒ}Ž{~‡ƒ…uƒ}„„}€s€yˆw|x~wx‰‹Š†~‰{z|€zƒ…r€‚‰|…‚‚|~h€|~‹…‚„Šƒ†~|{‰{ƒwvˆ“}€€Œ}‚‡……‡v€„…}‰m€{{‡††|‰‰†ƒx€‰Š{†…Œt‚z~‡†ey{‚‡yŽƒ†Ÿt€{}ƒv~€|‚s}ƒ~ƒz†}‹uƒ}„†‡x€‚€}z{~z…z}x}z€zˆŠyw„w{„~zuƒvˆƒ{ƒˆ~{}~€‡~‚}†ƒ„Šy~Šƒ‡yz}||z|ˆ‡ƒz~|Š}†~|‚||~ˆ‚Œ‹tz~~{„qw„zu…€~zˆz†}ˆ}€‰z~‚u†y|xŒ{…y~vtŒ{w‰|‡}€…‚…}t~z|‹‡†‹‚~‰ƒy€z|†x„~~z}v–ruzy€~z„z~€u}~|u}xˆ…~†‡Œ{i‚u„‚…ˆƒ‰qw{ˆn‚Šz€†‡…n{ƒsˆ„~w‹w‡‚wƒƒvˆr}|p‡‚„€€w„w~~z„{ƒ…}€xw‚x†xxzˆƒ•ƒw€‰{ƒ|~…zu}…y{sw‰Š{ƒqv€{ˆˆ€}‘wzˆzˆn~‚y}„‰…u€€z‚‚~z…t„‚Š€|yŒ{uŽ~wˆrƒ}xˆxv‹vx‰q‰x†‡x‹~{Žx‚‚~“z€‹m}†q |uŽw~‰r‚“~qm–‚w•rzyj…‚~„uz‚{„‰k†uz†€‚p†‡xŒ~ˆnˆroˆ“t•tqˆo‡‹pvtm‰z€…‚†svxtŒ‰x†{q‰ux˜{ƒ~sŒˆiŒi†uŠ€{ƒwxŠ†tˆ}€‹{€„mz~jŠx~†|‚ˆw~|}‰„~‡pˆŒŠrw‚ƒ‹‰u…ƒszwœm„yr‡‚xymywvztnt}{‚tu„yŸ€s|Œvyxz›†sŒmt \ No newline at end of file diff --git a/build/src/gfile002.data b/build/src/gfile002.data new file mode 100644 index 0000000..17eeaef --- /dev/null +++ b/build/src/gfile002.data @@ -0,0 +1,94 @@ +’Šnwx„~{‚|q‹……€|†‡ƒw‚‹~ƒ~zy‹Š|t‚|~{€{†yˆ‡„|…z’†ˆŠ~v~Š€‚|p„pxƒ„ƒƒesy‰yywtvzmx{}z†}{‰u‚svƒyx~qv€Š€‘{p…€l}pxp€x€‰xyvŽ„’~‚‡zŠ|ˆ„Š}€~…ˆ‚eˆv’€x„…w}x|“…}Œ‚‹sƒzvrxƒƒ{}|y‹‰{~ƒƒˆ€z‚ˆ}Žƒ†…xƒ‰€€ƒ‚ƒ}„v…{€~zŒ…xˆƒ‰|…ˆx‚|„‚€„v‹Œx‹~n„Œ|{Œ‡ww„vvq‰{”sx‡~}†t…}‘‚€y~|‰‰yŠŠu}‡‡~v„‰‹‚ƒ~Š€}Šqˆ†wx~rƒ‡zo|‚ƒuƒxs‚‹x…‰€…‚wŒ‚‰yƒ~||yxy~‚||„w‰~w‚yŒs€|„‹‚€‹‹ˆt{r€{„Š„z{iv…zy‚||‚†‹‡z…yz~{”|‰~z{ƒ…|ˆ„‹’v‚|ˆ}ƒ‚v˜~€vƒrz†v”z‡|€|†x‚y€†…Œ€‹vˆtŠxzrx‹ƒ€y|}‡w†„n„}Œ}†~‡€}u}‚„‚…o‡}}qyw}yœz††qƒ‡~ˆ‘x‚yv†ˆ…”~€m†‡y‰€†‡‡‘x†}~z‡v˜ˆ‡~lvƒŠtitj„„}{„€ˆƒ€u}„…ƒu„…}“zq†xrƒ}Žu„„vyt†z|v‡~…ƒ|‚€ƒƒ~ƒm‚{‚}||…}oˆŒ{„†v|}€uwstŒy}…uƒm†~€|wŠ{†’ˆxwuy–’‰‘}zƒ„~x}ƒzœ|{„j„~Œd‡yyz|„u’{uˆx‹}~{ƒ…„yx‡}{xwzvƒ~}uŽŠ„‡‚}}ƒ…}ƒ}}„‚q…o|{€|…{~†‰w€wƒ}ƒ‰~m€ux†~}€i‚ƒ”uw‚w‡€‡|’fƒ†ˆy~…j‚‚zˆ~~€vƒŽs‡|o}ŒnŒ{oz‚~„q}|vŒ{ŠŒ|{~x„|†~xƒ€†uˆ€…yy~{†|wyzx‡z€‚Š}…|{Œw~‡€‡€{„‰…€}‚~‡‡‡m}p|‹Šz‡…ˆƒ}~‡zƒ{{‡{}|w‚„rƒ€m‚~t~y…~€vƒ„{{‰w}t~s„y~‚x•wzr€ƒ‚}ƒ~†~ˆ}z„‚||‚|‹y‚{z„~}†u„|‡ƒ~…„Œ…y†f~…z‚‡{vyk€†vrˆˆ€‹…gŠ|{‚{~‚|•‰ƒsw†‡zˆ†m€}|‡|tŠ{|xwˆ‚|{zƒ~{uˆvy}o€„sƒƒq‰‚u„„~|~‚‡…h~uzƒ{|z…q{rŠw†€uŠ|wqy}y‚s|‚u‰k…vƒ}†‡q|€„……‡ƒ†Šx}‡‡ˆx~yƒ‚„€~ƒˆ}sx…‹s‡„z‰yu}~|€„o|vs‡‚‰w~€v‚…}€…n€„‡~v„}|†Ž…~‚~sw€wq{}€€{‹wwto€y~z‹…|†~lƒ‚uƒzx‚{€{~tsv}z}ƒ„r…w‰z{…w}ƒ€‚€o„|{y…w‚„}ˆ†{t{‡w…ƒˆƒ–~…„‰„~ƒ|€˜…ˆt}~…~€mx~{xm…ztpzƒ‚r‡n‰‚o‚yu†€‡‚€w€‚{…v†j„Žx„~vˆ|‹xˆ}‡~xx›q…vw‹Š€‘‹p…~†~~„ƒ‡yŒ€ƒ…~Šwwsw~‰}z†ƒ…~yx|…yŒw…|ƒ‚„dr€|}w„}ˆ…‡u~…€ˆn‡|‡~‡†|~~€ˆzƒˆ‚‡w‚€„{Šqƒ†~„}{„{ƒ‡v~l…ƒz{{…†‹|ƒr}‰z|Ž~Šxv……€t~}†}}€…€‹‹†€‰‡‚~}~~†w‚€yx{|„}y’r}†ˆƒ|‡f‚ƒ‚†|{z‰p~{‡u„~tx•|‰…s{‚n}izƒ„†‚ƒv~zk‚z}‚Š„Š€‹ƒ†|}€ƒ…ƒ~‚‚u…y„r~Œy„v‚‡zy{}‡€ƒ‚~‰€‹w‰|•‰||}„€‰}{Žt‡y}„‚ƒ‰‚k‡s}~q‚„k‹“ƒ‰z}†…yxo{u{Œwvzy|ƒjƒŠzˆ…~ƒwz‰~|y„z‹y{ƒ…~‰tt•qŠ„~vw„‡‡ˆ‚w{‚{‚‹|ˆv}ƒ{v„|‡p|††€‚{p{„†‹sz˜ˆŒ‡|~„|‹o†o‚ˆzwŠz{‚oŒƒ‚u…t…|m}{€tuz„€r€€|}{tˆw…„w‰s…ˆ†v„{†u|r‡w~v{{‚n‚†u{„ƒƒ‚}ƒƒ}~u‚u‡~yƒl†y…‡}„‡}†}y|Ž„„}|z‡zo†s}xxˆqx„„‡œz|‚‚z‡|t€xv€n|…Œiƒn‡Š…y{Žƒ”‚ug||€k€ƒs€€xxŒŠ}‚~‹|{y|“y‚z€‚{„…{‡~ƒ‚zƒ}{‰‚{ƒ†~z}€y„}|†}}‰wuv}„zs€{‚~Šyy‰gy†{vƒry‚~{~z‡Œy‚{}~„ƒ}wx~~‰}|y}z…isŠˆ~mƒ{s~…ƒy‚ˆ€f‰x{…„Š„sƒ|‹|zt…xˆƒ€™zy{z„wv„ˆ†‡„‚ˆƒ…‘{‰ŒŠ€†‡€}zt~{z‡|rzl}€…yu‚€‚xŽx}ˆ‚vu†vq†p„~€‚ƒ{qo|€‰{z„|‹††|‡†‰z…w†sw}ƒoŠ}s}Šƒ‰ƒ‰Œ”††v‚x€p‚r„{q‚Œx‹~v†…|‚…}‡ƒ€{|~~{~~‰{€„z€y…{€z||„€‚~}…{tzz€}‰Š‚zww„ƒqy}ƒŒ„€ƒo“c…~{{v…ƒ{„ƒp}w”{vƒ~}”‡†sbƒw‚yzjŒŽ~ƒ€}…{~‚o…|u†ƒ~‚|Œt‹†‡{ƒ~{Šyz‹z‚ƒ}yŠ†Š}sx‚|…~†uy€Šx‰x€…~}„{y‹{††„}†ˆ€zy–x„‚}y}|•ƒ{{Œ‚Žoˆ|„|q}r~‡xŠ{~x|„}|}Œ•~ˆ|€{„evƒs€‚{†w€u}~x‡z€}{ww}z„‡p~‡„p}…ƒ}‚}…~~|}{yty}…€ˆz„|€‡~i}‡v‚ƒbts€……zƒƒˆkt‡‚ŒƒŽ‰€™~u…{|–{x|h‹…†‡vv{xƒj‚‚|wt€{i†}|wzuv‚„ƒ~€z€‚†}v‹xxv}Šz‡‰u{s†„xyˆw„t„~Š~ˆ~……r|„|‚}s~wl†z„ƒy{~m‚Œ~ŽŽ}}Žro~r€t{qt~v—wƒ}{„vs…|~‡z…†kwŠw„„„‚tyu‰…ƒ€ƒ„†‰‰€v|„…„vru}~‚}vŒ€ƒ…w}Œq†zŠp~ytw}‘w‚‡~~|x…w€r‡ƒz‚tw…‰†•z‰z|uƒ…ˆju{„ˆx’x€‰{Œtz„}zi‚Œ‹†‚‚v‰y…‡Ž}|€w…y}o†xs|{ƒu~z††‡„}…uƒ†‡€{€{|„‡ˆt}vƒ‚€‚†‡|ƒ„|‚ƒ‚ƒ‹q‰up€wv†sŽgz‚s~†ƒ‡„fy‡v€‰„‡‚~}ƒ†}o}r€oz‚ƒt}€‚k…‚y‰}z’xq‹~„{vƒuqqrqvƒ|„{u†rxƒ|ˆr‚s’ƒ|‚vz€w…r†v~‡{„rum~yŠ‹‰~€~~uvƒ†…‰‚‰‰}‚y€y‡‡{|†…zqx}~…}‰s‰˜†x€Šx€q‘w…‹q…y‚†lœk…‹ƒx…cw‡~€m}}…s…„~|€p{o{p}|Š—‚wz„ƒ‡ˆv}‚{z~w„vrxx‘x‚|zƒw€z…zym‚ƒz~mz†|ˆ|…€†ƒ†w~‚€qˆƒƒ„|~}ƒ|q€o‚†ˆƒƒ‰v”u{€z“u|p…‡sˆ}|w€†ˆ€z€t€Š‘…yu„‡vˆ~Šu„}€ywzl‚{~{ˆ‘„‡Šs†…}}~‰…Š{~‹‹…‚y‚ˆ~‡~xƒ{}~y}~~†‡s|‹‰ƒ–|}†€vt{nxz‚‰n‡r“|~ƒ‡~z„xƒo…„}~yy‹ˆ‡†‡‰Œ‡xyˆŠf~v”w‚~†r|z—zŠwƒ†€Œvr{xx†…ˆm‚~†}|{{yxz€|Ž‚„zƒw|Œƒ‚‚z…“z–}vŠ…ˆ~x¡‚ƒ€u{n‚‡uqxz‹xpvsvot…ƒ†xˆ˜q~uy|…vl……zƒ|z…yŒwq‚qzy{~qy„ƒwrŠ|„x~ysxx…‡lzy…zt‚„c€‡s„zn†Š„Œy€o“{}x{q‚ˆq|~x‰„o“tw’s‡|‰‹x{„{‚€~€ugˆ€x„}ˆ‰”|k~x‡ƒzuzmŒ…„”~}…g†r|j€{…ˆ{{z†ux}}~u|yˆ|}{{„‚s‚yy~‡|€„z‘…|„€“‡m~‹†„ˆ‡„ˆ}‹x{}‹}{{yzƒnz†uv„z~ƒy}~‘}…|z{€{€~v{n‡y‚Ž|•ŠƒŠ„€{‰w‰~{‚ŒŠws~„v†txw}{‚{~|ƒy‡y€‡yxƒ~Ž…|€…ƒŽ}„€‡~†Œ‡zrw”xwzzs“}„}‘~ƒ~sŒƒ…‹}p‚vyvw‹|zrmg{|…}w…{|ƒ‚y{|xw„†‚wu‚ŠŒ„~‡}zŽŠ…ƒy‰x…~™}zƒ…ƒ‰‰rzˆ‰ƒwqv‚|€u‰††…tƒ€‘{|vw‰w‰†}…y|z{‰‹|~‚|‹‰~x|Š‚}~ˆ|…‡~„wzw{’~‘ƒŠ€}‰{ƒy~hz…t€‡|y||q“ƒŽ|‚xt|qw€{‡~€{…k‹|x„‹g|}q‘{ƒ†|ˆ‚‰€v†…ƒww‘ˆz~}}‚k|ƒw~x…}‹w|…zˆnŠu~}~…†tˆ†ƒ‡‚{ƒƒ‚‹€xstw‹ƒ†ˆo|‚v›z€~p|„u}t}€€sy€d„€ˆtw~€„yzut}…‚Šp{y‚xs†„‹xq’€~…v„„u…z}z„}„ƒ}vƒy†~v}ƒ‹u}~~yˆ‰}ˆrs…wƒ{|{‹€…vˆ‡€ˆ†u†y‹ty~ƒ‚“‚p}v…~€~‰‡{w}xp…ˆs‚t‚…‚€‘}y‹€w}|y€‚~„|v~y†}€€}€š„~‚i‰Œˆ‹‚y‚~†…z‰o}‚y…h‰|‹šm…~s}{šl‚|u†g{€{z}sŠ‰wxueˆŽzŒz€ƒ‚„‡x“xu‹pzŠƒ†ˆvv„ƒ„‡zw~ƒ‚€{xyt{{ˆ‹z}…vƒ„x‰y}Œp‚xt…}ƒƒ…{~t‡ˆtwwtˆsllwwz‚v|ƒl‚y‡xzn‡rr€†{‚‡q‘q}{q|~v|~yq„‰|~†|w‚r…ƒx‚„tŠt}w}†‡z~xnz}…†v}ƒ|†Œx|†ƒty‹†~|ƒ|‡uszƒ{{giy}xxoŒjq€t|nuvyŽ‚Š‚u…pzyyw‡„}|•yƒuv|€‚x}{Œ‡ƒƒx„yn€s…†…z„n‡r……s‚‹Š‚’r†r€€t€{ƒ†}ƒqŠs„Œyz€|ƒ…„n}~y„ƒŽƒ}‰}‚s“’z€{{|r†‡‹|~wo‰tks…†sƒ‡y‚„ˆŽ~yvˆ†‡Š‡mŠ~x‰{‚Šuwyt‰„|vm~}qv…‚}ˆy…z‚t…r†z†„Š„u‡{‡ƒ|x{„ypqzt~‚ƒ‚z€~uuu}zz{‘”y™uw{ƒt‡{“‚q…|swxu~Šk†‡ˆvš}‰„ztƒwŽ|}ny€‚t‘|}pzƒ~€|‚uwˆvvƒ‚„y‡…‚}zy~}z…’{{’x€wvƒwy€ˆŒu„x€‚uut{{v{w€ˆyŽr†Š„Œ‰uƒˆr~„„y|zutt|€|†€}Ž’†~wt||wkn„q…rw}ynzƒ€yŽ|‹wqxˆ}…‚{‘{ŒwŠ‡z|s–ƒ~ƒ{ƒŒ…€Ž…o…y‹zx„tx|‚{{|v‘‰}zˆ|…u|‰“xt†s…wˆ€…v{ˆ‡uŠ|y{‡qŽzs|v~y{zƒtx|rq{v{}q|q~{{ƒ|ˆƒ„z…‚}y€y~wrˆr€‰‡zˆ€–…‚}y€ƒƒ‡ˆ…y~|‚€xƒ|€u€…‰~Š‹|~„tŒ~v‚{Œƒ†p…ƒ|‡z|„~rˆw~„~…|„}u‚tŠŠzqz{|…}‘y„„{…ƒx†‚ƒ…ƒzƒp‚…‚‹‡€|‚…‡…ŒŽzw…q‘€yvw†{ˆ€†ƒŠxuˆ‹tz…i…~†}‹‚x•rx„~~|Žx|…•{‚z‘{‘iŠŽ‰Š|‡x}s€}{z|}tvxw{u‡…„‚s~x‡‚Šv}tt‚}‚y}}€€y{}}ˆzˆ|‰„ˆy†}~{~zy‹}ƒxuˆk„€„w|†~zˆ}|„†xzmw‡|t‘{„€|||}†Ž‘q}…€‚s‚~”‚z}‹‡l†~Žu†oƒ‰ur‚uvxy~ƒƒ€’|}‰‡rˆ„€‘…}Œ|€t†Œˆ‚ƒ~‰wˆƒ€‹‰ƒ}†Š‰ƒ‚rzow~s†{u‘~€|s{†{ƒvŽ“z„‚–~t…tv„y†t|Ž‚Œx€„…|‚v„yty…}„}m…‚Œyst“|swq‰†~|Ž||vu{†‚uru{z††Šv||…ƒŠxˆˆ‰„†„†ˆ‚†ˆ}Ž‚rŒ~{†y|„~ƒ‘ƒ„Šv~~}|{vuz‚‚x„|{v‚~Š‚}‰yƒz…r}Š‘€‚z{Œ…h~€|…v‚}|„y…Œˆ~{ƒ‹yƒ€`‡y{~~ƒw}hƒ†€€|Œnxvxƒˆtƒˆ„x{m{Š{„€ˆ…ƒx†q‚zˆ~ˆwq{n…{„Š|†w{}“||„ƒ„ˆv††‚„†ˆ‚{†”€…€}w†‚t}‚u}…t||v††|k„{‡†Šƒw€}€‡|r‡ƒyv††‚„}„„Š††u…z™‚vz}u…‰‚Œˆg†‚€uvy|{‘{ˆq†€t}}}†|n‡…ur‰zŒoyŠŒxzxƒ~s|u€……|‡‚‡…v}Œ€†}|‡w‡z|z‰~Š„yx|€…r~x|ƒ€|x…ƒƒ‡p’…|ƒ{p{}x…‚’„{€wˆwyˆp€yts†|x—|€u~…{‡e‡v„ƒ…iƒ{†~…ˆ{’‘t’†ˆv~v‡tŒp„v€Ž€€ƒ…s€‚‘x~xss}z‡Št~w€~v„ˆ…s}xŽyzƒy€ƒ€{{„}‚oƒ†Œ‚{ƒ„v‡}Š‚}‹€~|}z~}…~w‚u†˜{w|‚|€•~svzz~{‰‡‚npo|‚€{qs‡~ o~t‚‚‚o‰‰o”yvu†~ˆw„†‹†ƒ}‚lvz{r‡€ˆƒ{…s†|~ƒ}|srv~x}Šw†ƒŠˆy|€}Œ’x‡~px{{ˆ€„|€™„„ƒ||ŒzŒ{ˆ|€u„}‚y{wlvˆ‹~vx€{ooy€~€uŠslv‹„ƒ†‡…‰yz{jŠ‰ˆ€o{v}w…y|†|~~tsq‚€|…~r~rhƒy„xy‚p‚x…|{zˆyr“|”€|~…ˆn‡‡rx{‹Š{„w‹‰}€}zŒ|g{€z†y|‚…‹€€}y|…}{x{Š‰Œƒx‚€ˆ‰ˆ‚g†|‰…z}}†„qˆjx‚yˆ†zŠ|xq}†‹zˆŠzˆˆ‚Œ…}~‡yyn~‘‡~zŠiz„uw|z†‡~vl}fz~ƒ€‚}‹ƒ‚‚~‰„…‚…Œwyˆƒˆxzƒ‘Št|ˆ~‚‹v{‰o~~‡€x|}„~~~‹„~}zyƒ}uv{z{„‰{sw|sxq€‹…ƒƒ{x‡w{ƒ„‰v€v{œˆ}‰€~r„‚ˆw€wƒƒ~|l‚ƒg~p‰…†rwzs‹†‡€„wz‚{‰‰~}……pyx|y~xƒ}{Œq……xw†ku‡y‰}{z{‹}z}„v†|…„{‡s‚xw€||Žt‚ou~€‚p‚y|“q‰‚{Šz™€„ƒ|w„‰vŠ‹}~{}€}w{uzy…„€‚y…‚uyˆ{|p„w|qˆ†}~‚zŽ|€‘ƒt‡zuˆu|xy€„{r†yuw{ƒƒw„~†Š€™„†u|wz{€‰{}y~{‚wz~}|„€…†}v‡‚q…w‡z~xƒƒ}||‰v„vˆw}v‡’ƒtzy†‚tzvƒ{}~w}‚|€~}…„…‰t„ƒ„u†Šu‰‚p‰€‡q}s}r~‚‡~€w…}}‹ƒ‡ˆo|wtŽz„us‡zˆsv‚v‡ƒ|~~z†‹|x‡i~‚{||t‚•‡ƒ~‡„z€ƒqwyƒƒ†}y††hŠx{‹z}xz~Šy}v…‡zv‰€€†{{tx†mŽ‚z‚}‰|~€€€„†zƒyˆ€|~|}‡y‚zw‚|…~{{{…z~myƒ‚~…|~„„wxŠ€‰…w“€„‚z}t{ŒŠ{|}ƒt|ƒ‰y€˜v‚yyx‰y„om„{‚‚s}zŒ€ˆz„†xvt…y€€‡v…‡…}‚}wˆ|ƒu~‚€‚†{~‚|x}y~{z}x†‹v~‚ƒ…ˆ‚ƒ˜{‚wwypt}q‚ƒ‚y}ƒ}…„‚~r„t~„ˆy…x}†zrz’‚w‰~}wzw€s…w‡{w€~zŒyzƒ}†~w€‚w†utxˆŽv„o{}‡€‚|}{ƒ~z€‡|t{…{~…Œ…‹Ž~z†ƒ‡kw|–w€zu‹‹€†}’{…„qpmu€‹v€…zs‘‡zy‚†…~{ˆ„ˆ‰ƒ…vr„‚‡uz|…utƒv|~~xtˆ†}x„„ssww€}{~€…ƒ€{z…}ƒ{€‚ˆ”€†ƒw‡|“l…~Œv}vzt„s……}zk~€ˆ}t€~pu}tvƒ|ƒ}y˜yt€~Šs†…ƒ“Š~ƒ‰„ˆ{‘uŽ€…ƒ}~‚|Œ}Š{~ƒ€‹r€xrs|u‚€}vsƒ…€†yxˆ{‚“ˆŠƒ„|zqu|zz„„Š€‰‚{xˆƒu{†ƒ†wv‰{‡pjytqŠ‚~†€yo’…yyƒ{‡c|…xƒ}ƒ“}€t€z‡|~€†ƒ~€††ƒ…ty~v…„|ƒn{„s~€ƒ‰wz{rv}o…|…z}sƒ„€zu‰ssŠ„‰~y„z–Š€y€k…„ƒx~x‰‰r}}ƒq‚p}{ƒˆ~}uwrq…ƒ|†‹q‚†yŠ~€z†•z‰yrv}‹ŒˆŠ‰s€{†z‡jiŒˆ€‚ˆq‚˜•“tr…‹x|mlt‡€}}|‹„Š~„‚u‡ƒhqkˆ†z}ytj›‹pwzzˆ{‰ˆv”€–pv‹x{v‡šˆqr~‡{t}Ÿ}‰€||ƒ€{—y|€u|twŒzŽ{u}x€oq¡}€……Š“y„p–{|‡v|š‰€ƒ‚†z‚oz™s•{hxs~q†ƒ}‡‘~„t—yˆ™zV‰~…~•‡…–lŠ…lƒz†rwqŽx’…|s‰s|y…l‰€€…‡…„yz“~zv‚yu€dtƒ}s‰ƒƒƒ}…yŒoŠx‚ƒrzvw†‚|~ˆ‡„€z}y€{ƒr€†u„‚ŒxvrŠ†…Špª}‚v„€‡€v‡˜w†tm}~‚n„}‘v‹€c‰}„w‚sœŽ•y˜†‹‹X‚z‚„ss™u†t…“w€Žq’vovvp‰ƒy”yq€x‚‰ˆ“”v€ƒ‚€u}‰k€{yƒ€zt“u•‡†{|Œ||„rr”~~z}y|‚zƒt‚„Œ{Šzt~‡ŠkŽ|€vk‡ƒx•}t„yŽv}{t‹x‡ˆpixtxtsu‡w{}tx‚xjt‹‰|“}Œ †t†yop{‚~f…t…Š{}”zjwŒƒwvƒW‹ƒ‚‚|†ˆt˜w‚†€ƒzgxz}}|x}’|Œt|}…‚wƒ|{^‡}€…~†‹“kt€†s…zuwu‡„tƒuv„hz‚|—xŠ…l‰{ƒŠ…k‚pž€~—†‚…šx~xy}v€btzx†o…Žƒe‚ƒƒ‚‡~Žxe}}€yw|…††|‚€ƒ††}rv|ƒ€}y~„Šr~”}z€~ss‰†y{…‹nŠ‚x~~{†„€l†‰ƒwsŒ‹›tr‘xŠ†Š‡z…}€Žƒp}up{ƒ…‹…wv}—“‹€‰€tf~oƒuo{~ˆuŠi„‰}€~uŠ–‡uŒ~…ƒz€Œ˜…†„‚‰o}ˆ“r~~|v~ˆ‡tƒ[u}yyyŠ¡žˆ‚u‰€}Š}†so{ˆŽ‰ƒv„|ƒ‰€{ˆvz…ymwx†~„~v{~v“}…€˜€†Žqvzxz†o€yˆp‚ƒx„ˆ€•ŽŽz‰}ŽŽf…~Žz†x‚ƒhƒ€ŒˆˆƒyszŽ{}~ƒŽ}{‰m‡Šs{†q†mƒc~{Ž}Šq•ƒz~ƒ‹}~u‹vy„…†~ƒ€‚…‡ƒ„€{}{ƒ„‘‹~ˆz‹’rn|‹ƒ‰‡zv‚{•‚~”v|Š{trw€d‹x‡ƒˆ„“~h„r‹v~uŽ€t„iv‹€‚ŽŽˆ‚Ÿ…‚{€„…€Œ¨{Žww‰ulrˆ}†~€…~|‚ƒ•ƒ…~~ƒƒipwx‚~{„‰‹‹‚k{{h…†f|…‚u|rvzsv}}z†myvƒx‹wysz|‚€€ˆ{‹~ƒf‚{Šz‹…€‡l„}}y“{…jns}|r~ƒeyryˆ‰€|xy†‹|q||{ytžjŠ…|‡ƒ~ƒˆ€|y~}‡„x‚Št„…xŠ{|x€w†{tlƒ‡…Ž‚pˆrƒ…‚ƒ’{ƒ’Žss†‚q†„t¨ˆ|„~|‚~zzz›„ƒ„„}€ou|z„ƒ|€vt}|”py‚‚’z€ƒ…‡Š~}{‚‡wˆzƒƒs„r‚{‡|Š|‡€w‹{†}wŠ{r|†u}rt~~z|‡‡{y‚~x†{~Š‚€‚u{€wŒƒƒz|€|x}vŽŠ„Žvuox‡t’„t…~tˆ„ˆuŽ€s‰{€x‚€~‰zz{€‚‰~}}‚~…~‚rŠ†|ƒ‚w|„s~yt€‹w‡ˆ~ƒz~zŠw„€yƒ€ƒƒƒ€‰‚€†ywŠ‚…}…{{~‚{x€y}‡€xu„Œ~‡}{‡~u€‚‡{†r†u~‚}ˆ}tm„}wqqŒ„‚~rxs{|ƒzƒ~xz~vt€v{„‚oŒ~uŒzz‚r„Œ€…|}„s…‚}yvy~„w~~ƒƒ}~‡„„{†{ƒˆ€}ytt„{‡‹ˆ~ˆ~|x…{wŠ}‚„}r…u~‹~vzv|„z~rv{~x‘y…€€†‚‡y‡}‚€~„w‚š‡ƒ‡|w€‚~„‡pˆ€ƒx€Žƒ‰†}p€r„€|wŽ|ztn~‡…‡€†|„u†€y…x€‰~ƒ{{ƒˆ‚ˆ„y…†t€x|~{{€~uŽ‚{{}{Šƒƒv…„€…|…z†‡y‚{~†yŽ|ƒ€ƒƒ~†}pŠxyŠ„y†|}xsxxy‚z‡}|›xx†ut†sz‡†ƒ„z…†{y~tzqrwƒ……y‡~t˜~v‹|‡‚‚€}rˆ{„|~vŠtˆˆw|}wsy}‰‚Žy„z€x{€v|…Š{’‚‚|ƒ‡y|‡ƒzŠ}w‡|s†z‰u‹ƒ}wx…}w“‰€y„x€˜y†…}„r~–~Œw~€†‡~wŽx˜ƒw~vz‰~jŠzŒƒ€{w}Šq†{|€}†…Ž„ƒ|~~„„ŠxŠ~tq…€{y‹„~‚y…yzw~‰‚~xz†|…†t{|‡w‚ƒ€„|grn{‚ˆ|}Žz‹„ˆƒ{~‡qŽ‡‰‚˜u{ˆ{y…|yŽ¢|…os{rƒ†g|w…‚|r…t|hƒ|†ˆpwƒ‰‘w€€x‡‚†gz€…|†ux‚w}w…‚ƒƒ„yq‚ƒ„ˆ|„‹€w€v}y}|yƒ|‚€…vƒ}z€rz…n„}€yŒ‹ˆ…f{|s‡„zrz|~|yv~q}quz‹sy’„{{jˆ‚{{ˆp‚~w”‡€{~s˜€„ƒu}|x…’x…v‹€ˆŒ{ˆ…†ww†z’ƒˆ~ˆ|‹‚|q~†{†z~…tny‰~„w{Žz~|ˆ„z„„€€~‡zƒ}Š„‰x†~z‚ms†x{‚{{‹ƒ‚˜Š‚…|€z~ƒ…kux‚„v‚|Œ„nuv}€zŠix{k‡‹‹y€jwƒ€~}{€ƒ~{€}‡ƒ‡‹vxƒ}wƒzz~„i‚‰p~{ŠŒ€w…€ˆw|Š~|†{~‰ƒ|{|†~‚sy~„u…w{y{…„|w„z‰€„v|†z’u~ƒz„†…„Œƒzzq‡f†{u||~Œ}€‡j†xƒzr‡Œ‹’ƒzz‚„Š†Œm}ˆ‚ˆ~‰Š‡‡wƒ†…x„‚o‚{~yz|{“…{x‰ƒ‰v•‘y~~…€‡…w{}x‰w‡z|uw{{‡ƒ|y|ƒ~{€€xƒ„{|zx…ŠŠƒ~}ƒƒ~Œ~‹{|‹|‹ƒx€hy‚tz}vƒz’…}‹ƒyzz€€fŠ}…{ˆ‹y|x}~zˆx†ƒŒŠ~pˆ‚„…€tmzr€~‚ˆk‰|‚Ž{{sˆ€……|‡€~{„ƒtˆ€|ƒww†{ƒ{x}€}z‡ƒz‡|s…z…ˆ}…ty€†~{…€‰|€~~Š~‡‘‚†}q‚‚Šw}‚~„w{…ƒ~†Œt˜xv{…ƒƒ|`€„{zˆ…€Žr‰}‰|‚w€Œ„‹|wŠ}|}‚vnxƒƒ{…|€„k~ƒ}‚{~ƒ“z~‰w‰†{~†px{}€u~rŽ||}ŒƒŒŠx‡|Š…†~x|ˆƒv…€€ˆs|~w}~ƒ{‰oƒ‚yŒˆz{€}ŽˆŠ™‹}ƒ|~„}psywˆx~‹…{“l‡“yzwŠkt„r‰„{|zst€‹}x}Œr‹vx„}{|…y{pz‰†ƒ‹t}|‚yy{„x‡ƒs‡x}ƒ‚t†y}‡€Š‡x~‚‚z“‚ƒ{ˆx}€z€€’€ˆyt€}‡}t}r€‘wyu}f|‚}p|v}w•z…w‡‚Š{‡š†v~{‰‹€€uŠ€u}{ou††~“~†…„t~~‚€…„„z{‡„‡~†xƒyŠ|‰|Š{€{‚xƒƒ„‚~ƒ…}‚l‹ˆz~„€t|~sƒ}x}€zo‰†‡z}…{~iy„„z€zy†vu‹x†z€~zn…{Œy{ƒ‡q‡Šy{y‡Š}|u|…~‚„~‹z€€‚~…w{……‰~†~x€y”{…„„€}v•w‹xyyŠ}~‹}”~‚‚}Œ’vqy‡{‚‡…‰|”}€€ƒv|…xg€…ƒ„y„‡|w|v~…ƒ{~}uy}‹|„ƒv‚Œ‚~‹}zmz~~ƒ||y|ot‚ƒ{y“€zymƒ‰r€}|‹z€v„q‡„}s|k‹ƒu|y‡xŽƒ~‚~Žw†—‚ƒƒ„†{ˆƒh~ot}‚Šz††Šƒ—{}Œ‚ˆ‡†Šƒ…yŒu~~ƒ‰‡y{†t|~ux{~Œ€x‰u~„‚€}u†qŒy†lz{‚“vw|}‰j€m†}‚€yœ‰“y}ƒ|„ƒ„†‡Žm~x|~‰€‰|„Š‚ƒ€z‚~|‚‰‰Œ‚|‡{yƒ|€s…ƒ{sy|…€€‡…†z‚u‰„‚„}‹~wzs‰zy}ƒ†€„“…€‚|q‰t‚’}‹†{z}Š›Žw”xx}w~{‹}‡g‘ƒv‚‚ƒ~“€x„‚€|{}†w~yƒ||s}~††z|Žˆwy††|}{uqŒ‚†„€„„’xqzdƒ€y‹‚†j‚€|tsŠ{…u‰wˆ…w†‚~„t‚„oŒ‰ƒ|‡y€‚y~ƒ‰z~’wˆ}rz‡s{‡}€|‚xk{gƒ€v‹sxwo||‚{}€xŽm}€}wyt‡~…u……xw~|‚y—x‚}~‡wƒ„“‡„€ƒ€„~r|n‚‚{wq|~…–wx€ƒ‚x}x…r„„zz}…{z‡|€u‹|zx|‚y|‚tz…{ƒ‚~|‡–‚ƒƒ†o‚“€’ƒ{€ˆƒu„{‰†x‚}|…{ygƒ€‚Š……‚w~‘~}p~‚‚ˆ…‚Š‡s‚|{†wŠ‡…Št‚tz‰Š|‰|„†€‰yƒ‰‚r†}‚‚}‡tr}ƒl„|‹xyxz|s~~y‹o„‚l„u‚ƒƒp–z†kŠy€ƒ‚tŠs‹Œƒ{Š……~^z‚ƒƒ{”}ƒ‡}|~xs~y€‡r†y…ˆ„€v{„{‡ˆ{u|ˆ}~…v‚vx~ƒuvwyz‚p’m‡~ˆvx‚}…Š“rzks†~€|€’z†t|…yx€q~q€€‹|‚w{Ž|lzt„ˆ†~ƒ„„{~q…‚‰s‰ƒu{}‡z‰}ƒzƒ…v€~‚sxs…|†ƒtqz|~ƒ|v€‰‰v‡u†|‚s‚|‡‚‚Ž}{Œ†{†~…‡‚„‡‰‡‚x‚}}}•d|‹€„†~t€uqˆ~€~x‚†o{w~…Œ}xdƒ‚|~€r„€fŽu{zt„vŒ‡}|vx‚~‚y†„„lxˆ‡„Œ}y†~€z~p†v|‚{tyu}yƒ€|xx†‚‚€ƒ…~‡z‚‡†}…{uˆƒ…y{}†Ž„‰€}ƒ€}ƒˆ‚{Œ‚py€{š}‘}}x~†’}€ry…‚|rp…‹Š~{g€s‡kƒ“x€z~‰Žx{zy‡{ˆ†‚nt|v~z~ˆ}wr„zwo…‡‚‡’„ˆt‘†„qs{…€‹–z‘{†~~|„{zƒ…‡~|yu€{€Š‡||ƒro‰{†€tyw‡~†}z„€{‰†w…‰„‚|Žvx‚}‰qv{…xŽ‘w„šŽŒz‚…„€v}~j†€‚„‚o„ˆq‰‚t}wŽr€~š„…{ƒ|•‚‰jt~z„‚{‚ƒ€‚~zŠ‚t~y}„ˆ”ˆ~€}tu{ƒ…v„w‡x‹xyƒt€}€}|€„|~v˜€‚|o|{‚‡v…~ƒxŠ|u‚q{€z|t}}ˆ€‰zx|~‚~z‚swˆkƒ€oy‚{|€ƒzˆˆ{vrŒ€‹€~ƒˆz|Ž||z‰‰{‚†Œ—ƒ…€€€‰zŠˆaƒ}…w€y€„q„qy†}~†ˆ†€zv}€‚~v‚‚s‚ˆ|}†|‚Š€ƒ€ƒyz„„~€sƒ|„yzzy…€‰x}w‡v†€wv|‰zv„€€vuƒƒ|ˆ}ƒe~~„€…~ˆ{ks…|…‰}ˆ‡ƒ‘n{|||Ž‰zŠxs„y‹t–}ƒ}{{~y…{†€sƒwy…qxs‚‚tƒz…‰}‰j€vu†s}†u›tw|ƒ|‡‚{‘€ƒz~{Œ~‚€€|v€y‚{{}‚†x{}€ƒ’Š}‡uƒˆ}‰‚{~x~|{‚…†€{„}}}o€}u‚ƒƒ‰‚{€‡…€uu„x†‰„}ˆp„ƒ‰…~‡Œ„xx†u~~zz‡„|v}…t€Š’|‡z{€~…‡ƒ|o‰ƒs€~y~‚‹”w‚€…ˆˆˆ—…‡€†‚ŒˆŠ†„‚{y€†~‡{”{Š‚†ƒ~†wˆyv‚‰ˆ‚{‚uxxtƒˆˆ“†}†x€„|y‚Škx~€€‚z}„}ŽŒ‚Š}€w‹wxŠ…s‰}‚“w‰v‚†‰|”„ƒ{‰}‘{qqwŠ{„|Šƒ”tuu€}y“~ˆ‡s}w”€†{…{|‡wƒ{~s|{t|ƒŒˆs€y|t†yu…}ˆwy}v~}‡…q‘}~~€zƒƒ{„nƒ‚„x†ŒŒ“’€„{~t~Šˆ{…ƒt„s„†yts€z{‚‰xwtqu}„~~„e|f~€…ˆ„ƒŒw†€z|Œ…zŽ‰w|‡o€‚{‚r|‚†uŠxƒ~‰x‚…††€„‡{vx…ˆ‚t…„‚…y€…oƒ{x„|zr|~†~yˆ’ƒŒ~}stqnk}‰|„†~‡z zyƒz}€x•}Šx|yryx{“‡‡‡xƒ‹Šwƒ{€yw‡Š”ˆ†{|‘‚xzl|yŒ…~s‚…‘x€€yƒ}x…tw‚~Š„€ˆz†{|‡{€}z{ˆwŠ‚zy‚vt‹~y‚}x|ƒsŽ…zƒ‹‚”wyytwŠ{{|{oŽ|p~oƒxv“‚†ƒf‡}„}~Œ‹‹{x†€x„Š‚q€}„xw‡ƒ{‚ƒvzyŠ‚rqy|‡ˆ}||€r€v‚€Œ~p€w}~pƒŠwz~}Œ’||‚€†|{z}o~q†w~…Š‚‰{ƒ}|€vzxsƒ{}€}}€€€wx„„qz~‹…tq}i…v€m‡„Œšz}x†|ƒ‡‰}ˆ{†s‹€ˆ{z†z€}ƒ‡…x†{Š‰x~pu}y{s|ˆ…t{ry…‰ˆ€t}pƒxj„„‹qwxy‚kƒ}„‚ˆsƒwq|z€‰ryz„‚„„~‚s€xŽ|u‡Š…r{yzŒzs†˜{†ng„‹t}……‰qpy†x|p}uwsx}y‹u}x€„‚†z†{ˆ~{‡ˆ…~‚}pŠtŒ}…‚~†zqn€|…ƒ{yˆƒ‚d~x‚€v‹}›z~€z‰s}y‹}„|~„x„}zyvyƒƒ„v†w„ƒ~x€yn|yƒˆ|z}zƒ‹~‡‚ƒŒ€~‚{osvy{u~w{~|~wyy„~m†f}~‹|ˆry|Šz…„‚‚z‰ƒ‡zwt†Šwx†~xwvs‡ƒ…€t~}y‹t|„{r}}uvvp{„{zs|x’}Š{|~€ztv~u|l}|†€‰}zwpw‹~{™‹s†„ˆ…x„ƒ‚Š|uy†‚„Šwu{xy…‚{‰‚‚ƒ{‡~~y{‰}„|||sˆ‚ˆ}„ƒ…v{{{œ‰{€‡y…‡Ž”{€€‚mzzl‚q{‡…v‚|}ˆwˆ†ˆyƒ€‰‚~„wŒ„}„x|“z€~Š†~€~Œ…s„xtŒ…zƒy{…v„‡syŒ{uŠ„‚Œxu€‚‹Œv„}~€‚x†}‚x…j€€z~†o†s{q~€~€~~‚tŽ}}|Œ}Ÿ}p„p…†‰v…vz†ssz€€z†Š‡‚zvo~‹}|~Ž‡t‰„~‰~„€„…Š|u~~z‚{€ˆ‚Šƒ~‚q€v~…€zƒ†~‚‰…zvŒy|p|ƒ~„t„g†‰~z}zy‡xlswxy‡ƒŒ„zŠ€€}‚}Š…~‹nƒ€|x~€„Žk…|„pŒx†‰„{‚vt|t„x…†y}†z|…~„ƒ~vp‰t„tŠ}z†yz…}~}r{ƒ{nz‡„x†x‡~u€}ƒ{ˆz{Œ{‚or‡wŒ’vx~„{€uˆ~|zˆŠqu|‚~‚xv‡u‚uƒu€†{x‚Š€}‡{Š…‘y„~~„vƒ‹sz}u~xw~x‘z€†€„†tfˆ…’mu‚‚t€zŽ“w€ƒ„|„tt–Š~ƒ|€Œˆyˆv‚|€ŠŽxˆ‚‡’}‚ˆ}~}u‹}}}‚w–}‡s|~†Ši{|……|‚p…ƒw†}‡{‡lj†o‹‚~…unyyu…z„x„}”‹|‡ˆy’|‰}o…z}s†€€{}vƒˆ}Œ‡‡‡‚Š€•x~‡wz€„„™‚…nvƒ…ˆŠh†{„thu—z”††}€„ŒƒŠ€‚}‚~‚|„~‚{‡}u€Žwzzuˆ~|y{†‚†…{|}„€‹„€€€tzd~v€yŒ}s€†Œrx‰ƒ‰ˆxz‡jxƒq|q~ym|‰ˆ}yƒ‚|•vx}}‹xqo{Šqwƒ‰Ž†…†‰x‚~|ˆ†€x{†vj~z‹v…€~‡cuu|…u~z†‚zyuw‚ˆ‡~ƒ}ƒ|„y‚}Ž}ƒ€}sˆq„ƒƒˆ€s{{x€y€‚u~ŒŠ~q„z†|…‹‡’{~v‚y|‰xr}}y}}|{{mw}…ˆ„w}qyyk€ˆ‚|vu€{‘ˆ~ƒ|ƒŠ~…sˆr‹vwƒ‰ƒ‹„†…‚w{w}‚}r‚…zxr‰ƒ†ww€|}w}z‚w~wktƒ„„}€s‡€€€†t}{ˆ~„ƒv†„rkŽƒˆ~‡Šzt‡uŒt‚}Œƒwwy“s…‡rƒ„€Žv†{†€}’€v{i†~~‡{g}r~€€†~~nu‰x†z‰~Žƒ‰ˆ€w{}†u‡‹Œ‚…u†€|su‡|„~|‚y€|z†„|ˆ|{†‚zyu}‡ˆz‡Š€|†…y†z‡Š„˜~xˆ|y„xh{‰…šzˆŽy„zz‡^†~|uzx‚}eƒz„‚~{„h…~€€|xƒxquoŠ‚v‚xylŠ†‚„y~wi|‡{{x{yŽz‚wtƒƒˆs||‚€„‰zxy†~z}}~„z}|††{}x€…‡n†~~vzry…{zzyu…„{|‚~‚€‹z€€u„ux“„‡z|ŠŠˆ}}ˆ›€y~‡u‚†y„xz‚~‰‰ˆp}‚ƒƒ†{‰||„~}‘nr‹uˆ}|‚€ˆƒ‡„„~ˆwƒ‰~€†‚v~}vrƒx~}}{ƒ~‰p|‹€‡‰€ˆ~yŒ~…y‡‚‰€Ž~x€„~y‰z†€€Œ„„ˆ’~wzy„‹‹t‚„|Š{s„pƒ„x~‰s{‚k†ƒƒ}†~†{Šh„„†r}{†rz~}†}ysyƒŒ‰ƒƒ~ƒo”€wl|~†‚tq|‚†ƒ~y|†ƒs€v|x||}y|†Š‰vŒ~x…z~†~v‹‰{Œˆ‚zx€…{€‘v‰|w‚„v˜‚‚”†v„‡y‰‚|~|‚t{{Št}v}…ƒ†z‚‹ˆv…tz‡|‹{Ž‚y€…€{‡rˆup‰y€y‹o€‡sˆ{t}j€Œ…ƒs‡†}x†ˆŽ{…u}{k~t‘w…ƒ‚†‚}|ovˆŠ‚t†y†vw|s‡‹py}{t€{Š||Œ}™ƒ~w~…s‚ƒ…zŒ{|y|Ž}‰v}}rˆz„n|Š|‚‚w}††…~|~||…yƒ‚v€~{„}u~tŠŠtt€zƒl{‘|‡‰|u‹}Š|{‡…~‚†‚„q~ƒx“}vˆs†ˆtƒ|ez{wyz{…{—…Œ‡qzƒ{Ž{{‡{}Žƒz„yq{p~Š|‰}o~zwˆyƒm‹‹}……s|€v„yŠm~Œ„x{}xnƒ{„Œ„}…w{~‡‚€„ˆ~r‚Ž{~z~‡~‰{„€w„ƒz‚Œ~|m{‚„‡†y…~”}†|}€yw‡…ƒzy€‚Ž}ƒ{}v}€€‡ƒ{‰{}uŠƒ‹|y{ƒv„ƒ{Œt‚v†yp|ˆ„„}‡|„mŒu„}‚pwytpˆƒz{w„~x|ow€…€€‰z„a‚ƒ‚pi‚wv„{y…{€~usˆ€ˆxyƒyx€yx‚{}{€r‚ƒŽ…{zzxnx’†|ˆ{‚}|„j||~‚‰†‚‚ƒ‚vv‚vu‚v‰y}‰’ƒ}|}‰}~‚tx……€‚z}{{ƒi{€~xƒzz—„|u€z’ˆnvuu~‚~r†tˆ•‡w|€t‰€t—|„ƒw…Ž€Ž~|p„y„‡…}Œww‰ww„}ˆ€€}~ƒzr|ƒ|u‡„s„s„‚€{€€oŠ‚…xx”}€Šxx‰|ˆ†l•|‡„v„w|ˆjŽ~w†„e„y„‹•€rt€y}wƒ€q‡ƒy„q‰yƒ€||{yuw{z…|™xut†x†‚ˆŒŠ}}{Š„†ˆ}zt…|}|~|qŠ†‚…u‰l…|zx†uƒx~‡†u‡Š†|r†~€~€zˆ{‡zwnz}€ƒzy€‚}s~‚€€Š„}„vˆwu‡‚†‡~suz€w…w~zxr{ƒzz‚‰|‘{z…z|xvo…‰ˆ‚”€†‡r†ƒŠˆƒ€€Š|ox„zŽƒ|s~z~ut‹†ˆ‰|‚‡pv{}‡‚…‚{‰zŒ€y{~€Ž‰‚‚‰p‡„„|€€‹‚|tvu}‚Šˆ‘yz‡„ˆ‰ƒƒr„~€~€vz“}~„~‚‰‰yŒ~xvxz€}xl}~|‡nz‰uƒ}}~—ˆ‚n|qoŽ…‡}~Œl€v‚{qrˆy„–†u‰{Š€~‡vŽ…}‡kwsvt…o~|…ˆ}v~swŒ€}ƒƒy„‡x€sƒ…ƒ|}Œ~q‰oˆ‚t‚wy†uxsv}‡suuwzsq„„zy…ŠŽuƒ“‹€yŠw€€„rzˆxl•xˆzx~|‡†yˆyj…„yŠprwnz†z~‡|‡‡z‚u}}€‹~…‚ƒv‡t†yx}{Šwƒƒe‚•—rp}v†w{’ƒ‚‡s‘~€Šwv{yr„ƒoŠwƒ}xs{{ƒ~„}x|‹n„xx‹w|uyŽ‹‹ˆx~†{’ˆ‰u€††xh—‚ŒŠŒ‚„u}‚x{~wzƒuzy‰w‰‚‚t€‡wuuˆ„~†‚t‚€Žy}~…zt…Ž‡ˆ„†u|‰ˆ{{||~€uw~~xŒ}o†ƒŠˆyu~|€zz€ƒ„sxzu€‚Žu€x“{ƒ‹z{u}jm†~€y˜†Ÿ„ƒuy~~—ˆs‡z}Š{~d{‹Š†~|w‰zi†wx‰}…~twŽƒz€„~ƒ€‡xz|†x‚ƒƒ}|pu…ƒ~†y{ƒ‹‰u†‚x‡{Ž}Œo…{xˆyst{~†t„Œt„€q„wyuux~qr{‰|ƒy€ƒ|‰w€w‡„x†yv†~|}|„~‰~‡~†‚vˆ†t~‡yn€yqƒ‰y…ƒ€}|~w†‡t~oz‘}u}{‡‚Šsj}€v„|wmw}€v{z‹}|mp€}ƒ‚‚…ƒŠ€†‚~w†y…†v‚ƒ}v†uŠˆw€x„yusyyy‡€yzŠŽyzp‚~z€‹ŒŒˆ‚}r‡~x}‚…v‡vu˜ˆŽ|€w‰ˆq‚pt~yw~{’‚d…z„~~z}n|Žƒ‰~{ƒo|ŠŒˆ|y„‹‡~|‚ˆ‚ƒzv{{~€r€|…~t|‡s‡~‚uw~‡|{„€ƒ†ˆ}…€~|~|~oƒxyƒ‰‡€Šz}‡uŠu„ƒ||~Œz|„†~€‹{‘‘y‰{{Œ‡‰…‰z„{z‚‚{{zw|†w€‹~{†}q„v}ƒ|u{ƒ}…€y€}p“€z†|…‰†z€…}}xyƒ{ˆy~y{€~„}jŽkˆy~|Š{xo€‡€u}ƒ{‚|pnŠ€€{Ž~‹v{‚„…‰‹~k‰~Œ{{‡€}‰p‰|k|~ƒƒow~z€x~‰wz…v‚~|p‚}€ƒz||~ˆ}tˆ’y„…x‰|q‚|ƒwu‰vy|{xt{|q}zƒ‚…€…Ž‚}|{•u~ˆq~{€tƒx††Ž|‚}ozuŠt„Œ~„z‰€ƒ…‰„}„ƒ‡}‡}y~sz||tƒv„„uswt‡zˆu‰qw‡Š†~‰nŒ„ƒw‰~Œs}~r‰nv˜……|uŠr|Šu‰ˆwŠ}y…yˆxˆ~}yx‚ƒƒ„q††‚y†z~€v|zƒ…‚xrŒyr‚|{p€x~t€~‚}Šz~„t€yw‚s|€w}ƒ}|‹‹€„w„ƒ†‚‚wƒ}|y{}‹‘|‡wƒ|†~n‰oƒŒ…€€…pq}l€~zŒ…x|‡o™…|v}‹‚v„ly†}‚…u‚~ƒ•y…‹ˆ|wzˆˆ„‚„}z~u†z…r‚ˆ„‚€z}ƒ‡sw|vqs}~†……v€Žxs}x‹€qyzp€ƒxuzy{yyxw‚~€~‘sy„Šƒuxpƒr€z{ƒ‡€}py}Šx„w…ˆm„ƒq‘}Š„uvs…ˆu€ƒ„…€ƒz€€Šo†w€w‹ˆ€€‚‚‰‰…‹~~ƒ‡ysj‚{‚|x‹™z†m‡q‘x~}z‡’~}ƒl‡„t†i‹ˆšƒ€‚„|x€no€‰y|”Š†ƒ{ux~…‚~l†‡ƒ„hyƒvœu‚ƒsqbhˆ|‰ƒyxv˜v†Šm†Žz†€ƒ‰€l„}}vhvˆ{~€|w†xŽŠ…†x€{‚|fz‡‹‚vuŠnt{Šy„p•‹€˜€ost†‚ovƒ|•”io€t‚–s€–dz”yŠh|{ƒtl|zwy††…s†q‰‰‹€†x‰yxœŠ‹†u~|mb„~|‰uˆ€~…ƒ}}‚€v€kˆx€z~q|}Š„r{‡‰||xƒy}†ˆurŽ}‰‡q{y|vuŠz”‘wxŠ‚p~}qŠš€Ž€z‰~…ˆƒŽˆr}wqvˆq}k|†‹j€|‰ z|wv„ƒ~‚_|‚~‚w{‹‹Ž‚yƒ…y„†v‡x}„w~xfy€~t†‚rœ|‡~ƒoxƒt~{†zŒw€¡gˆ‡~‹v|y{zi}x†„xz‹ow{l|„u€q‡o†€zƒu‰fv‘†”ˆwx†y“ Œ‘’q“Œ‹‚mwxƒs‘ƒ{y„u–šw…}Œƒ\z€x~x{z}so€xz~zxƒtq†vŸŒ€y‰€‚‚zŒr–…„‡wvw—qˆsztwr~m‚oz†{€x||c{‰~‡}x†rp|r~~myƒt—zƒ~~‹Ž†zq~ƒzw‡‚¡€xˆyŒ…}fšzƒzz“yƒŠ¢tŽ€|„‚w}™€swˆŽ…|‡x‹œw‚ˆ{ƒ„‚‹™~y„€{ƒ…’}„yzyzŒ‰Œy{€„|†wš€{q††{‚”yŽr‚{zz„rtv|‚rt{xr’}|rv„……€[|‰‰c|vyŽ~q†~ƒlsk}€}s€tˆt—v‡|†|ƒzŠj~zŠz„z‚x—v‰u{‹~~ŠŒxšwx†z~vq~t‚wt†}s‚w‡Œmmx†ƒŠ‡rƒŠkpt…}…€‰Žz•|}j‘y|ˆs„ˆ|™qŒ}yp‡qŒu˜~s€z€t„ŽvŠl}˜…‚pr}pYˆ}x„Ž…€€–„€uvt—ˆ’„z{}{t„x›bŠvyˆ|‰}{€~…}}€sŒnt€z†…ˆ…|vu‹…}†„…†Š~ˆ‰|ƒ|‚ƒpvƒv~ƒ„zŒ…|s€€y‡ƒŒ}ƒ~—zwxor€€rhŽm|}{}…ŒŠrzj~„}ny~„ƒ„}huty}yuŒubm{zƒ}z‚{z–‹…{{|ƒ~}††€„„†}…u†yy‚ƒŽ„ƒz~t}vx‘}ƒ}r‰myva†€}~zm{Šp~tv}‡‹…}j˜ˆŽxl†‘„ƒ’~Œ{{€yxƒ„|‡v|wˆz†„z‡rrŠoˆ„†sŒ}„~|€|}~zt…€‰~ƒ}…ˆƒƒ|…‚lwŽ€‡€s€†w†…u„u‹‰yyp{‚y~ˆ„|ƒ~~|‘€‘†~„Žx‰{Œ~Ž‚}†„y‹}Š…Œ‘~ƒˆ}v„xoŒ~†‡|{}|”z~}‚‹Š‚~}{}€x…z‰~{{s‡}|‡u…}‚ˆwƒ~{z}yƒ|s‰x~Ž{v‚sŒƒ}|Šy€‰x{~†……Ž}…v{……|}vzx{{y‰„†‚€|€‚€|…zzu†ŠrtsŽ‘…†}z†„ˆ‹vpƒrw…y~„}Žu‡‚~†|w†|wƒv…€~Šy•s…u‚€{ƒ‰u|{{|€ƒzŠŒtŒƒ€€|w~y†ˆ~„v„z„…~|ƒ„yƒ}„v…}|y…wux{}†~~~…v~„{€‚~ˆŠuwx}{x„Šx”ƒ€x~}…ytp‚…†w|€|‰oqxwˆ„†x}x‘}’yu“{{|z—u{†ƒ~{tˆrŠƒz†‡€w~|y‡~‚Š‡…Š{€|zsi‚yˆz††y†ƒ{}y~xŠv†€‚yvz}x…~wˆ‹z~qƒ…‡pƒzv„€ƒŠ„k‡nx…}…}z{…‡‚Œt|~{‚‚{€lŠyƒs}„{•‚w„~€zzŽŠ†…yxzz…€xxu|„‰ƒ~{Œ‚ŒŠ€{w…q~r€„|w‚…ƒ‰‚‰u†t‡x~w‰{szxyxyw…ƒƒƒyz‚v€ƒ{rƒ†{}€nz…ˆv‹‡€„mw|ƒ„|~‚lƒˆ~~€~yy‹ˆ†„ˆ{€wt†‘†Œ~y‚|‚~’ˆz„€yˆ‹„‡mxzw‚€„zs€”ƒƒx€ƒ|‡ƒ{~€x|…x…yz‡‚Ž}~{~ƒt€‡l…ŽyŠ|~‚†~wvw}†uy‰…„ˆŽqz„‹ƒxy~ˆs||~„|”†tŠ}{wz„’„ˆŠ‡‚‚~x~‚‚€p}ˆ|€“‚†™‚†Šx…y|Šz‰‹†‘†‹rh|ˆ{€„~s‰u‡†‚xƒ~‚„„~‚}y‚€z~ss„x…{~}…}xv„{„w„ˆ€y†qu|€„ƒ‚…„}‹{„„|‹‰~|ƒˆ‰ˆu}‘ˆ‡ywv~y†}]zƒz|ƒ{q€y‡††Š}€|sŠ€}‡}~yzzs|„r†{~y|Œƒ‡‚‚€…~Š€x‚x}„}{„Œxy€~yv‡€~{~ŠxƒxtŠz{ˆ‚}‡ƒŒ‹u{Š|…ƒsz‚Œ~~ynx”oˆ{yŒ‚…—ŠzpxŠ~ƒzm|€pŠ…rw}Šh‹z–|}‚ypt”j‹{~‚„|‡qu‰w†ƒw†~Št{~z~~v†|~w„w‡{|~Ž„}|t{‚y|„ƒ†{„‹ˆ‚…„Ž…ƒz€ˆt{‡t{„„…u€}‡ˆ}~‚‚€Œ{|Œx}‡‡v|yƒ~‚€|ƒf}{p‡€x‚|y}‹w‹„}uˆpyw|mƒx~}†xŽ~ƒ~€|€}’q{{ˆ~‚‚€y{ux}|}“x{€‚u†}†~z€‚€t€k„‚€…vxr‚~~€Šƒ€~vz{‚tx|{†„{ztt„y†‹u|Œ…l…v†ƒ}‹m‹z…uˆ}w‚‚y”‰|ƒ€†€}…ˆ…~}v‚~~z‰z…€y€x‰zruƒ„…u{€o…Šz~‚Ž„…i~€…†€x}†tŠŠ€‡~ƒx|}~‹„v„‚y~w€‡‚€Šy€{y€y|‚ƒ‰Œ{„q|„„|†ˆ…}€ƒw}~r…t†n{~n„ƒ…~uŠ†y||†€t†}†„s…x{„„ˆ|–ƒŒ„‚zˆn{ˆ}ƒ€€ˆxƒu‹Ž„€Šu{…x…xuƒyƒ|†u‰wx‡ƒ‚~}ˆ…z‚tƒ„{u‡ƒ€„€|ˆ‹†u}u„…Žr}v‚Œ€w…}ƒl|~Œyv€x•†z‚€……~‚‡c‹~w‚vx€€‹ˆ’|ƒv‚„v|ƒu‹qu{}|ywl€||}††~i„z‚‰†m„w}u}~|…‚†y‘‡€}~w…~Š‚|…„}zz…ˆ|{x‹{w€‰~€|xš‚zzx{u‰‚~{u†’…snw{||Š~}w€o‹yu|„Ž†ir{zƒ…wq‚m¡†„~‡Š‡||‚†„…„†‡{|i|}|†z~z|‘ˆw†z~Šuy~}w„|Œ{†yz€…€z‚xx{~ˆ|zzzy™ƒ}ƒ{zƒw{ˆqrƒtˆ}}‡w„my‡q„o†|eŽ{†~wƒxyrw€„y‚€xw‚wyˆu€o‡ˆ}’‚|x„|’xtwx‰v‚†~}t‡q…‡y}‚z~{~zƒ–s€ƒn€tu|”{t…xpt|q{n}€}‚ˆŠ‹nŠxƒ†~q€€„ƒ“mŽ~‚zƒu“}{‚x‡|q|„|…€x…€~t‚v‰†‡€€ƒ{ƒ|‡tx|€‡{†‰s…v|‚|w„‚{|Š†}z†y~z†{Š€‡xƒ~|€wz‰ƒ€’|…y…|ƒ|vvu†‡{‰z‡{rtƒ„†…‚|„–„‡yx|uyz}o††}~…zt‚ujƒx€‰{}z‰{}‡‚‚{…„w€‡wƒ‚oz‚u„r‚~s~m{~‚|‚ƒt‡{ˆz‚€Š€ƒwƒt{…|zƒ‡|~‚su‡}€‚}„~ƒ›r†u~‹z‹…{u’…‚‡„}ƒy‚‚sh‚‡™suzyu„”†|ƒ‚lv}v~yu€z€~yq|‰vz‚ŠƒŽy}„†…‚‡…ƒ„„‚…|†rxŽx†ƒz€tix~–}‰|s…ƒexƒ‚rŒ‚„‰l{v†yƒx‚|…wx||}}zu‡i~zz€~€†€y‡rtxzs‚v€uq€”‡|„ƒz„w‚…q‰}€„–„x”ˆ‰z}ƒ€qku…x€|w’…„‡x~ƒ‰…x€~~‡…uz‚|{Š{‚~}†}{ywd…x{hŠw{d€{‰|€Ž~”…†ƒ€‡tŠ€†ƒ}|tˆˆŒuxqzˆ{ŠŠzvl‚vx~„‹w‹||~„z‚…zy†yp…~~Ÿ{u‚r‰‘‡ˆr|‘t~€y€p‡}‘ƒy„y|Šj„{€‚|}ˆ‹Š~z}}‰rˆyƒŠw~‚‚|„ˆqz€Š‰‚v—q|€sŠ™’n„|Šr‚v{|wŠ‰}q†ƒy‚i†€x€€w„{{’Œy…yztƒ„†}€zxˆ~€{{‰~€t‡…ƒ€yƒ…„~~zv‹yr~rŒ‚{|u}€€…„‡‡zƒ‚ƒz†o~‚}s€„ƒ€–y†€s}l„”}•ƒ}||€„~v“s{ƒ…x‰}jn|zx‚‹ƒ€Œ„}x€ƒŠzwok‡~†{…uŒ€Šv€€~‡u‚{kvwˆ~z|su„‡~…€‡ƒ……‚‰v€ytw|‚„~„€‡•‚‡„yŠuy‚…xŒs€†~lyly‡Œƒ…v‹€}€zeuu‰„x‚st€xŽ€}|€|}†v‰~~‰qw~‡ˆ‚‹‚˜zsƒ†ylsk–zƒ}{t„nŠ“}…wƒ‹ƒm}‡ƒ†€w‚~~ysvŠ~ƒ}‹}tuyq|…pƒ}„„y~„€€sŠp}‚…„‰x|~{}|‡}‚y„†u‡“s}ƒ{‚…y‹z‚w˜zxv}n…}~ž}z‚~z|‚…v{ƒƒ€|‹Šp‡s~Œ|vƒ€‰~|p~‰~€txw|‡u{|zp‚•…‚‚{|~}Œ‚’‚wŒy~ŒzrŠr}|€€†‚w~…ƒ€vƒ‰~„„r|zwˆu~ˆ}y‚‰|~‚ƒ„Œ…ƒrƒuƒx‚uz‰{s…nqŠŠ€‡}€†zy‚x…u‚ƒq€gw|‚}wz‡|n‘{†z€ty|u|{†ywvxtƒ‰ˆz|oƒƒy–†{ˆt~‰w‹šˆƒzy…ˆhv~{x„uzŠ‚†€’{…w„xy~‚“‡x‡|†€zz‚|x„‚}}‚}zzŠ“ˆ}‚r{v|’u‚{†xx}…rˆy~††u‹„€ƒˆz‡…‚}Š}kuxƒs||x„‹iu„z‚‡s€ŠˆŒ|}|{„’|‚‚„~tƒ~{ƒws{‰xtzyz{z‘‚†~{t‚rp‡‚‡…ƒ{‚zƒy†€zw{~}}}€|€zu‹w‰w{€{……‰‚”wx€‚}Š…~te€‚ƒ‰|ˆzŽ‰‰z~yzx~xxƒnyrƒ{”~†’Ž}‡}}z}xŠ}x†…™„†€yy…„|ˆ‚rz|~yˆ}{iŒ~ˆŒ„vŠqt†mxˆy†‚rz‡s…ƒ|~}‚u€€€€z{‚Šyzwx„…sp—~‚|p€}ˆ{myo~…ƒq{Œ‰€†tw|}w‚€Žy‰rp…‚ƒw}Žy…zt†vxp}‹yzty‚ƒs…€r„z~ƒ€}€z€ƒŠxx…€uqwz}xƒy‡ƒpŠˆ†‚€ŒŽ{~„|‹yŒjvvrˆy||‰‹~|‰|ƒ{zc‰‡rx†tƒp‡‹ypq|uz†‚„~|w†…ŠxŒ}‚„„yxn€zsv…wŠŠ‚~ƒw|‡z|†Š{ˆ{‡~‡|~‰‡rft‰‚†ƒ|}„zxv‹‚‡†q…|rz~~‰{wjzqzqc…‚u‰…ˆztd{„‡{u€}p{zƒty~x{ˆwwnu‚ƒzƒ}r„o|~‚‚x‚|rœ}|ƒ~„ˆzˆ‡“w~y{w||{„†{w{‚†‚„Šs„ˆŒ€|…€zyy‡ƒ‚x€ƒ|jzƒz„†ˆ~~„u|}wŠƒ„zkxƒ†spp}ž€‹‰tŠŽ|qw‡t˜€|‚}ˆ„g€{y{yyv„‘v€}r†x~vuˆ’{’„Œ„€€‹vr{†}u†v‰‰zs}{o†‚‹x€t‹€|zum€„}~}„tvˆ„~†~€€‡€yx…‚zv{ƒ†„|p€„x…€•‰ˆqx„~Š’…‰‡y{w{z’Šz…‡~~‰—Œˆ€}{x‡wŠ‹’yyŽu…w~Ÿyv‚yƒz‚‹y‰z‚€t{|q„yz„yƒƒ…‹t‚}{„‹}‚rzzx…}tt‚|‚y‚zƒ}z„~~€wŠ‚n|tƒ~{‚‚u€ƒ~‡„}†{‡~{vz~€{}…ƒ|}t~ˆ~y|~uƒyl“~z‚ƒ‡‹y|š‚‡†tx‚Šir€oˆ~zpnƒu{Žz“„}zq€†xx‰„|ˆyz€‘z…x€z‚€vŠˆ{~€k‡ƒ~…zyy€„vx‰w„}|wŒo€}sv‰u‚‚„‘~ˆˆ‡ˆyk|†Š—z}„x€‡}„™{~„yŠ{z~|‰‰}w‡…ƒ„„{e‡ƒ~~~f‹‚q{ƒƒ€€|‰‚†ƒ€„y†‚}ˆŠmz‚Žˆ„‚|{ttz‰ywƒ†‚ˆw„~|~||~x†ˆ…ƒ„{„…’„†wƒ€ˆ‹wŽz‡z€z‚n{“…“y~wzptƒŽƒxmxsy†‹€‚n€lŠ~ƒ‹y€{~Žx„w‰s‚Ž€z‚{}‡|„ŒnrŽm†{x‹t†|ƒ~u}wqˆ„ƒ•{xy„o}‚t‡{ˆ‡w‡rn‹r„x{‡|…ˆ‚‡{zr~y„zv„……wu€‰~…}ˆ€‘€z„s‡m‚‚€w{{€‡”…|y‹˜Œor}Œ†€{ŠrŠ{†ƒ€ˆx{xu|…|u‹}p„rƒ~rƒs€€hvw„…}suvtxf‚‡…rŽ„•z|ƒ{v}v{Š~z„uvwunzƒ|‡w‹~u„ƒ‡‡…y‡›}‚{vvsˆx‚wv…ƒv€q†}zx~„tm€wvvx€‚€u~Šwu‡‰{~|w~…}wƒ‚wq†Š‚†}Ž}p~x€‚|}xŽ}n†r}„|t’‡xˆŠyy‡vp‰zu”vzˆ}wz„‰w„€ttˆz‚tv†|‡|u€ƒ}ƒ€}wu{…y{†z„„ƒyŽtŠ„ˆ…ˆ‚“{ww|zŠ‹ƒ€–ˆ|{‹‹†u…}|„xpq~‹…Œu}†|„Œ’‚|xŒ‚„„y€ˆyuƒ„…uy‰}‡~vŒ‚ˆ…xx€ˆ}‚†q˜ˆu…t}}„yŠwƒ†‹~~†„vzqwƒ~‚~tu„s”€{Œxx‡{ˆ€d…‡€||yr†vu~}€ˆ~~}svthƒ~z}}t‚q€}ƒ{€yw{…†~{€†ˆ‚‰{‚€~€Ž‹|‹z‰|†z…†ƒ€|~‚‚‰|†‡†€tk}Œ~wwwˆ„t‰‘‰~„€…‹z†{“„~|u~ˆ‚…wu‰x|vm…mw„s…‹vmŠƒŒ{w„†vˆ„|ˆ„yŠ‚€y‚„w‚s~‰~…Š‚„z~‡{|‰‹ƒƒ†x†~lz€‰~y|‰{s†tˆ}ƒj{ƒŠ”†vƒ€oƒ{}~mƒ…u€•vˆzv…{}ˆ…x†kŒŠŠ~o€pm‰twŒs…}s‚‰~~‚„Š‚ƒ†‚ƒ~zˆ‡‚‚‹vƒy€y|srˆx}‚svqˆ‡wz„‡‚p‰‘{“…w}v„t{{}i~€~‚{€€€šz„~rzzv„jx~„‰~†…€‰Ž~{}‡v€||ry‚‚ƒ„€…‚‰‹vˆ‚‡…‚…u‘}ƒ†w‡}ƒz~‡‰‡€‚„„w|}us‰~Ž‰{{ƒh{ˆŽ„ˆw„}w—~‰ts}x}u‚|‚}j‰~‚ƒ}„„‚w‰‰ƒ„…~}†wz|s‡‰qŒˆ{†|†~z~x~yu€t‘‚|‡{€svv~‚vŠw‹uˆ{z~}x€Štz}{~s{~€qŠz}o}s‰{€uvƒ{€ƒ„”m–}}{wi€{‘—Œ‚€|}zt€‚sƒ…}‡Š‚ƒz‚oŒw‡~ˆtw|}z†yw|zz€|ˆ|€yˆ€‚‡}‡|€~x…‰ˆƒ€‚„z~}‡Š„yŒyƒ…€{ˆ†‰ˆx|…€Š‰s€tm†~€‰…Šwu}ƒy{tnœ}~|†„‚||txq‚‚‚~ƒŒŽƒ‹~y‹‰w~„rluƒx‚uŠtyz€‹~||˜€y†t„}u~ƒz‹zu†{ztv†„}‰~€€†x}|x~Ž‡„~ˆ€„uw†‚s‚}‰†wwyƒ‡wxhŒ~€€{€…ƒ„‡y~„v††Œˆ}ƒsƒvq™{Š†nnˆ†u†…Š|’…„{~~un‘‚‚}~…y›xu}vz†n~wsv€vx}‚tŒq‚Œt€…ƒ‰}‰{t’z„„mxw…|z|‚††‰ux}…t‡‡x‹„w†ƒ‰…ts…|‚yƒw|‡f€}†}}Œ„Ž{l}…~nˆŠoƒxy‰…{–‡}Špxvuˆy‡|€hz‚€qƒ{iˆ|zw†}}yywn~~{lŒ{€…{l‚sz‰‹|„y„€p{w‰Š„„}ˆ~ƒyztt}y”ƒƒ‚‚†„}x|‚„{„ƒƒvˆo~y{|z|xsx…‹n~€€•zƒ}xŽ††‹Ž}„„}…‡u€~‹|t|‚{z‹€€m‡~}€…„„p‘€x†|Œ‚…wwr~{ƒsn~y}‹{vz‰ˆ‹pw‚xz‡…€†ƒ€€}{‚…‚~‚‡‡‡s€x†~ytq‚Švsx}~zsyz‡uƒ€{€€v€Š•vx‰ƒ‚ƒ}pŠƒy‚ƒŠsƒu’{wƒ{…{†‡|j~{xƒƒ{•~„‹Š‚~€}ui„r„|z|wƒ…|{n…y}p~z…u”}„{…‡Š‹q|„€Ž}ƒ€„{‡ƒ†~zƒ{‚|ztz„‰t…„„ƒ‰{„ˆ…z„‡yŒro„{vyw‘x{rŒz…px˜„‡„uxƒtr‹‚sŽq{x–ˆoŠ€y…‚{‚z‚t}…{x€~or‡|~‘vˆ‚z‚vtƒ‚|ƒƒ‡zotvw‡ƒ„‰xow‡ƒ}~z|„vuƒ‚xyp}m…}ˆ…~xŽ‡„|w…‰„vxw†ƒv‚‰ƒo‚€xŽvˆ~umrwz…‰y„wnƒy{†ru€u“lŠy‚y‡ouˆvˆot~{s~x~“{xŽ|}s‚t|ˆƒy‡|‘…zy‹u‚y‡y‹‚‰rz|‰€|t†}Š|tn{€uu†{Šƒvyƒ{ƒ”zƒˆs}……||w‚|w|y‡}vz‡utyv…wqwvyŒ‰zwz‡‡|}zpŒu†~t|‘u…pŠ}–‡‡Šw{{x…w}ˆo€‚Š|e…s‹t|w„{}ƒuq‚xƒ~}v~€ˆ‰€xxˆ‰„Œ|†v}‚w†}‡|ƒ„„„y{vyy‚}…p“~ˆ…t|||—’€ƒ|~„}|}‡p„z}}{{†„m€luŒ‚ƒ€…€‹q~…€‚n}|›†…ww€|‚‚w€‹v…qoˆv|}ƒ|Šr|„‘‰}yxx‰†‚}}†‚{‚~…„‡~‚yˆ‚‚…{z†|‚‚qŠx|‡t~‚‹†w}z†Ž{rx‡‚‹{€…ˆzym}ƒ‹€xŽ{ˆ€im}|Š„Ÿqƒ…vuŠzt|z‰†w~}‘~ƒ……yv‡yt‚xuts…€|~nxrŒ‘‚Šv‡~wztx~~€~€{~|{xŠtt’x†yŒ€‰}†z€Žz‚utvƒ|{~€–‡‡‡wtw{lny}‚‰}{ˆ}mˆr‹‚z€€u|}˜ƒ|‚}~›€‚Œ‚~zƒƒˆŒuƒ|‚ƒ…ˆ„‚—yrƒx–Štvv{†ƒv|šwŠ‡s}ƒtƒ†‰ˆ‹|w€ƒy~v„ˆ„yˆo‡z|{„ˆ{Ž~}pz…‚„~„Žtˆ‡‚‹s‹~~–‹€}……|†‰s‚y‹{u~{‚€~~‰|…wwu}…|ƒ€ƒs‹y~…€ty}~Š‘sy‰~yvrz|‹z†{|{„—‡w{€„to…‚…†{‡~€~}ƒo{ƒƒ}ƒ‚‚„x‹‚Œ„€zxsz|ƒŒv€„€Šwƒ“u|€{…utz}Œ‚z…„nyƒn{~z‡{~wsnƒ‚yw‰‡‡qŠ‡||…€‚‹~gŠz‡y}zzvt„€t~}tn„~~|‰ˆƒt~{”€„vwv‚zu‚~Œ“‚€‡‚„Œ~}yj…Š{„„|„Œ~…yw‚}ŽŽ‚‚~€v…tz|†ƒˆ|{‚ˆ}€xyŽ~˜„ƒ‚ƒ{q~}†|Ž„…|x…y„ƒˆu‡nˆ‚yxu‚‘w”{t}€ˆ|€zŠq|†yzŒ„Šˆ™wˆƒ|„uzqr€ŠƒŽŠu}l‚x„h‚}ƒ‚z†„z€s‹wzp„‡v‹v€‰jƒoƒ‹yz‚zw†‰x‚o{w{yŠkv{||„y„}‹y„uytŠ„~zy‰v‹|‚wr~rz€yŒ|„tr‚„„‘z…€x}y‡rx…pˆwy€}k|ty}m…‹{x‚‹‚…“~z‡…{n|oŠt‚ƒx„€v†Šu‡z„z}…mz…tv„}‡‚ry}}„„ƒ€…{{r|ƒ„}ˆ{†„“vrw‰}‡ƒ‹‡‘ŒvyŒt…€‰…€i„s††x{‡†’v}ƒxx‰…}q„}tŽ~…‰‚}}}qŠrŠŒ„„w„{ˆ~€v„‚€‹†‹w–xzŠm‚‚‘zewy„…s‚k†……€€zwˆzn‚z…‚‰v{†‚zzw‡}ƒ|u}ˆ‚‡~†r}…vˆ‚mƒˆz€…vnptwy…‰}„kq{|z€zv}uzy†yw€v|y„Œ€vŒw‚Š‡x€z€‰„…‰~z‚‰ƒus}{|„|€wo{†xr„zƒ~pw„~~~~|ƒ{ˆ†}y~ƒ||†††~vx|……|€„o‹wt„|w€}xŒl€ˆtƒ‚{ux|l‚‚v‚ˆw|rˆƒŒx„x“ƒ~ˆŠ„•|tƒ€•}{Ž‚††}„€j‚v{wƒ€€€w†q|‚‰~‡p|€€z€z‹~|wsq‰}~ˆ~‘ˆˆ‡„‡Šƒ‰„}zŽk}uƒ€…€rw‰uˆ{r€„{††ˆy„x†|{ƒ~ymxu~„uuguŒ~ˆ}w}z€„vpt‡‚|‚‚zŒwƒ~…~ƒvvƒv~|~~pzy~z|{‚Ž}‚„‚ƒ…†{…’x…‡~…}qƒŽ{w€~}€nvƒqt…~z…‰ƒ‹†’xƒxs‰€‰w{›†ƒ……{~w~‘‡vw€mt~{Š‹‚}zt‹y€z{Œ{ƒ‹€†{…ˆ€ƒx‚„Ž„|…}…|€†x„‡}tv|{ƒƒ„tzu€x’|zyƒ€„|zŠ†‹l{†„t„„~†™}Š…ux‚‰‡…ŽŒ‚†wŽo€…ƒ‚„}‚†ƒ…sz‚s‘…‡‚ƒ}o…€tŒ}v~Š„‡‡|}ƒw{x‡xty}~€wsyvz‡~{ƒyt|}ˆ‚„†{~|ˆ€~‚‡}„ƒŠxzŠ„y…xizƒx|t…Œy}„€|{€p|w}|ƒ}€Œ€zq‡ˆƒŠu€‡†l…uwƒsz€…ƒ‘†ˆ€u€~}w€„z€ˆƒyry}…{ƒ‡ƒ‚~~|y„ul‡}Ž|‰rj|Œ‡vƒ‚„„|}h~‚€u|‚ykz…€}zŽ‡‘{}xz‚s„‚q…ls{z|‘uxz€v„zƒ}}lyv€rxˆy‚€yuz†{Š|„|‰|~€‡‚~sx|‡€|xt‰‡ƒ‹‚{„‡{wz‰~…‘vx†Zs…†‚yˆ„€t—s‹„ƒ‰{o‘zŽ}x€|‹Ž~ˆ‡‹ƒ…€k…yŠ‹jy~ƒ‚Ž…Š€x{†€‡{”‚m†z…ˆ~w‹xŠ‚yŒ„x{w|tyˆ…y‡ƒ~}z}„wƒv„|ŠzŠ‰‡vƒs‡zŒ€€xˆ„Œˆƒnz}‡€ƒ~†~v}{„x…„q“‚x„‡yuy‚~mxzyƒ„{~Œw„xs€p…uyŠ|q„qj†q‰z†‘ƒ€y™Ž}zŒy‡n€‚‰ƒŠ‹ƒ}‚“|™ƒƒ‰ˆ|tmtˆˆ€„vz‰|~v„hy~~†ˆ™pm|sw‚{‘€}~‰rŠŠ|{…ow„z~{ŽŒ‚ƒ~Šu‚l}yƒy†ˆ……†p{ƒ~{”}zw{~dƒ‰{‡Œ…’||‚„q‚w•i~ƒz–‡—„{gpi‡€{ƒdƒzn‡lz‘‚f…|w{zdx‚™{ˆ‰v˜~sm|o†‡{ƒpŒrƒs}„y‚™…‚‡x~†ƒ€–w™†„Š~”…z‰v–€€svy–‡mk…‚xz‹‚e€vyŠ‰vŠ|sww“pj„p‰v…uˆ…ˆ‡{ww‰…†~ˆqtˆ{Žzxx†Œ€sŠwv{…vs‰ˆ}Ÿ|†z‚w„y›‹ƒ‡ˆf~}†ywxn“…—}tŽe{“‚€p}—Šo†t|”‚|z›ŽŒiv‹q„o……’‰…€„„‚b†‹ˆ‡‡ux{Šg~‰y}uŠ…ut‚i{Š€~€q„ƒvštŠ~}„†„Šozˆ†‚}“mw|†…~~‹uv‡ky…ztw‚r„€qŠ{|˜t‰p}œ|‡‰“w‰z……‹‡g„cr€ƒƒƒvžyy‡wh„ ‰††sƒ‚n„ ‚Š~|t‹ˆ{xq†yŠ~}„wˆmƒ„{…xz~w•tyŠx‚ˆzq~„{‚|vnp|—Š‚pozzzzq‚ƒŠc„z|xs}r~}n‚msvq“kƒ‡d„x|z‡‡‚sczt‚y‚}‰‚‚e‚‚‹‚„{p’€‘‹ˆ€r‚y‡†ƒkŠ…u~||wouƒ|„ƒxj˜u€‡†z„|oŽ‚Œyz‹ƒ~€‹l„…w„zs’}~Ž€ƒ…x…‡l~|–‡‚v„r„t|€|‚~ƒ|‹t’a‰‚n~m‡{‰t‡‘ƒ”‘€ˆ€mŠ„•“{x€y…zˆƒŽ‹tŽ‚˜qu{{™b‡‚„‰~xƒl}nj}qŒtˆs€ŠŠƒ|ƒs‡t™t~„ƒ~sq…‰zq}…€Žx„ˆr‡x‘x€{z‰wyŽ‡„Žvˆ‡”€Žw‡€ˆ•ƒqœxzk…ˆ„‹}s{–~†„o{…œovo‚zƒˆŠqh€‚Šy†uujƒ}„‡v†~ymnˆw~x{q˜s’„ˆs|rylsƒ‰x…zŠub„}ƒ†~}ƒgxžw…ƒ‡}{{ƒ‡–v‚eƒ„aŠpss|Ž„si~`{€{l‹uy‹†dstˆ‹‘€|ƒ|”uuxaxŠz€w†„‰ec‰t‚~u…Šzˆ–}‰~o‚~~w”ˆ{u„{~}ydu‹†…ˆ{‹ƒz~lŽ|‚†€{‹xq‚Œxˆ¢…}zs‹zxx|‹Ž{z‡‰ƒ‡y‰w…qyzfmu{ss†x{\ˆzƒ~pŠ…ocsˆv}”ƒŽgywry|†Š{n”Ž|x†~ƒ|„ |z‰‘{r|‡zx~‰‰–‹Œ~‡{z†}{|€w‡‡ƒ†{ˆ‹‰^u{‚~w‡‡tg|w‡„Šuvftw‡Œ€¢}‚ho{wfykŒzv‰wwyvm”x’zq~{t‚…‚z„twyxŠ„{}}ˆyƒ|…‰‚ztt|u„{‚{€ˆyr…~€|y„uyz|†…‰€…}~€{Š‡y{Œ{vŠy~Œ‚‰k|…}Šs{…z‹w‡}{z„j—xŒ{w‚„x~„~xˆqŒ‡v„{Š„‚yz~€uy{|{ƒ‚u‡‚}…y†xxˆ|‰‹ƒƒ€x†wƒoz…|„u„ˆ…v„q„wy|€‚‚{}‹‚~ƒ€{{‹~ƒ}Š‡€|‰‚‹tˆoƒƒuywy‚}€z}‡x~v{s€~ƒz}x|m~v†ˆx‚}‰‚„„}†…w‰uŒ{y€„w‰x}–x‹~z‡z‚ƒ‚n…€ˆˆ|~n~‹†‡|†€‰{ˆv‰x…‚†……ˆ}}}€|„}‚~}ˆv€€s|…y}uŠvzztqvƒz‡w‡~wwu‚t{Ž{…€{ƒ€~ƒz|vn€}…Œ„†„‘ˆx†Šzƒx‡lx„„z‚yy}Œx…„€r…z~~š{w}‚z‡ƒ‚npƒ†„q~}‚Šr‰{‹w|~}‡x{r†~‡‰w|y{~ˆ}‚†|ƒ†t{v…|ƒ‡ƒ„‰y}~w|}w€|}~|xp|ƒ|z{Œz}€xs„z„‹wwxn|‰€{‰o…rŽp„‚vƒ„x„ivŠ€|}{€šˆz‚}w†v‡p„|w€ˆ‚‚w~“sƒ‚yz‰|ƒ~z{v{„}}}{„wy‚{†~‡…}‰u‚rr€~}z{{‰}…|…||‚x|‰‚„Žv€vvƒƒr‡‚ƒ…‡|z€‘ƒ|…~‡€|€’„ƒ†zy‡q€{ˆ€€zz‚nv‰€‘}ut‚‚yˆ}wyw‡x€{€€q†‚Š‡ƒ„}|…~‘}~€|v‡}yˆ€€}‡‚u„ˆ…}’…p†|}‰v‡vr††s‰‚~€Š‚jrˆ„‚„z”}‹~x€{’tk…‡y~zzƒ†z‘~†{…„k†xžˆŠŽn†hru‡|s„‚€u|…rv‰s†z}}||Š{~…{zz€‹xt}~‚{~ˆv€n{ƒ}~w{‚€rtƒ|‹q†|‡t‰†‹‰„n†p†€r}q}{uy{wŠ‰xtvy‡‘|‚ƒlz~pmy}‚ƒ}€€~y‘€ƒ}lšq„}r†vxšxywfs~|}ˆ|…yq†{‰{„†xƒw‰…{„zˆyƒy‡}ˆŠr‚‡v†‰y‚‡sy…rƒˆp‚‚x|~x€…~u|‰}r‹yƒŠ…“z™‚…uzŒxŒzos‚u~…€q{‡€y……‚‰|vˆo‚ƒ|~pn€xlƒƒ~{ƒŒpxe~wƒƒ‚‹ŠzˆŒy„ƒ}m…|……‚ˆ†o~~w…~‰„‰xt„€‚z†{‡xx|ˆƒŠzw€„~‚~Œ‚}…„xux‹~xvyzyzu}{oyŠxŠ€z†~Œ†‚‰€‚Œ‰‰zm‡~ˆˆ‚yƒzpƒt‚‚€|…„w|„t…z{ˆ{}s‰}†~„‡~‡ˆh…}’uu€u‡‰ˆ„†{„‘‚„{~i”€}|z‰€~€‚€uw†|r~ƒt|xŒ€……vƒ€|‚{†~~}„€x…zƒ~r|v}Œ„}€{Š‡tu†~ŠŒwˆƒ†}}v‚ˆe{y‡†…{„…‹„ƒz||…‡‡r{v~ƒw~‰‚up„t|€„‚ˆ…•v€€w‚~‚ƒ{‡x~…†u~}w‹{‚|vx†}…w„„xv|~‚z‡r|r|{ˆ€ˆ‚|~sƒ‰~„†…v€vx}|„€|€p}~x~zz†‰}‚q‚‚ƒv„}l„yzŠ‚v‰~u|€yˆ|{‰†x}ŒŠ„€‚y~”~t‰yvx‚z~ƒ“|ƒ‚…}}yy{kƒ}‚}||ˆ{vƒzˆ‚ƒƒx„}yyyt~~€ˆy„~‰€„{~~€yw€…}‹u†~ˆƒv†~Œ„|…„‡‡ƒx}Šu~x|~‚€}‘…t€yˆ{„‚}t‚x‚€ƒ~ƒ‡…‡Š‘…w~{‡zmp‚|Š…|}m••‡zx~…‹|~p€Ž†‚ƒ……}ƒƒ‹y|zx|}{…ƒŒ€€}z~ƒxn‚t|ˆy|‚}‡p|v‚{~‡zt~p„€ƒƒ€†s~€†…€zƒ…€s‹…„“rƒ€{r†{yz{‚}g‡x‚‰zz|‚„yƒwƒ‡‹{}„“„–„z}t{ƒ„€‚pz‹†ƒq~ƒyu€†ƒ‡v†w~~x€u†‚’ƒ„†}ˆ‚„…ƒy~ˆ…|„}y…ƒ‰x~}‡nŽ{–„€|y†~~|ƒ“…‚ƒ|xˆ{w“w†z€‡vv†„‹Š{‚{u„{yuk…Œ}†oŠ|‹v|€‚‚Šwuƒ‰„|…ƒ‚†ƒy„y}‹~}ƒv‚|€yŠw”vŒ{…y{yyv}urwzƒr|ˆw‹zuz„yŠ€Œ¡xxƒ{{‹z}“‰x{}~{†…†Ž’}†|‚…‚t{ms€†~|{‚yp‚}…~{}„€†ˆ}|{‚{ƒ{‹ˆ|}‡o}~~‚z‚…t†~†}‚zƒ}zvu†€v|…wŠ„€{|€ƒ€€…j‡y„ƒ„{‹ƒy€‚‚|}‰tq~x„}|~}rƒ…{ƒw€}”“~yvt€syz„„x}‚}|o„~„†‚x…‡…ƒ‚‡Ž…‚}‚~{lvŒ‚ƒp‚Š~~ƒ‘sx†x…„tzzu†x}}z…ƒ~„kqu‚ƒ…~‚ƒ‘{€‹‹q}„’ƒwƒ~z‚‚w’t†wwz‚wr|ˆzƒ||‡tˆu‚€z~ƒw‡~~|yx˜|‡z}vˆ~„l}}„„r†…{‚sŽŠz|w†~}™r„}Ž‚}Œj‹…w~€{“rŠv†ˆu{‡o„‚yx~}|w‚uxƒv„u}†}€pqŒ~’|‡€‡‹ˆ“p††|ux|}ht}€{ƒtv†€|vz‹€…„q~„…x}‡Š}€‹rŽƒyƒƒˆx…‚z‚yr„~u•~‡€tx–ƒ|‡ƒts{~g…~‚ƒƒz‹t‰x€}wŒp‰|Žvs…‚yˆt|ŒŽ|‰‚yxƒk|{‚ŠyŠ…{|‰’vzwŒ{™wdr‚|‡p†„…Ž~}wx„‰ˆv‚€‰myƒqr‡vƒƒq‰„r~…zˆˆ~~z{{vƒ€‚mŒz…‹v|w}ƒ}†~‚m~z{~‡w|•y‰†tyƒ‚w~ƒ—Œ‡‚€‡Š„‰rv„rŠzŽ€Š{•sqp‚„‰vu†ƒˆ|}„†‰‰„ˆŽƒ{~‰€…„y|ˆx‰„ƒ{{z~ˆ}‹}Šy††}|€€‡p€‚ˆ|ˆƒ‚€mv{‚zy‡rŠyzt~vƒŒ‚uŠ~ˆy‰k|€~‡|‚xy’“…{xr‡Œ€tu{wŠ|v†f†y€}||x„‡†“}‚Œ~€xˆ€|ƒvz|z„€‹‚}y†‚|‡qyƒ}{{€o‚‚€v‚pfŒm‚|{{€ƒw~€w„€„|‰‚˜w†„{z~’—‚‡}{{|{}o€|…~u‚wt€‰w‘€ux~‰wˆtvu†x‡ƒ…q’|z‚‚‰x…}|ny…‡…x}uŒs†vzh‡ytƒ„ŒŠ}}vxxƒ„{‚uw‚|…{{€{yyˆr~‰{s„Œ‡y|z‚|}~‚hqw{{‰q{‚‘‰v}t‡}‡z€ˆ`{€~†zv“z{Ž‚u‡~pŠ{…„‰—‡ˆ~€…}Žpo‹v~Š‚‚€k~€~—‚~}€pz}siƒ€|†…}€}zŠ‚…ƒƒx‚vy{‰wŽ{{ˆvŒw{w{‰„xˆ}‡„z‚†€v~~y{usvyu~x}‚vƒ€ƒ{…ˆˆu{‚s‰t†„t‚…~yƒs†„€rxƒ„x~v‡tr‘wr{ˆ†€{‰f€}yƒv…|iƒu}‰~{s„“‚„sl‚ƒ†~x€|q˜Š€}‰x|€s€‚„ˆxŒw|n}ƒ‰ˆ|v~|‚{~{{{ˆy†~y‚‚†€‚vx~}†Œv„……y‡w}~…z‡{|‚}|‰ƒ€ƒsŒƒƒ‚…‚ŠŽˆ„‰ˆuŒ|p€‡o~}‚‚x‚z^ˆs€‚{x~uv}z}|}„vtv…„{{Œn†iz‡{x}‚ˆŒry„|€|{…‡pƒ}…~~~~z|€y‚„y‘}ƒ~„||y€}‡s€~}}sw{w€ˆzƒˆ†z{€~{‡v„€u‰xƒ‰sx„—ƒ‡|‡‚rxuˆ†y|†–„~kmy}~€ƒ‚‡{Šx‰…€}vŠ……{„€}wƒŒz„~xƒ|}t‚‹}z~~~|€~‚ˆ‰„}ƒ~‚ƒ…u€€{~||zƒ€‚rŠ‚zˆk†}y}„€}lx…y‹}‘ŠŽzŒt€€†ƒwŽ}š†vˆ€€ˆv€{†‘…w…w‚zŠ‰rvi€ywƒzy~l‚tr‰rŒy{Šx}~{‰m‹{u…~„}…u}Œ„‚…t‹‚ƒsx|{‡jpyw|‡z}}zuvƒƒwƒ{„€Šv{}y|€Šˆ|uup}{x{€‡r{v}z…}yyvƒ€{Œ~‰‰rƒ}ƒ|zlz†z}‡x—ƒzw„ƒ~Œz~Š{‰p‚}zu|s„w{xwŽ…€€‡€}w|sp€}„r„z~„€x‡yj|€uzŒ~z|ssr†€{{{Ž~…|y€yzwuƒoƒ}v~Ž‚€yˆŒ„ƒx}‹†€†{}ƒx}o}Šxs†~~…ˆ€u|†‚†u†‚zƒƒƒ}w‡„…p{zyis…{ˆƒo……yz€x‡ƒvŠxp‰~‚†v‚~}ƒz|„|{„z…uˆ‡‰wƒŠ‰t||„‹}ˆ~€‚‡‰„„xƒ~‹‡|~z~†€‡u†{…~x€Š{wyŽ~‘|‚„ˆxˆ‡mzƒk€~ˆƒkŽzƒu‹}{zŠ„‚~‘ˆ‚€{yt{}~Œ{ƒ‡€„tŽƒy‚…‚y|nl‡†~nzyz„}z„}{€}ˆ}sƒv‚}}m„}Š†…x|Œ‰†€w‚wŠ‹wrwƒv€wzwŠ‚‹y}s‚|dx†v†o‡z}yzt€‚€xu”„‹…s|zr‚yˆ–r}„‚€xs~–{z}‚z„ˆ‰nh€z€y|‹xs€r{Š|tŒg‹…‡‰}ˆ€s‰y}Ž|q€sq‡ƒ‡vs{{}€r‚ƒ†‰x~tr„z}y€~‰…†t}~††Š€ƒ~z„zƒ€~€q{„~Žz€zw{z—‰€†ˆ‡†uw†‚xz|€u}nw†‹ƒdˆ…‘‰{wƒvm€|†‰ŠywˆuvvpŠˆz~t€Š{{€Ž{xuut~||Œˆtƒ„‰€y{k}~w|{…y{ƒz‡‰‚‚„‰€~l…}Œu‡pv…„{†~s€‡~{…~oz‚{‹ˆ}|}z{‰ƒƒgo~…”y€w€yvup}‚}‡{w}}|}{l|‡s‚yuŒ…ƒ|”…Š~sn~n{‚wz‹†|ƒ†r‚…v„ƒz˜~Œ‚~kzt€Žj„†€z~x‡žxq‰r|~p|~vqstv{z‚ˆv}}{„ƒŒ‚}{z…„{o{ƒz|…„ƒš~yˆ{{ˆ‡}Šrzt€~ƒ€v‘‰‹{{…~{‹†yyyˆ„‚y{z’‡|‚~~ƒs~…~l‹y„u~rzkw|z˜‰|……}sozpƒ|†w~€Ž‚u„t‡Š‡‹€x†w}€…ˆŒ|{†p‹ˆox‚†vmwqˆ„{e}}|…ƒj„q|lƒ†~~w‚~}‰„~€y‚xvx{€}Žy„z†~Œ|zu‘ƒ‹‚x{yo„rwƒky€Š}w‘{ni~†wtnv{w”t€{v~w‰z„|†x‚„|ƒp~{ˆv‚…}ƒ‚uˆs„‰tj…|„Ž~v‘vppo€x‰ˆ~~o|mvŒyz€Švˆ’ŒŽ€€ƒŒ‡‚ŒŽ‚†{“„‚†}‘…z{„{Œz€u|ˆ{zsƒqˆt‚}~}|nƒx~~Œƒ€Œ~‚||‹‰Œƒ„}~{~w‡~–y†u{…‚‚mˆ…‹zz†u~Ž{{|j‚€}}‚’yŠŠ†‡ƒ‚y~„}|…„‚{€‹€}…w„„‡~‰}v}ƒ}zw}z…‡€ˆ€‚{„ƒ‚€w‡‡u€d|z{ƒ‚t|…˜w‰r{||…’d‚|‚{†txkv…ƒ…„‡™ˆy†rqtƒxz‰y~‚„ƒŠ‚u{o{€ƒ|~w‚~o|nq‚ƒ~‚ƒv{}}s{{‰††vsˆ€‡…}p‡u{ƒuw…‰‰ƒƒ‚y‘z~zy|‰‚™v†|‰styž}~€€}ˆ•†qp|„„„rvˆ~„~‚z‰ˆ‡€tw€~‹„‹„ˆ|u‘‡j†ƒ–ˆ‡~t{ˆx†y|zyw„|z|s€…yyuyrx‚y„}un{’u{wƒŠyv~puo†‰r}Žs‰irnƒ€„€q}†Šy‡‡}’ƒ…€Š}{‚ƒ}yyoŒ„ˆ…wkp‡~ƒ†yy~ttˆ~‡~ƒ„{†‹qxz†w}rƒŠ‘~{v~‹ˆ‚wxgzw‡“„‚†nu‰y…w‚vo†‚…~€j…y‰|yyo‰wym‰}ˆo†{|{‘‡‹‚‚Šx}|j}}‡‹}…€‚zy~ˆ{„{}t†ƒ‚ƒ|ŒyŠ†vr~{}„sz{t{}rqŠv†€s’yŽrz|x›†€‚l„}y~~}„|’uzx‚†”ym…{ƒ|~~~…ˆ~z~{‚|r}~€w‡~pƒt‚v{…|…u||ƒ€z„~†n„ƒƒu€~~…‰}r„|ƒŽ…ˆyƒ‚}…Š{ˆqŒƒv}i†q‘qv|v‘|…~–‚‰v†}vŠ’…—{ƒ~†„w…‰y”uŠ†‹|{ŽŒ~ˆ{}……}y†Š†‹k~|~w~w‡‡~z~~x€‡z}|Žz{‚~€s€t‚„„‚‘{yqy„‹sv|y‚’tƒuŽ||‚†h‰y…~ƒ‡}~Žpƒ‡vˆm•q{jpˆzx–€ˆln‚€v‰‚ˆ€v‰vŠzr}ˆ†…pq…}{Œƒtˆ‚vx…€~ƒttˆz†~}u‚€}†||ƒ|‹~{„€‡„wr€|ƒ‡‡€}xŠ{~v{w†tz€}‚w{€€x|~ss}„z‰|x…~xtx‚‚ˆ|tq~„‰y•€u|p{{…s~s‹t”„€‡„uvyuq{€†j‡‰™y{tƒuˆ~‚Ž}€v‚‰vƒ{Š}{†ŠxŠ„€~Ž~ƒ‹{ƒ~€ƒ{~~~{…†€}„{w…{|‰~€suu~†|…{Œ~vx~}u}ww€…zto€uvŠzyœ…~}„€}r„|mŒ‚‚u…‘~‘yqŠx|…szvx{pŒ†ƒ‡‚msy†w‡€wv}ƒ‡‡t}}~ˆ‘Š‚xƒƒ{„‘‚ˆ‰}€‚}‚€~uˆu~p…wy„‰u€{sŒ|€‡†Ž}ˆ~~Œ‚…†o}{€ˆv‚zl~}~~q††{|‰††|v|‚s’‰z‚z€|‚˜wŒd‹ƒvˆ†x‡}‚{qy‰uv‰ƒ’p†vŠxusv}‡„uzt……„’tƒ{p†‚}yp†}€ƒˆ}~|ƒy}ƒ…}|xsƒ‚~‰}‡}††z‚„}z„}„w‡ys|„yƒ€{~uz‹ˆŠz„ƒw…os‡ƒy€wz{ˆo}‚…|’‚ƒ“‡zƒzt~‡vŒtlyww~q…‡“Œx€‚‚w„~{wh|}ˆ€|~sm}u|{~xlŠwŽx„~~‡sˆ~…zz€‡ƒz|wsnx‚xs€n‚†‚„{‰o{Š‡‚…‰„‚Œƒ|„€}~€|‰~}v~}‰tz}…|q€•~|pz€~†z{n~yl‹|u{Ž‚…x‹‰‚w‚{‰~r{xbv…u€„yzp~~ˆu…„kwyx‹‘€†~}w†Œr€‚€‰~†‚‡‡„€…„yƒ†zpy„vƒŒx}€z…yzŽm‚}}~z}|Š‹r†l€ƒ„ƒ{x†“}…s€w…w†z|z~s€lwˆz|{z‚€€a„‚‚x’Š{ƒ‘ˆ}x‹y”ƒm‹z‚†…rwlˆ|Œn‚{{‘††~‡~xqv€‰ƒŠyˆ†}ƒqyp„‰€{ƒsxtt…Ž„tŠŠuo„p„ˆ‚ˆ|‹~‰r~„o€~‹w{|†‚yxf€~ƒzypˆ{‚†s~z…{†ŽŽ~‡u{{ˆ|h|{oy‚‡€}”r{}v‡y|„}q…xs{‡u„ŒtŠŠ„‰~~~~}…‚‡…w„z†lqˆ{ƒ‚|€{|uƒ}v}zu…yyƒƒptp‹„|vƒ~uzmxw‡‚Šl„€}t‚s|Šz‰}y…vs‚„o‚z‰~…uz—z„…suŠr~uwxx†ˆy„vq‹zb|~„ƒvou{{‰€|w‡}…z€Šƒzˆˆ‹Œ„Š…z}{‚v~}v‚us~oxw|o‡Œ†o‹uyyv‚‚}•x…‚‰‰ƒ}‹r}€v||ƒrlyv…‚‚‚zr|ƒu{€t‹Ž…p€tt‚}r…}{x‡††{€ux†c†}€ˆ|‚‚s‡}{uqŠ‰vw|b‰{~‰x||{Œ…Šy‚„||€€tv||{‚ƒŠz|†}~€ƒ~y‚uvƒ~„Š{z‹}zqz~v€‰t‡‚o~}‚‡zp~z€‰|zyŒ~…w‹u„|tw†z‰z~„…ƒ{~‚zxƒ€Œ‚‡†x}‚€~xˆ}€ƒz‡z‡}‡}Œƒ‹‡x~‚‚‚‰€sh‡zzy…‚~‡ƒŒ…}†Œ€{xˆyƒ}€Ž€w‰€}~t‰€~z…v~{~ƒz}{ƒ‡~k…o†Žm~yx„ƒ‚Žuwz…ut~ƒ…†ˆ{„{|‚y…‰}ƒ€€‚{‰y‹‹w†~ƒƒŒx{‚€ˆˆ‰z|’q…‡uuƒ|ƒ€‚‚‡s~{„€zŠ„y~€|{x€}}|{‰|‚vˆ…Šˆ‰„Š~ƒˆŒ}€Žz†rƒƒ‰…Š}‚‡ˆˆ„~‚‚‚vw{~„ƒsŠzutzƒ„„y|‰v~~s|}ƒ|u†v†ƒwrˆ}ˆ„u…‰„~ƒq{€…z{v‡ˆ€‹~yŠ‰{ƒwvŠuz„{{„n‡z|Œ€x{{†w|}ƒytv…ˆyv€†}‡~ƒ€ƒ„x|ƒ‰~„ƒt~}q‘€Œ‹{‹x‚yw‰v„…‹„Œy}{{y…{v€Šwy‡w‚Šz€‚‹‚zy†v~}{…‡…~{xy|€{u|†yz}†ˆ…yz‚qŠ„y‚~‘}wv}{r€~y~„ˆ|†~|‚{}{~zt|„…z†yƒ{„}{‚Š€Ž~‡…Š‰r‚€yv†€{xŒƒ~……{‰€|z…}Œ…w}ƒ…~ƒz„€ƒ}y€tv„ƒ|‡~t{|zƒzt€……Œyz~rt‡|ƒ}~y†‚ƒw}q…~~‰z‰u€€~ru†wp‹‚~ƒ{~€Œ‚‡‚€„…w…x|}‚{{vŠƒ}€€~„‚‡ƒ{wŒƒz|zƒpƒv{‚ƒ…{‚y‚x„{ƒ~‚~€|x‡„€{Š{„|‚ˆ„„xw~rys‚ƒƒ}}wz‰€‡x{x~€„†„vyvyyzx~…€‚y}„…Œ…z‡‡t…ƒŒ‰u}‰…lˆ|†t|~}|‚{pryw€{†n‹zy}|„‚x‹i‚}wˆ{uw‰…w}|tƒw{{u‡‚zŠ}€€tƒ†t€€{˜x}|Šwq{ˆ{‡‚Ž‚„„{‰€…yƒ†Œ€†ywx|~ƒvt€{}ˆz€{v€~|•{‡zvˆ„€ƒ€r‡€‚‚}{…‡{…}nsxŽ|ŠŠ…{~ws‡{u€vt€„|}t‚ƒy|xs…„}…ƒƒ~€z€yˆm”z€s}tyrwƒ€w„}uwƒzs|„„‰……z‚‚|„†›…tz}~ˆ‡„v‡v‰……y…zvz|m†y€…‚€‡{†€‰‡o†t‚ƒ†}‡‚…ƒ‡x†~†|€xrvŠ{tŒ…•„vmx|†“tƒvy~{€…€„Š‹|~r€{Œv‚y}†q…‰Œ†„zr‰ƒ„y~yzzvxŠxˆ…|tv{„}|{€„‹†z‚x~{w€{|‚‡y†€…wŽ‰ƒ||y‡ƒ„}}‚s|{y…rŽ}€…|~~u‚~|‹€•…‚}€|…†~ƒxyy}‚‚u„{„„‰t|wy†|xw‚…|ˆlr|zˆ„zƒ…z‚zŒ„z‰w€‰vy~„vˆt~vy}zŠz‚~‚†‡{{z“‡x‡ƒ~{ox~‚‹}€zˆ‡~x~w}…x~u{jw…ˆ{‘~…{‰~~ƒ~…Œx|}}}‚…x„†‡}}v|€…}€ƒ€†{‡€Š„}€x~x†}„€x‹x†}}{…~x…~ƒ…~zvƒ…„xxyw‹{r‚ƒ}€z€„ˆ{Œy|u†}}€p„„}††~‰‰ƒu†{||‡‰…}~u|~‚}|‹|vˆw~†„~xt|}€|y~~wˆ‚r‡ˆ€Švw‹x{€ƒ‡zv„zˆ‹|€€ƒ~zƒ€„Œ|{‚‚|z„„z„…‚‰„{ux|o}†}Œw}}€ˆ‘‚‰{}ƒz†ƒ}~’{Ž|}€Ž„t…{vŠxr‰{€Œvˆ‚ˆz~††‡~‚ywŒ~€„€‚v€t{‚ƒ~yv„‡€zu}ŠoŠx|vwzyy„~|{‚y}‹|}€vˆ‚€€~zs{yŒ‘‚uz€…un~†zzx€’Š‡z‚~v…€u’x€„ym€†mth{‚zw€ž€ƒƒ{ˆ~†Œˆ|…u„x|Žun‹oˆr~ƒ†€|mwqr|ˆwˆuu{p{Švwyƒyr¢‚~ƒ€yzov~w‹w‹sz~u„p„~r‚|„€yo€~{„†ˆ~r„¥‚ƒ{}Žxw„‘†y„zy€q‚i€ƒxz~ŠŒ†“…x{ƒv„‡qa†„…}rˆvƒ‡Že€~yŽƒ‹yz y‘z|r›ŠŽˆs‰†{‡‡Œgs……|†‚{|ƒžs€€y‰‰}vxzvy‹vw†ŠvŽr’z‚zŠ€„‡~t‹p†x€y€{ƒšn‰€~|…q€…|uƒk…ƒ‹‚w€iq„yvov…w{ŽyŠzx€|’‚st‹€›w„{y‰z‹Šˆ~‚tƒ‚~ƒ…˜Š|„„ˆ{•y“‡luŒ…‚w‚Zˆ}zŠqx|jt„z…wƒ‹‚ŒœŠŠs}„…†tqŽtƒx|€ˆ|€„‡‹{q‰„‡}‘‚ƒxpˆzŠ~sŽx‚ˆ””zv€‚‚ƒ|zo†‚ƒ„‚}tw„poŠx‹ƒt}gze‰{hu|‰v†i…€w‘xˆm”|‰†‚x‰y€˜dŠ{y†{}‡‚’{|€†‚ƒ‹€uyƒ~xuŒix…€…‚‚}Žk‹}o‰}‹„ty~sywyƒu€}€y{sƒ„x€Šv}wxˆ‹|~~„{s…„x`…~~m…ƒz€z†yov—yŒ†v‡ˆh{Žz’r‡}€Œ{…‹|†j}ƒv†y€nc‡}pu……go|sˆ‡t‚‡wzxto~r‚q|~ƒ‘ˆ‚„€Žw†„oh‡wƒr}€€y}xurx{†‡ˆuxl‡‡yŠxyzx’{{ˆqxŽv†t‡y|‚}txŽ‚y™uv{vz|uxl|‹†„t‡pžy‡…~”}…ƒžŒi‚~yˆt}m{}†x‡‡~hƒy~{€~r‚‘}•w~€Š„k~}†ˆƒoˆŽ{…ƒŽŽ{unˆz‚‡uyv„ƒzv„vŒyu‹o„~|ƒˆpx‚…˜{|x†}|€sd†€„y{€ŠŒhrjq“~€sƒv}wgkˆ‰~€zb‘„“wˆŒs†”™„~€|zxv‡Ž†ƒu†yz†~Š™zˆx{†{‹ƒ’}Œ…t|€‹xŒl€ƒ€†…xt|€–~z~d„o…rlƒyw“…x‚n~oŒq€vƒsŽz…|u‚p‹}—|‰u{Šyyœ…Žj„j}{„€_xy„‡ƒzr“|t‡‚€}p{]‚ƒxˆ†~}}uƒˆ~€Žj‡upw}wsryvqs}ˆ‡ˆwp„no|~~”x…ˆkˆ‡…}wˆ‰Š‘Œ†‰”y~g‡„~||“{€•uŽƒ}}…‰~}†šŒŒƒ}{‹vp‘zˆr~‚znƒ|ƒ“t~ˆ~}„„€bu}y~}~‰}ƒ|{ˆzŠ…ƒŠuzzˆ…}}_ƒˆƒv„€yz‹xƒ‰jˆŠ{y†itŠ†š~yy…|ƒƒzˆšz|zvhz‡slŽ{‹}Š†u{…m…|r~}…s‰h•†{{„}„Œ‡s‹ƒ‚‡}ty{|vy…x€{}~„~Š‚‡Žk‚xxrz‰su’„ŒfvŒ”‡”kztzzzˆ}§vpˆr|o€†}^ˆ”xw€{tŠ€ƒ|’w}‹}’„tz€Š†ˆz{‚o‰€lŒxxƒ{q€n|•„~Š~€{qp~†ƒ€x~ˆ}x€„Œyƒ{‡p~…}†}{ˆz…†{x~†€‰€uˆ|‚†~w~x‚yƒ|‚x|zw€€x}…‚y{‚~‚w‚vwpŒ‚Œˆ~~k|}ƒ…wˆ}ztx†€…€†p„tj€{{prxw‡„…y€…{‡{w|…zz‚Š|Šs€sx„}zx|ˆvw‰z|€~€†‚~zƒ~x||†{~y†{„t‚~€‚†„v~~…ˆzyˆ…ƒw‰„sƒx…zƒ…u€}ƒyƒ{y€‡|xƒ€{t€y‰uw„‚e}yjxzx‚~~‹xˆ|w‚~Šwx|yƒ{v„z‡u‡ƒ~|}y„ƒˆvw‚z~€{‚ƒv~{x~…|…y~v~†vxƒ€‰’Œx…tƒv††|„s|v‚Šz‹‚{ƒ‰†}v‡†ƒ€~u‰‹€„|†€„‚px~€ƒ‹‚~{€tokƒ†~w††rˆŽƒ††w…„q||y~†}x|t„€ƒƒ„Œ{‘~x†‚…{u†p€}y„ƒ~ƒ„|Šz‰}u‚}w†y‚‰‚|u‚xŒ‚}‚ƒ€yyˆz…‚zƒ{qyƒ„„ƒ‡„†s€ƒ~~†yz‘…„ƒ‚~ƒq|~wuŒ|ˆ’€†u„|xŽ~Žyy•|€…uth}}zŒmnyse}~{ƒ†~ƒzx{u‚{vr‡‰‹„„z~w‚v~ƒqz}~ƒ{ƒ|t~vƒ||ƒ{‚„{ˆsz~v~†‚}ƒ||€…t’‚}‚{‰‹v‡…}{{‚|}mŠ•ƒsx€„y„z†uƒƒtˆzz’u„€‹€Šsnƒy{w‡xž‹ƒ†xw|Œ„urˆu‡qˆxƒŠ~‚v€‰sˆv~s‚}r„ƒ€x‚}xƒt€}xˆr‹~ˆw~w~z‚€€€}‚“†‚•w~ƒzp€xb€~xƒ}o…x˜x‹„{zlŒl~ƒ}|y…~Ž}}„{’iu€ezv€wƒu‡{ƒ“ƒ‚‡}}‡z„y†…†{}{‚……‡†~…zz~sz~{Œ~zu|ƒ‡‡‚s€}w‚„s}Œz‡x|€€ƒƒzww‚‰~{ƒuƒv|z~~„‚y‘‚‚xv{…xv•€}ƒtƒ}…‹‡~ˆ‚ryy}kyry~Ž‡t‚vn{}q|‹m€‡}u|’…‚|x|ƒ‚…zƒ|}|vz‚€‚…|{q{z„x|x}}xŽ†ƒ…{‡„ˆ~€v~‚t†}€}z…mz…x~‰p‹€ƒs‚|ƒn|w†sˆ€{y„o‚yƒyzt|q‡an€|†€~‚šˆ€xv‰t…v}h‚|z‹y|to€ˆ„Œ†{ƒ‚‚„|’xw†y‹‚~~…‰ƒtu†ˆ{€‡{„€€…zqŽ{‡xwt‡ƒ‚…‚…s|ˆw€€ƒ~„r{Š}‚zv~~|‚u‚uq„‚yƒ‰‡„y{{vxˆ|y†znv†sˆ€†tzt‹•y‚~€y‰‚ˆf}z|{‚{u–ŠuŒrz‡‚ƒwv{~~‡€‰xz†qt€~‰yv…~’z‚{ˆ|ƒ}zqƒyzŠx‚{‚ƒ‰rƒz€‰|z‚zw{‚xzyx†zŠƒ„zˆ‰‚|†‚‡}z†|ƒ~~†|{sz‘su}}ƒtpvŠ’ƒ~€†”‚‰…€|}~w|~z†oy‡p€„ui‰s…u~€vooyv~|ƒƒŒxŽ{‹~x€ƒ€„€~ƒŽŒ‹ƒ€~w…Šh~…}…†z|v‚|v†~}{|‡„z|ƒy†‚rŒsŠw}†ƒ}…}xƒ‚ˆŽz‚}z|€tzƒj{Ž…|{€ˆmlx}…}Žwo‡‚†€|{€{†{m†uy†{ˆ~‘}zfyz}ƒ}t~t|z‚‰~xyq|xv}}xˆto|ŠŒ€x€…zy|sw‚vy€Ž‰u|„p†ot|{‡y†tŠ„‚…~~‚‡v|s˜~~{ˆ}}u}~…„v‚‡Š…ˆ€‹‰}‹x}€xœvy|~yr€t’‚ƒyŠŠpz|’‹Œˆ‚‚ƒ‚Œ“l‹xy„ƒ‚p{ƒˆ†|€w„z€Œ…‚ƒ||‡y†~Œq}†yqruvy‡ƒ{ƒmx€~†z{v~ƒ‚‡„…{}}y‚z|{‚‚tŒw„…r}rx„Œww‡|‡Œn|s~xt„€‰™ˆr“vw‡y}Šh|…x‘‚qz†rŽqŒ•y‚†…vˆyu“€‹y‰„vŽk|‘p…|†~w~w‘€y‡ƒ‡~zu„vŽuy}y|‹~‚z||r„„€…€‚~ˆx‚‰z€„€„„n{~y‡…un†‰~€……t‘tzƒ†{ˆ‡€ŽŽ†w‚z{tƒƒwvu††wxpt…~…~€‰}”v}“m†x‡|r}v‚‹‚x~‚xyƒ‡~„y€‡yŠwv„ŒŠnv†ƒƒwˆƒz‡}ˆ}~ƒŠz{„|‹‡w‹†y…utˆ~„„†‰…x~€}w}ˆ‡‰vf}|ƒƒx‹yŽ‚ˆ…}‡€…y|~l‹w‚|…ˆqm{q|„s‘‰|~tx…€t~w‡~~‰Œ…‚}ˆ…†}€}{‚€~y{|zŠ~ˆ}~‰†„vˆz†pw}„}‚z}‡x‹~…™l~y€Žy{x{œ€‡wƒt†‡…vƒkŒ„vy~ˆ{i||‚~wŒ„‡‚jwˆw„p|r‹‰€„ƒv}sr‡|zˆ|…}‚{„tr~…€‘{ˆtƒ†ƒrwy†„}‡ƒ‚uwy‚x…t€}‹‡ƒ‰|v‹”„‚††‰‘yyrts‚Žˆ‚Œnqƒm|Œ{€xr……Š”|‡‚…„yr€}u}v†rƒ~w‰}}z‚„€€vw|€€u„„‡‰~‚~€o„{€‡{u‰|{~q……ƒ‡ˆŽƒyy€|††€~{}†„w|„Œ{’‰‡Š€|u„z‡p‰sj€Šr€‘pƒ„u’u…|vy€‚ƒ€†„~†ƒsˆ…rˆ}ƒ†„}wr€u‚‚yˆ}q„o|ytŠg}~™|{…ˆt~r€ˆ‘‡ƒu‚yu~r–†Œ{ƒ€„|‚Šu{z‹~†vyŠw‚ˆqw†…„Œ{…‚}}‰z€Œv‡…€†t~ƒ†ƒl~€ƒ‡qlzƒˆ~x~€||x•‚„€‚‰{ˆ}Œˆw„†€~€ƒxu|‚„y†„t‚{}w~‰}rx€w†sssŠ†‡€~w”oƒy|ˆx‚p}p‘z„|s‚‡‰’}t~}zˆ‡{”yŒ}~{…nˆ€…}ˆ||zw|q‚‚|uvn}y‚|Ž€Ž€„‚€€ˆw‚‚‹v…€Ž†}Ž„‰‹}{wƒ€~{€~}yƒ}t~€€”t„qpƒq‚y„}„‰{‰†|’y•~ˆ{~ˆ„‰‚lptq†~y{‹~„n–†x~‰„ˆˆzyŠtƒƒs‚wzu‡†‚Š}y„}{}tr‘}xzƒw…z~‹s‡ˆ~‚„{wsƒ€“zƒ†zl……ŠŽ……wˆŽ„}{u€}yyƒx‹yy~w‚ƒ~{~v†‹uw~x…y‘v‚|…€|y‰–ƒ…u€xy‚|}zw‰€{„ƒ€|u‡~vxzx~†††ˆ~~x…ˆ~x~|~~€{ˆ~}‚Ž…|x~’xx”y‡„{€zu‡~‰€ƒˆy”{xyty‚}y~Žz‚‹‚Šu†ƒ†{†€~{„~Š€|Šƒ‡|ƒƒu|zwƒs}vvƒu‚v‡‹|zsŠ‚tƒ}z‡j†‚uu€~‡…r†z„ƒ}{}|‰~x‰{‡…ƒ‹~xy€x€x}Œz}‡s‰ƒw~zz|wxuw|…i‚uˆˆ{|ˆˆ{‰ty€„ƒŽ}~yjƒ‚|ˆ‚{Ž€…zsy~iy}’…x€r†}„{ˆ~‚…zmw~px~{€|‚‚vqx„}|•n‡„~…~yƒ‚†“}……y|{†‹Œ‡zˆvx‚††{y{ˆ‹‡„{‰†ˆrŠ~wwxŒu‡‚s€Š…ˆx|}€xŠ{‚~‚€swp|€nw}„€€~–}‹i~€ƒ€}Š~Ž‚q‚‚„€~{|~‚…}‚}„‡‰ww‚†ˆ~‚‡‡yˆy‚t‡y†~ˆl|~‡†ƒ}‰m‚zz~|~vƒŸŒ‹ƒ‡~€u‰‡|ˆ€ƒˆrŠ…u{‘Žršy€„~l…z~˜~~‡}}‹~‚…’ƒˆ{‡v’‹Ž…{uˆo}€{|‡…Šuy†}~…z€‚|‰}…Œ„~Œyƒƒtˆ†‚|oŠŠxrzŠ†{‡…ƒ{tn–€„y‡}ƒ€€…Œƒ‚zŒsw|‚|kˆx{tŒo‰z‚‰Œ‹~ˆrzwz}ƒƒƒ‡twvz„ƒ††‚y„ˆ†{|ƒ‚€~~ŒŒzˆ}‹v}ˆ|ƒy‡ˆƒ~uzz‚vw|}nz||~ˆ|„}ry’w‡~‚{„…„‡{‚{ƒ~‚~t|qm†‰‚€sˆƒ~e„{~€€€„z‡”‰ƒ‡{y‚puŠŽ‡„ˆŒˆƒ|‚zy„ƒ}ƒ€…zi…|ˆuy{xŽ‚€…x˜|xŽzz}z‚ˆ~‚“€{}x†{‹~ztŒ}t}‚pzw€€}…ƒ€m‹i„ƒqzs~{e‘~}‡tŒvzuŒŠ||{…p„y||Œ‚‘p{€s‡†q|ˆs|Žvw}w†€ƒŠ}|…v}ƒŽ|•‹‡…ƒwyŽƒƒ…€†w…u}puy{€†v†‡d„y|…y‚ˆty–y€ƒ†|‹t€uoy}ƒyrw‚m†||„}{…|w}||{wƒw‰}u†Š{‚~u…€€ƒvŽv‰‚|{ƒ€Œx“|}Šzƒ|ž‘|„Š†rx‹†|{„|‚wrswt‰z{‚y~y~w{ˆw€ƒ‹u†ˆo–xwˆ|s‚‹……zŠ‚zxw{Šƒ‚‚pƒ‚„}‚„‡}…~‚|t‚n|lpx‚€~‘~ƒ‹n‚y|yŒ}ˆ€n„~…~{x~u„Šy€|ƒ€~‚{€Š~‚…zvx{z…†y‚|„†x†xst‚…zu€‰‘v{‡€u|}ft|{|‡‡{†mŠs~~Š‹q‚yz…pxu€q‰}y‹{ƒ…xosz‚zy„np}}‚}}‚‡qƒ€~}y‚yhŽ~€~‚|vwz{„†Œ†{yŽ‰t‚xˆc„}w‚xx€vŽ†‰~|~…tv‡{Žr‰l•}uxwwˆ„r……†…€ƒzx…„…‡u„wz‰}˜u|€ƒs†u{g€q„oŽƒqpy~}u|~‚‡w~ˆz‡yx‘|„rx}}ƒ{z{y{|‚v‰zŠˆ{~|yx‰€{šv†‚~‚€Œ~`‰y|}x‹r}‹zƒy‚y‚ƒƒrwv‡zzƒ‹„†zu€}{‚|u€~wuo{o‚pˆ€{y‰|lt|†„wrmr›„|Š‚ƒi~{xŒˆrƒ|t‡…wzy’y{†~…‰v}y}{~zy‡†„†‰r„x„‹s‹~usxu€‚‰…pƒl†€Švvuu~r{ƒ„s‘u~}…‚…|Š‹|†~‡Ž…z…w€}‰}s…y{†m€ƒ}ƒ†{‚}~q|w}yr‰ˆ~upyƒ~‚yw‘‚‡wz…|ƒ}|{s††ƒ}‚r‚ˆx…Œv’ƒ|rtz{z†yŒs†ƒ~{€|Š‚|Œq…‚…Š‚|v„ƒ…zŽ}Š~‰€…{}‰Ž‚}}€‚xgz}‡‡x‰}}“‰w†uŠhˆs•‚}{†zx~x{k}Žƒwv„y†l}sƒ‰‡lˆmmwz…u‰„m„‚{€u‚€€Œp„z}~†rz}‚‡ˆ|~†Šw~{ƒ{iˆ‡‚‡††q€x‚…vwxuui†{|‚„mxry|wl€ƒzƒ‰‚xtw‚ˆ~y~uŒ|{Ž~‹{…y~€€ˆ‰‚†}|ƒ{~}y„y}‚x|~z…‡ƒ}}y‹zŠw…v€v~qwŒo…q‚Žm{~…z…}{€‘w|}‚€|†‡†‹”}x‚v„yp€uy†Š}†„‡—|x‚~xˆsy„{s~z‚{u„v„{ˆ‚|ƒ†uw„€}v„mƒ{z„t|„†ƒxz~…Žt}ƒx€‹yƒ‚yu{~p{}“g„}z|‰~“Œ}‘Œ~‰z€yxkƒˆƒŒŠ„…s~{ƒƒ‡{‡y{{}„‚|†s‹}|„v}‚o„}‚~{ƒ€Š‚‡ƒy‡zx{‚ƒ}o}‡…}z|xsu|ƒv}‰‡ˆq„ˆ‚}ˆ‹„Šzˆ‚Œ}}x…†l…t{€ˆx…}xrj†|Ž{wŒpˆ~}|wy|y…‡s€z|yƒ…“‡}{}ŠŠ…y€|„‚ˆ‡|‡{z†z}}{xƒ„€„{xŽƒ|y~‚‚}qy„„ˆ|t||†r€r„x‰yrŠu‚‚}†€{zx†ƒ•{~z~y‚{rv}u}yƒ{€{‚t†|€„~y‰rzxz}{‚ƒˆ„|pˆs~t|ˆ~…w†u|vvx‚}‡…‡ƒ„z˜†…r‚„‡†dy€…{sul”{€‚€‰‰zŒ„x~uŠˆs}usŽu|myŒ„‚z„{¢wy„o€v}zƒ|ˆ‡}pŒ}~{v‹{…yz}}†‚x„Š‹„ywƒz|}r‹{|‚‰wƒs‡ˆs“w‰u|‚…‡…¡‘„v…Š|€‡xmz‰w€ƒ€tpˆyrhxw”’„}uqŽ€‡}ur‡‡y€Œw…ˆ†ƒ…‚‚‚x~†‚Œy~ƒ|zŠ‹‚€z~~}v~‚€wˆŠ‡yw}…‡‚y€w†}xz|~~lww€}~}‡‚t€qˆxƒƒƒ~‡”y–‡{„„~vˆƒˆ‚{vx††x…zpw~|€|€wp–‹‚{„Œ„‹ro€‡~~qn‚…”€y…xszo“y…x~…†‚„qˆ}w‰}ƒ‚r…€{……‹€k€z€}y‹v{Œu‚v‡„x‹„ƒ€ƒ„…†wƒxx}‹„{y„}}‡w‡{‰ƒz|{‚xŒ…~svŒzxŒ|z€xzy•…Ž|z‡~…}†wvxwŽ{‹wŠwu‹{z…u|y„p‰‚‚Œmyzt“g~x„‚y{sŠt†zˆŠvšŠqƒ|„~‡v‚‰z…|ˆy„y}‹zyzv‚x~{‘r†||‡ƒ~|Œ‰vz‹yquov|}x~}€zxvou‰t„„Œ‰‚w„|z€o‚„lŒˆv{ow{k†‚ƒˆt‰‚v~x}‚‚x’l‡†……‚€~‡’u€ˆu€zy‚v†ˆ‚s†|}{{‡xxy{q‘{ƒ}†„Š{…st…‚…‹~}†‚‚ˆ}~…’ƒ‘…|v|~†ƒuˆzyŠx€z{„no„yzuwx~p~}ˆ€„‡u€rv…z…||ƒw…c|~|w}{†e‹|y†zpˆ~uj~vyƒt†x„qiy}Šˆzxnƒt’qŠ{{i‚w}ˆ|‡‰xk‡†‚ƒ|rƒƒ|~q„|…ˆmv~|yˆ‚„|}~{‹t‡{†ˆ‡€€zŽ{Ž~{ƒ~}}‚x•x†{z†‚…†iˆŽ†‰ƒ~ˆ„…}†z‚yŠ…q…k…„|vˆwƒŠŠ{x{€rˆy‡Ÿ€Žu„}v……t„z|…z{qˆ|w~dˆ~}wq}Ž„‘†q…€{€‚~„nwz{…s…€z‡|„}‚‚‚‹~q{z}ƒƒƒ‚{Š…{{u…yŠw{|ƒx‰y†yz}yˆz…|{x„Žy‰‚|‰Š~{to‚v„†„u…{{yjˆ€zŠ{‚ŠŠƒŠt}}‡€Ž–pŒty‚|{}{“z—€u€‚z‰ˆw„m~ƒ€{‰|~†~~……p„qx‡|{z|~vwy~†€†}‚ttˆŠˆ‡zv€tvxˆ|w‚‰…€yŠ€}w‚ˆn}~uqpx~oy„p‰„ˆs‰x„„uo}„…‰|€ƒ}Žs~dyˆz‰}~uŠ„†™xz‰‚}‡}€}’w…z‚syvip{tƒ‰uw~„‡‰xƒt„Š‹€ƒ€†~€Ž‚”†r‡}xƒs€x{€rŒ€†ˆ~{…„||su…z‰Žƒ|…{oŠru‹p˜‚x‰€€xŒh†zy‚„…€j…|„r‡}||{“x”†zz€wŒŠu‰x}€~|€|r†~z†ƒ{uy‡mŽ„z€o„|kŽsŒŠ|}ˆ€ŠŠ€Žƒ€‡zrzƒv‡ƒ„€y„ƒx‰{vzƒ„}zty‹y}wtƒ‡Š~‡~†|{zƒƒ|ˆ„€‡z}|Œ{~‚ƒ{|~y~€Ž‡{{€„{z‚w‡‚x~‡€‰}}s|†|sŒq}Žtƒ}}…}„uo}v‚ˆj•|~ƒ~‘ty€u~uq„‚u{€p|~y‚{v‚|„w~t‚x€Ž‰‰…Š…ƒw|vx‚z…ˆˆ}x‡}yy…z|Žh‚yƒŽ}~{}{p‚€u•}€‚Ž}|€{z~s€‡Š~‹w„……Š}z{~‰ƒ…yˆvˆt€ˆ€||~u‚t}}}zŠj{‹€Žtˆ€|€mt||…‡†Œq{‚”~zy‰w‡{ƒ……}|„ys„zxp…„‚{t{…ƒw…z{}wz‚ux{||sŒ‹€vo€„ƒ‡~}€†yu‚{€‚†zry„ƒwuu…{qr…†xuƒ‡†„zu|oƒ~m„uyyn‚„voŒ‚ˆ„‚Šƒ~|†y|zvƒw…w„€ƒ{tŽƒ‚‰‚ƒ‚q{zƒ“‡{yˆŽ‡~…xˆ…~€ƒ…Š‚‡|}Š†‰{~{wx‡t~xw~~xy‡u€…r‹sw{†u{‚y…wynzr„v‚‚l}vx„€ƒwsŠˆ{{w…€Ž…{†|Šˆz}|„…„eƒo}‡uŠpzˆ†~Œy}ƒ‚|s~˜w……|†xˆ€ŠvŒy|‚…z‚rv|€‰{‚y…|{…‹€z„ŠŽsxzz…s~yr€Žƒ–s}wz~ˆ‡Œ}‚‚mwtx~„||}v‚•y„{‡ŒŠ‚Œ”„y†z†Žx‰‹ƒŒˆzp‚}‘k†lzƒuuoq‚x{‚yt†~ƒ€ˆ‹‚x„‘x‚ŠtŠ€„~„}~w€Œ~„v}~}Œ~ƒmzˆw„ƒ†‚|€y‚|ƒ|‰{…~Šw‚|m‡}x|}ysŒ|€|†{…‚‚o|{€w†s…xx}„€{~}‡Œ‡u†~‡{‡i{vŽ„x}t„“rz|t{‹…‹Žp||~‰}„|psˆˆ|…}ˆŒ‡|rt€…‚z…~‰|y}~‚‚xst}uƒuu‰ˆy€wd‰~€‹~z…~o‹rŠ‡~z‰w‚|z}}|„}‡w{…€Š‡€|‚…†y~r|Œt‡€o~yx}{|Ž}‡Šq……v‡wƒsœwv}€…|€Œ†‡|‰„x”pw{‚ƒ‰‰“|‰u~‚z„~ym‹|…†Œy†vzŒ„…‡uzˆ{ƒ„w‡{ƒy|y„x‰}j†…|ƒyu{}s~‚w‹yƒ„†{|vzzxu|‘z˜yvy‚yƒ‡„‰~u~†xt‹z„‘vtƒƒp“}t~€~{}„~•yu…|‚w}ƒuz“ƒ|xƒ‰ƒˆ€}|‚zƒ|tpzˆ}x„|z|zpŒ…v…Ž|‡{‚–‡€xzz|tƒ€|~~ƒx‡wur…|Š‹y„‚~€qy€{y€|z‡”{†zy…u€…t€…}y‰€v{z…~|€|x‹t‚ƒ†‰rŠy{~‡‚ƒ~Œz}vƒƒ€~‡Š‚€yy~z{Œ‚……ƒ…y€…€‚€q{yz€ˆ€†{yˆ‡z…‚{†sxzq€w€‚„€~‰{zŠ€Ž‰wƒ‚}‚w|iŽz„†„‚yˆŠƒ‚‡qi‡Š‚vxŠysuul‚{~€x‹ƒ‰†“‚…w~‹‘~‹„‘…o{{Šsvz{vww…ˆ|‡y‚~u|~~…ƒˆz†}y„ƒ|x|Š}{ƒ…{Œ|{†sˆzzŠ‡ˆ„v„tt…Š†…|y„‰|‰wu†‚‚}‹l~ƒ{€~„ƒ{y‚{ˆ‰}}}‚‘ƒvq‰y„‚€v’v†x}z~†xq~{‹u}‚st„uˆˆr{wzup„ƒ{…{}ˆˆ}‡„~…yr›’wƒzy„†nˆ…|•„ƒy†lv‰k††o‹†rmztŠ˜vvw~pƒŒ‡‡†…yyvv~z~yŒŽ€z|…†z~‚t‹ƒtyu}}{€‰w}~‚ƒŠ|x|{qw€t|‚…y{…s’‡}|…€Ž}‡x€w~ƒsws€~†Žtu€…}jwn|’€~†z…€w}w……ƒ~‡vxŠ|“r‹„€•{€z†~x…xŽk~„yr~‚xƒƒ‡‹t€„rŠxx}}w|ˆ„{‡€}…n‰w~{ˆ…}‚Ž|x‡q€~Šq‰ˆ–‡y|ƒ‡{‘w€vz‚€ƒ„{‰€ŠŠ~|„z††‰„‚ƒ‰‘|ˆy~~‚ytˆz}uƒ„zŠzˆ~vŽˆˆ‡ˆ„„~€ztƒz—uƒ€zvŒkˆ}„„x~„n‰t‡€zŒtw||n€y„„‰n{zy“Œ€†yˆn‰u†…‚ˆ~wˆ{v‡w}‡x}……ƒzy„‰€ƒ~€‚ƒ|‰€‡…z‚{€ƒƒ~ru{†‡to|z~‡Š™†x„sŽgw|{uzi‡rˆ“ŠŒx†…€u‚—„y„y…{~„u‚}z†s{zzƒ|w€}{‹…r€vgymu‹q„‡|†z‘†‚z‰u‚Š~xzw‚‚Š€‰u‹p{†z~ˆy‹Š†‹~twƒ~†o‡‹Šˆ~s‚~Šy‡{‹‘ˆ„~‡„„ƒ“‚Œƒv†rp‰|wƒ‚u†y}fpyu…}…xyzŠ†€{ztp‰txw‰wy†y{…sƒ„x|—{Ž„ƒn‰…•v€~~„qtoi}‚‰ˆ‚nw‡c‡uvŠzwzŠz‹ˆ|—‘|~tksˆl†{ƒ~q€†~˜‹su‹}‚y›„~„gs”‚‚{l†v…„{zƒ…|y‹fŒ…qs‡st…€™†xˆv„‡ƒbyrjv‡|x€‰”€xzƒy‡x‡xŒx‚xy{zy€“z‰ˆz…}yw‰v}}l|ˆˆ…Šg|†|~‡~sŽhz|ŒvŒx‚‡€~w}…w‚mqvx…v|se€{Šz{Š~v‡ve†Œ‚x{„…d‡w‰„xyu}˜…“zr†{•…|¡|h„~zƒŠ†c€z†xr{†ƒ„mmy…vˆ~|v{py}~zuzƒ…‚{|‚ƒ{|Ž|~}w{ˆ‡‰zˆ†~‘yx{ux†{Œ„„‡ˆ’w„s|‘†‚Œjuu~ŽŠˆ~q‹~’yvƒ€z‰†’Ž–{~‹py‹€d†ƒ€}s~x€—‚Š€~€}Ž”…š„}z|ˆˆ‰‚’qs‡~x~x‡‰dx‰w|ˆ|x~‹€rx|u~–‡s~^z~‘…€xzx|¢|„€}q}uow{‚‰o…ˆ—z€j€e‹{s†ƒ|tŒ‡‰ƒ†”~…‹…€Š‡‚ˆ|rn‡f’ƒp~pv…‚{’^}’…~}{~€t›‚}z„{‰ƒr€ƒ~z{„}…prtz…z€y…tz{†{‘wz‚y~„|w}wˆ‚€„z‚ƒ‚q{}‡i{ŠzŽŠ‚{q„ƒ|“‹‚~Œ‡ˆkv}•‚†‹x€~|‘xvmm†w{‚~Š†›Šp|yŒ‡}gv{~ˆlzwrƒ‹–o€…}ˆŒ}„‹k˜€x…|‚|f{„|ƒ}€x˜Š~~‰u|…txzm„ˆ}…ykx‚u‡ƒ‡‡…‡y‹’wŽt‡…ˆzƒ{„}yr‹wƒpˆˆ„vkƒ‰Šd…u{œ~€™|vn€’ƒ‹‰}x‡uxv…š||…‚„…hƒŠu|{{{~z›rx~}|†wz†m…‚Ž…z†ŽŠ‹„~|u€wt~¢{ƒz…†uv‹n{n‡‘pylz„’~vg‰†—ay~‚ŽƒŒ†ˆw†lt„„…xq†}tizw‚ˆ‡|zwš€‚{„zzzvv˜ˆ†x}}yrˆ˜w……‡„‰‚„{sœƒx|‡~ws‚w{„ŽŒi‚w’‹xz“†…€m‰„|‘~†s}€Š‚„~ˆ|€€mz„r€n‚”}…Ž…r˜nv€{v‘{z€_‚‚|‡yr„ˆh~qˆ…ˆ~„’z’ƒu„ˆ~u}x—{wx‚{‰~c…~„€Œƒ‚„”‡x‚…‹|~u|q€yo|}}……Ÿ€y€‡z|„zv›ƒŽ~qy…z€ƒyˆƒzŽxxxytywŽ|”‡|y|‡‰Œ}†Ÿ„x”€‹x‰mŽ}Š{mƒƒŽ“‹“pr‡u‚x‚†y€„yyyy…z†„„y‰|vu€…v~~Œw„zk~lyŠsx‡t‰z‚…y‡‚x~}|Šƒwy‹€|„r†w‹zƒ€z†„€}{z~xˆuw{w†„ƒ{k€ƒ„Ž†Œ‹‡uzqz…|‡…ƒ…}vt‚~ˆ„v|Œ|……‰‹ƒƒv{ow~‚tyv…‘‡„yz‚z}}uu~~szƒ†vŠ‚|…z„~y}y‚~{}€|z~~tƒ|n‰w†…€zˆw‡ƒv”qq{xxy‡}zzwr‹}…b‚ru~yvu’‡„~€|…Žƒ~s†}„€l‚wzŽ~zvƒ|„‰os€z…~x‡zn„x~‡rvx„}‡x…xy~z‡}‰„€„|~}wy{r†…z‚x‹ˆu‚}……Š|ˆ{ƒ……†yƒ†ƒ~ƒ‚ˆ{~‚€‹wŠ€|”w‹…‚r€~…~|}{uŽ|Š}}†}rvtƒ‚}ˆ‡|‚‚ƒ„Š}sŠ€yq~€z™{x}‚ys„sm”€€zxus…s‚€|~‚}w~p~||ƒp€€~€|t„„…vƒ~}{Šz}~~{x‚q€wrzƒƒ‚‰‚z‚ƒz‘z€‚‚vŒ†z{€~“…}‰xƒ„}xŒxw‡|…{‰w~xwˆ~Ž~{}Šv€onˆ{}ƒv‡€„‹tp~w‚€~uƒŽz€l{„~…Šv€†}™ƒu‚x‰…{{ƒ‡ƒzŠz}‰|l{‚p’‚‹xy„}Œ‡€†‚w„w}…z†}}r|y…‡z‡ƒ‰Œƒv}…‚…{{•Š}…}}€…u…sƒ‚y……z‰~u–x‰}{„„}€{u‡yy€s‰{|‰g‚z‡|Ž€Œ€Œ{sv“|‰…}~{ƒ€ytux€‡€~|}‚€€†~€†sƒ{yƒ‰zƒ|yƒ€z‚‡w‚‰†{{ƒ…z~vƒyo{z–‡sŠy‹yywyu|…x‹m‹|~ƒ|ˆ…y}‚}‰h„~{ozrƒƒ~€‚sŒgxl|„|wz„x{pp}€~}~r†y}„‹~xŠ|~s{†~uzˆ‰u†„q‡‚…‹pxˆ‚‚…tƒ|y{„uy„t…€z‚}‰{}‹†p‡u†|{{uy„w„‹ƒ}xŒ‘ƒv~…u†zƒzx|†…’x|t{ru…ƒ~sŽuƒƒmƒ|zy‡z‹”‚…|~‹xypzw‚~ƒws}ƒy•{{†€‚‹w~‡†…€ww‡q‚†w€q…„w}yyƒ„€~|…z~}†yt„{u„ƒ€…u€t}yz…†t†€vv{iŠ‡v|Œ‚„–…|x}p‚‡y”{~tx‚o‚ƒn€tƒ‚y{ƒ‰€ƒjo‹x„‡„n‰m|”{xˆxƒno†}„xƒ‚{w~~€u}‚†}ˆƒyƒ€ˆw„zvƒ‡|yy„vw‡p}‚y‡‚~‡‚€‚†‡}~|z‡q„~z‰{‡‡Œ‹Œ~€xz‡‚}…|‹„w„}‡z}…ˆ…||‰ˆo{w|z€†ƒƒ~zˆ…vw~œuƒˆ{˜ƒƒ~}{y{zwƒ€{…ƒ…}{o{„ˆssŒƒz…u…}}‰„yp~ˆ}||rvˆ~{†{{~†ˆ‡}…~~ŠvŠy{…}yy†ˆƒ}z€yq‡yy{uv†p…yzŽ…|}€x|n|„|€xu~ƒ|v~ƒ„‚}}~yn…y€z„~…x€‰Ž‚‰v„‰}}|vkl‡~‡|ˆ€†yn‹s{}z„‚vm‚|‚…„‰‡t‚}…|ƒz{‡€xv~„}‚Ž||}‡|†…†{€€{r~zz„|‡ƒ}‡~v~|ƒ„Ž…vŠy‚ƒ†yw}zƒ{|txŠ{vrˆu…t‹|’ƒ„v„Šz}‹p†x‡{|z|qhwx|}s‡ŒmŽ~†ƒ}z‡‰wvj…~{|‚†€sƒ|‚u€…u€‘„‡…{„xƒ~|q€k„r‡{}‚zyx|‚Œy‚‚w}‰ˆ…„z‰‚…~‚„†„{r‚~~„t{|t™x„y‘~‚–}…€ƒƒŠ‚~•|”…z‹}ˆ{pƒtpz„v‰y~m}{‹z{|p~€™}‹…y…|z~jsƒz~…|u…~††wƒˆ‹~sy€~„ƒ…ˆx€€„{ˆu€~{…z…€€‚ˆq‡‰‚~{‚…|ruy‰q„uuŒ}†y„‚sƒ‰Šz‚|ƒ~†s“s…„‚ƒ~ˆ}rozƒw‚|t…xp‡yŠ„v}‡‰€‡|v‰ƒ„…}u{u|xs‚x‚{q‚u}zzx€}…yw„„‰}u€z†z„‚yy…|‚~{{{~{yŒ{†…|~€wƒkk€|‡}†€}|w~|s~y—……ˆ‚x†{‰††uƒ}„‚~…Œuz‰Šu{}‰v„‚|‚yŠ~vƒx‚…}{}†y…{•……u|}v…{…~s€nt{|yoyt{…qƒ‘~„˜„…~‚€€ˆrv{x}ƒpysw‹–x}‚}€‚…zƒt‹}ˆzx~|†Œ†}…yz‡r‡„t~}zˆyzzuˆ}€}ƒ‚‹‚zy†€€‚‚‡€ˆrzw”y‡‚}Œ†ƒŠ„“ˆp~{u‡us‚j€‰o€o~Œ‡v”t~‡~rt~…ƒ‚o‚|w‹‰ˆ„|‚‚|‹u|„v‚~„ˆ‹…|z€‚‹€ƒƒ‡…|z‚†€x‚~‚t~††x{…t„ˆj€q{€|Œnˆl†‚x†yv‚ƒ™‚{„€z“zkŒˆ€|…}ˆ„px‡~‚…„‰~„xxz…{~ƒŠo…‡ˆ†ƒx…ƒ~zyˆu‹||Žu|„|‰{~‚m}u‰Ÿ|Ž‚}y‰|evz|}y|‡pttz€zŠ†„mx}€‡‚q„~„ƒ~{xŠŒ…|y‡y‚v–‚yuŠ}ˆ’€ˆ…„ˆrys†|‚ˆ€ƒ’‹…q~y‚xŽ‚‚‰~‰Œox|}‡x€wtwzux~~…|u{}zm‡„vt˜ƒŠ}‡‰€y‹ƒ{r…‰Žz‚}vyuuz{t†u|‘||}xy~†y~sŽ†‰‚‡wzz…w‚}x|‚wr‰‚yŽsy‚ƒtr€…pq„}€„y‹~m~m€}y…€wƒ‡w|{|ƒrŒ‚–„„€‚ƒsƒ}jz|{†{„x‹Žxˆm|ˆ„‚…|‘‰‡z‚‰m€……xu||€Œ}‚yv~{x†w€}}ƒr|tp~‚‰ˆ„|||wfz|u‚xŠ…zƒ…l„m‚~Š€{~Žyˆ†‚{|}„…z„vƒ…†nuy~rj€|ƒ‹y†~gyxs‘~x|{„~hvx…ˆz…~f{|zy‚v„‚l~ƒ~ˆ|xoˆ‚py†sy„{}~~x‡‡~yr‡wzn„tw…€†{…~ryo{vˆw}•{‚‡€xu‰€‰ƒ~†}i„utyxr|…xƒst‘yŒ~vx‚yf{vwƒk~|…š€|~†Œ……Š‹{‚ƒ}‰tsx€{†ƒ‚us…ƒ}‹wz”€ƒ…‚{‰‚ƒv…‚}…{{z‰{ƒƒ€{s…t|†yŒx~z~‰†}‘uŠqu{y{}‹~‚xy‚~„‡€‘yyŠ}…‰€…jz|„x—y…}ƒ€{‚ƒŒv€yt€€w„~xˆo„yx„x‚ŽŽƒ„„|‰€~ˆ†w~€„ƒ‰u~|r‚…wƒp…‡Š{‘Žx‡|‚‰xz~k†w‡|v‹w‡†’‚‰€yrƒ…tr€}‚x{r‡z†y€ws„zs‡‹—ˆwƒ‚™}}f†~}Œj{yvƒc~„‹ˆ{~w|l†‡|„†p–vp{po€xy…f€’“€r~€€„q‰Šz…y‚…|~„€~~|‰ƒ†Ž…~w‡wŠƒz‚ƒ}„ˆx‚~nu„y†y…‚„†yˆ~…’tŠ{}‡Šxu‰tŒ™xƒ†y||ƒz‡“}„ˆ„{x‘…ŽŠ{z{zzy|}‡‚ƒ‹sƒŠ‚~ƒŒo}€€vynw~|ˆ„s|ŠŠ…x‚…z†Ž}…y€Œx€p|‚Žy†…zzŠ€}ƒ~}ƒ{‚…|‡{~ƒxk~ƒ†w|w€ˆw|‚}xŠ~„ˆtwxz€„|}soˆ‡Ž†vy~‰††|o†v~}ƒ~’u…u‘}~|{†„“…‹w€~†}}€Š„•‡€~ƒŠ|xy†xy…{ŒŒ‚…ˆ„‰}{”yŽŠ}}vurw}„}€‡‚}†pˆv…€ˆˆ‚ƒ€€u†}x„„~}‚zƒz‰x}ˆ‰||ƒŽ„{~Ž‚ˆ{„—„€}†vt…‚Š†€‡†‚}‰t~pu‰„|u‚p}~o‡|‡„uƒzq…‚z†|zyx}‹…x…}€‡}‚€ƒwzˆv…‰€z€€Œy„€x‹ˆŒ‰~|q{v•|€…x‰{„~tf…s}{~‡zvŽ{ƒ‚~{~ƒ~ˆw€‡y|yv‡o{v„vŒr}}qs~z}sƒrƒg~ˆ€zu„s|šv†{{|ˆqz…ƒw€~‚{{…‚yƒ‡ƒ„{€‚…€„v†w‡€…ƒ†w‚q”Š…‚|x†~‰’|‚„|ƒ…{…|„o|p}x‰†„‡xžpŠ€„yvv€—w„‚pz‚†Š…t–„‹Œy}s‚{y{z†‚vv„‰„w|~y†rƒ{p–}ˆ€v€yy•„|‰zy|Ž‚‘||w‡}~z{v‡†q}w~~|o„~‡}|‚„y||}‹j‡{}„‰‚‡|z|}~ƒyg}|†‚}z|t“‡ƒ}~‡y•ƒ†{ƒu}‡ˆ~~~ŒŠ‰‡tn}‚‹m‡{v„€o{„tˆui‹‚Œwwusƒl€~y‚su}‰‰zzv†…i}‚‡|†‹{Ž‹xt„x†‡u‘ŒŠs†wsy…€vƒ€‰€v†‚v‰v~€~‚w}…{†}||…z{x€‚wm”ƒ†‘„z„}‰z~ƒ~{€wwrxpzzz…zsŠw‰€„yŠ~ˆ…™Šwyƒƒˆ€~utz‹p€|„ƒƒw˜~}ƒ{|……†‹|~„„‚w„{rvy~v{€|‚q‹~„}…€wŠ†Šƒƒ{Š‚}‡zƒ€{…†ŠyˆˆxŠ‡{s|k{ƒ~‚~…yt}ƒxƒ…y}€{‰zx‰|‚…ˆq‡y|†Œ‹p}k|ƒ‡qƒmŽu}ju€Œ„ot~{œ€„€~~…‡h}wz‡Š€‚‡z”q|y~tc„‡ƒ‡{‡zz‹s„{‰w…€…„t{|„wƒz{w}~yŽ„€„€ƒ‡|‡ˆz†~…†~‰s|y{}…~|‹Ž€•z{–sƒŠ|‡‡‚Œ{€ƒvo|ƒ†svp‡„yŽ€€ŠŠƒ–€yttv~r‡††„w…~‹†‚ƒou|†tort~}„ˆ€|}Š„…€~~~x}|x„€‹†•‡€‚}Š‡v~}r„{‰ytn‡wƒ|zzyt|‰~|{‹†…w}€q~wq‡‘vŒ…x…Œ|q~s{jutƒ‚…w|ˆˆƒ‹{|z}…suzx||ˆ~„|w‚x}xvv}ys‚tw…n†vuƒ~zz}‘v†~‚ƒ‚Š|€ˆ~•‰‚„†‡{„qv|„vt}|Š…€{yˆwƒƒt‚‚z{|}’hŠŒ{†z€{•€‡€t‚€}‡{hx{ƒ€ys‰z‚rŒ~~z…nzu€~Œ…|t€|y…v{Šxˆo’vwŒ€}s~€w ‹‚yy€~Ž‰‚|{y{sh‰iˆxvyu‚syoƒw}uˆˆyŒ€~ƒwwˆˆy‹u‡}u‹}u…m…„kŠ‚‘qg€|€qsq}…ž€y‚mw‰ux~o†w„‚pw‡~}{‡uŠqr‚}‚}wˆ‚‚‰€}zvy„„{yˆ}“qz€phƒv†„‹€q™zŒu‚x„‚“ˆqzyu‚†}…“}}mxˆƒ€y‡u…~~x‡y‡‰„ƒ|„ƒ{~…|‚|ˆˆ|…}Š‡}‚…ƒˆx{“€‡}{†{Šrƒz„zƒ€Š‡‚’…}y†Šwxu‰o|…yyy†‰q…v‰w…szˆ’ˆ|‡}…}s†€zq}€z{Œ‚‡u‹zx‡}„‡‚…{|„{vy‚†~‚}‹‘{‚‚…|‹{l|ˆŠƒ€€’y~|Œy††“~svk}‚‰z‹~†ygƒ…p~Œx’‡x†p€‡ƒ…‡rˆ…‚‚~€†‰‚ŠtŒ‡‹oxŒv{y{€z}x„‹~‰…}ƒˆrŠq‚ƒ„s„x{„‰|Š{‚ƒ„~‰x‹{†ƒ‡‰p‡{ƒƒ‚}ys…^…€‰ƒvu”wˆ|€…„qr}z|…„{{~z€z†€x‚†{vv‡‚ƒ||…~{z€x‡~|tt€o€Žƒ}ƒw†„{’“}‚}{‚x…™‰Šs}†{€”‘}‡‚‚z|„„€m‹‰z‡w{g€„|{…{ƒ…Ž•Œ{‚z†|ˆƒ‚z†|‚ƒ‡ƒƒƒŠ‡ƒs|}x„yŒ†‚ƒ€‹z‰„yŠxy„‡…suŠ††w|uŠ„}€†~~s‰Œ€z„|“€ƒ‰x{{‚‰…Œƒ‡{€†ƒ€”xŽ‚‡‰€|Šz|Žyz}t~„}~€x|ˆ†v~{s†|…{„yˆq…~y€€vuˆxƒ€‰ˆ€o€{|Œˆw™~‚‹v}xˆiˆm…w‰‚{sˆw”x…t‰sƒix‹z„n†‚›xz€‚|€„~tƒz„ƒzˆ’w‰‚Š‚t€…l‰x„vwˆŠu{yz†w‰~x‚‚}w‚€‚‚z‚‚w’‡~…y‚i{~y‘†}Œ†l}{€Šw…‚|‹ry~ƒ}ƒƒ…Š{…{ƒy€j„ˆ}zz}vyt‘}€r~~xŽrƒ…€Št|zzƒ€~y~vp~s†z†‚}r„€…€…†w{u{|Ž‰lˆ…|„t‡quˆ|ƒ‚‹„ŠnŒz†‰t{~{‡Šu|}z~tŒŠ€†‹„ts|ˆ‡‡‡r‘|~€ƒv‚{q‚wy‚„}Œ~z…zq„u”…}wwƒvˆ{o€tzu‚ƒ„‡x†}~{‚r„†ƒ€ƒ{{z…€Š‚x”|…Œ„{ƒ„|{zvxz|{‡xvˆtyˆƒƒ}}‚r…~‰x…€ˆ~……||‰{s€rˆƒ|ƒ{u}‡zyn‚‡sx|qƒuŒnƒo‚ƒ|~y’|†{ŠŒŒ}|q‹|yu€†|}‡Ž€ys|‰l‚{€„ƒ‚‚†‹}{‹Š|„{|‡„€€€}ˆˆq‚rzvx}‚{y‰~‘‹~…~{ˆ{ƒŽxƒ}wv‚|{z†”|{€‚‚‰‚|‚~{}xz}pˆyyŒs‚‚}‚unpŽxzw€}r‚tw~ny‡}zŠ€…˜uz|z€†}ˆ…†}r€„…•…wv~|{~q€|zq{|qr|„ƒ„‹…‚‚ƒwˆy€z…z€ƒ†‚€||y€|„u€‚€{†‹zzu‚xŠ†}vzy|ƒ|tu‡wqzs}†ƒˆ}{}˜ƒ„uxw„{m–z’|€‚ky’z‰|€†udŽ‚|™n{ˆ|}†ˆŒ‘…‡r‰Š}u}vˆovvvƒ~q~Œƒƒ~~w€”{zq|„ˆ}~{|yxuxz‚Ž€‹y}q€ƒw€Š‚„|{z‚…„r…y{~y}y~y|{u~‚„z}y€{}‡ƒyˆ‚„ƒx‹†€‚yh}y€p…€ƒwh~{ƒ„ƒm~’Œu}{hˆ“vƒ{…x}Œ}l‰€{o‚‚}Œˆu~ˆ|…ˆƒˆt}x|~ƒ~}Žw~~~‡{w‹wˆ|…€|y„{‹p~|„‚zuyntƒ{…‡~|p|€{€~Šƒun„|xv‹‚ˆƒ„{{€y€w†‰|}…~w‹}z‹lx~}…‡x‡r“t‡q€~qw‡ƒ„•‡‚y‡l~ts{z{r…}ƒ“‚{sŒˆ…~{{‚‚x•xv€y‚‚…vŽˆ{€nƒƒsw„ˆx€‹€z€}v}ƒuq|xŠ{~ƒƒvŒ~…x~ƒ€€}‰‚ƒ†sŠ}v|qˆy„†ntŠ…}y…w‡ŒŠ~Œm~‰wo†{‹€‡ˆ„€ˆ|€”‹Ž…‡€mq~~‡†~{||Š{m‰usv}yˆv†p€tˆ‚Š}~}Žƒ~}s„„z‚ƒ‹{‚ƒ€x~‰xŒ|€z€~‹vu‡vƒ‰wƒzv‚‚‡Šwˆtus‚…„yxv|sˆv†s‹‚u‡‰yƒŒ{…{“z€z†}…x{{‘u‚‚s‰xx†…„~z€r}v‡}€~‚{†‡tw„…|u‡Œ{uuƒ€|ys€ƒ|‰z„zy’z‚‚~„{ƒkqx}~uˆzŽv†v}‰qtq~‰v’sp}‡~zpvw†‚‚†‘tƒx}Žƒ€€|{{}€ˆ…ˆ†€…„vz}‚}y„zx~o{~‰Š~{€’y€…}Š‹‚v~{ƒy‰„„ƒˆs}†Š—†vƒr‚‚tƒw|„z{n€vs„€€~{ƒ~ps„u†…ˆŒƒzujw€‚ˆyq‹ƒv…s~†uyqy„n†xƒ}‰„€—‰‰|~†w‚zˆ~}x‚|Œ~vˆ{‚„~x{j{|{}€ŽyŠyyˆuƒ‚vˆ‚}†„xƒ}†€‹x|~}ƒx‹rt†|}…yy€•‚„‚~‚ƒ‚’€ˆy„‚~ow~…‰œ|†„†‡}x€‡mˆ†{ƒu€s†”ƒx~„z~l‰|Œ…y{ƒ}ˆ–{€Œx†~{ˆƒŽŽ‡€x‰ˆ’xx‚‚}y|‹††‡€Šw|…‡‚{}†‚y~ƒ|vyp‰x€†rz‰‰ƒŠy€‚{~qsŠr€n‡g‰y~~zm}’wƒ}{{}…|xŠw„ˆ„{†–zy€wp€x„tz‹ry‰~}u|{zxt‡|y€†z”z…‹…‰|~‰‡ƒ…z}y’z~yƒ{pus†|~ˆƒ‡ŒŠŠ|}ƒ}ˆv„…„‚~‚w–ˆ}‹}t…{ƒ†…{„ˆ†wy~…€„{‹†„‚Œ–{€{€|…„‰…ƒ€„ly~v|x‚†oy…q|z†u“{v€’w…„Œ†|ut~€„“y‡~{r…|€x€r}€Œ„yr{|wpŽz‰‚ˆƒ€w}h{~†‚x…‹}ƒzwz}„€„‡}Š€~~xzys{ƒ|ƒ€‡v|{|…‚{ƒsuuŒxƒz„y~ƒlƒˆu—|ˆ‰{†t‹v}„‚~…—s‹„q{yo€w‚yƒq~…}{‡…mŠ€’‰p„€ux‡w‚wy†n~…}‡xr†~x}‹†…qu…‰z~vƒuy€€ƒ~€wwx€x{u‘‡Œƒr‡~„~}oŠ‚zizz„‚yŒŒˆ€€y„ˆ…tŽ‚…‚„}‡…‰‚u‚xz‚‰vq|~‚“€„zƒb{t†}…‰„€w€‰…|‡‡‚€‡zŒƒysn„‘‚~ƒ}|xm‚mˆ‚Œ‚„„„‚…‡}t€y|€ˆ‹€„yzzz‚‡}u~‚‚~€’}ƒo€yy‰k€†…„„yy}t„…‚…‹€†ƒssx‚Žƒ|~ƒŠ~|p‹ƒ~}j…Š{‚|“…|ƒŒ{Št„qmx„}„‚~o‘{‚€r{{‡~{‚x‹xuŽ‰~Š}‡‚ˆz˜{…z{v‡‚y‡ˆr€†…€™yˆ{‹|‚z€}z‹{‡v}‚‚„‰‰€~v„|s‚}yŠ|{xxun}‡‚†ƒ{u†y~Žs€}pƒ…†…}y}vz}|zt{ƒ€rv‚p…Žxˆ†€‹‰~†s‚‡z}{{|z}‡†…}ŒnŽŒy„}‚„v†~{„{tzrƒ|n‰‹x…€‡€s•}yu|vˆŠˆ~|‰‡€ƒ{‹–ƒ‰~€…xŠu}py‡|~y|}„}x†ˆ~…~}€yzz†„z„|ƒ|…„…„mƒƒ„|~‰spˆ‚†zƒ|~~€€‚ˆ~€tw|{……|~zz„„r“{y|„‚‚†€‘w‚rˆ‚–ˆ~”zu…‚yvy†‚vˆ„}ˆ…‚Š|~Žz€z‚xtw~‚{„‚ƒ‚~€}t‚vƒ…ƒz‰‚€…zs}}y}††ˆloz~wx€mv}„€w}{s~t{†{~u€ysƒz~‡‡r‘wƒŠŠy|ƒ„ƒsq‹„‘€zuŠŒˆ‚xu„{Šzz|ƒzŠ€…‚y„‚~y‚|„y~{‚…w{t†}n‹|Š€{Žƒl€|u„‚|Œz{j{…ƒ†}|ˆru„|…t„{…‡xŠzy}l€‡}|w|{Š|yƒt|†ƒyz{uƒ~}|x„{†…}„‚€„v~~u‘|~zˆyƒqƒ‡}}xƒ€€‹z‚}‘€†ypˆv|ƒ‡~z…qu‚w‚v„zrz~n‰ƒt…s}rw‡…v}~{ˆy†|un€Žu„€u‡…z‚{|{†ry~}~|}ˆxyƒu’u€|ƒƒu|Š…„Šq„|wx}{€ƒ|‚ƒ~~€q„€y|{†}‰‚~Š‚}x}ix†|z‰qpyŒŠ~‚€†n…x”‡~}yv—rq…z{‚€|„rz~w€}…ˆ~~xx…|‚†Œ|…{„„ƒ‰‡‘v‚†x‡s€„~vŽ}u|€„ˆ|‡‚x€y|{†ƒuŒv€†{{sz†}‰}{gu‚‰€Ž‡{~‹v}ˆu~usyu…r…~|‚p‡‚‹}€‡ŠŒpŠz{sz}xŠt“†‚~m‚€‰~’„v{y|„‘…}yn‚Š~r‰zz‹w‡ˆw‰w~vu…zu‘Š€zƒo†Šwz…€…tn€|Š|{yz‘wŠkƒ}Š•tŠ€ƒ…}{‚~z…{{„‚Š†}‡ƒm‰t…}y|ˆ€uu}Ÿ~’€ˆ‚‚r{‰„›{‰‡r…†l–…ƒŠx‰€‰xxŠ‡|€}™}–ƒs‹zzz‚w–Žˆzzƒ‚tu]‡‡’‹z{ƒ{€—ƒl‹o„}‚x“Ž‡…€…Š‹w‡›†~vz‚‚…lv`|‡††‚†€|Ÿy~’‡v‡’‡~ˆ„xk{’œw‰|y‰{s…’vuvŠwx€€hg‰Š{rw~{ u†n{‹“{…—rŠp{Œ‹˜‡lˆk~‡lƒ‡‰}†w˜~{›ŒˆyŽ—Œ‰‚|}…‹‰ˆ‚}ƒ‚}„tlns‡xŠŠ}‡Œ{•iz{„ƒ‡{~‚‚‰‚‡ox‚‡‰„}z‡‘~zŠ„ŽwŠyˆ}ƒ}ywrj‚{ˆz€†~rt“w…†–‚‚œ€‚…w‚xo}ƒ“oƒ€€†sn}ƒl{{‚Œ|p}vnylz…‚‡xxx‡mzŒ†„‰…xx™¡ƒ…ˆz{~v’€„}}u‚|ƒ‰‚‚ƒw€‚}q’}}„r††yƒ…y”}~}v‚}nƒp‡Œ…u‰Œ‡‚dˆ””g€zwp…r„Š}‡kq„f|||rƒhhˆ{„gyy‹ssŒ„ƒ‚““~€}}‡u…˜„€sv}zœ—‰kd…|}{„|¢|lu~~|†|‚£‡z„Š~~Ž‡†fl}ƒ‡}‚Šx•}~‡{‹„}‹‚{v‰}ƒŽŒ†uƒ…|ƒ~k€wŠ}{‚‹qp~yv‚ƒ„nsztru•€zšˆ„‘ƒ}x‰‚lƒ…~€~|‡“‡~’nxŽ{Š†‚„azw…q|vn†€lpvy†f}ƒŠx~zz|‹Œ|„gv||‹~zpœ{‰y‚ƒwx‹ve‚w{ˆv‚txogw‚v€„|rt}l{~{x‰…ƒzt‹p‚y‚‡†„tx}€v‚‡|‘~dƒw|v˜–x†z€o†ˆ~n…‚‹‡{~}‚ƒe…os‰‚|„vt‘s˜ˆt”“v†€£Ž„x‹o‚zq†w‰ƒy|„s~y|ux‚‚|‰„{xqyw|~‰•„€|jz„w|}‹ms€}~wxq~s„…~yw~xŒo‰q‚•{…|rˆ†€™ˆgqŽ‡”†…ƒ‡„p|ƒu…£}u€kŒŠ‡€ycƒ‹xƒ‚’†—…xuqxzˆy„gƒ…z„~…eŽ~yƒ†y‹mvx{€z|€pn|{—ˆ~‚Švxys–‚}ˆ‹€v…Ž„˜{|w„‰t€qx}}qxw†‚{i‹~|“’€”‚lg€zhŠm‡ˆ…l—ˆŠ’t~€|pu…‚¤‚{‰ƒ‰w€†¢‹‹ˆ„my}uq˜‘wŠst–Šyœ€u…}‚zyˆ‹„}…Šwƒ|ƒƒƒu†u~‡zyrƒ{€†Š}~ƒj€†yŒ€‚‰†~{z„‡{~ˆcz|nu‰‚z}y’‰s•k‚{Ž‹…‚sn›||ƒ{†‹rƒ[…€x}xx‚Š…jƒp}Š„ƒ„ƒ‚}x}ƒx}Š„„y~|avs}‚||w~€€„y…{}~ƒŽ}‡…uˆz}Žƒw}wŽq…{vƒ‰{{„‡ŸzŒƒ€‚‚‚‚e}|ˆ„ˆ|wx|nzwtw’{‹‘n”vq€‚p‹uŠ†‡|‡}z‚€|ˆzmz‹‚†€„ƒv…ˆt€}}{{t{y…zzvw}„u…}}ˆ…w’x‚u‡p€€yxy†x‹}yˆˆ}ƒ„}x‡}‹€€y{ry‹†Œ‡x€vtz”~‹y†…|rz†‚ƒ‚xy}~r{k–yy|~u|tz‡y|‚t‡‚x{p€ƒyw}zvˆ…w€ˆz‚v‹~‚t…}€{€€ƒ{yŠr…†‚t|†|Š|„€v……vw}Œ€ˆ„}uˆƒŠ}‡{†y}ztx„‚{t{{tsvxš„}ƒ‚w|ypmzˆu{wˆ~…s}ƒ„‚syspvq~†€“†q…oˆˆ~ˆx‰{‰‡x~v|q…u€ry}‹|z„{{Œu‚{ƒ…|x~tt‡„‚†}………}twytz†}zwz|‡……ˆv{€|†‡…~Š„ƒƒŠ‚~†qry€—ƒ‚†n}}€Ž~€Š‡t‡€hnƒƒ{||‡|}ut€~yˆ|~†vqŽqƒ{}‚{…vp…uzzxœ‹~v~j†‹ˆ‹ƒ“~†~€‰‹Š‰|€~†zƒ|‰„y}zƒy~~ƒ{Š{„‹€~ƒ{|‰y{}†…|{|y|v{‚~…‹w}~†qt{…z‡x†|}…ˆƒtŠw‡„…~„€{ƒ„~‚„xwˆ~s{w€‚‚}~x†‰€|€ˆŠ€‡…s‘€…{‡}€„ƒq†y~{y{}„~tt}|…|Œ}xt~z~ˆ~u‹sy‡ny‚€}y}€{zu{~‰€„}}t‡k‡††‚‹z„xƒ‘†z‡‡‚€|nƒvw‚zv}r{x†||€xyy{„†Ž~ƒ‡zv…ttv‡€†w}‡v€…m€~‰€}ˆ{yu{…xv‹q|ˆƒ†…†p€sˆ‚€ˆ€ƒ‚…y„ut†‚{‚†ƒ†tˆƒ}‹‚z…~z}y„wy„y‚{uvŠ{|Šyˆ‰ˆ}…|Œv„€x†~€„^…‡y„uuy„…p„z€‰zŠn{‘s„ƒ|‰‰|—~oƒqz„x}„}‰r‚ƒ‰~~}}w|~~„ym‰‚‚uŠ~|ˆwxy}‰€…s}‰{uŠ†‡ˆo‚y|zˆu†y€~xƒƒ||€‚x‡‚w€~}z|zs€Œx††{†u‚…wj‚…ry‚w‚u†‚„u„n†…hˆ€€~}xˆ‰o~j…ƒƒ‚}xyxprˆˆ„{‰uzŒu€zx~yr}‡‡|ˆ…€|zƒ€……ƒ„ruxx…‚}‡Š†€}†{‚{‰“’‚|{Œr|€z”v…€‘s~y–y‰zŒ|j{‰{„q}z}€˜‹{tvw~~‹tupƒ‚{€p|yup‹…ˆxw}yg‹u„‚„†‚Š~‘}w~}ƒ|„„{†z~z}‡d€€…ƒ}{xy‰„x|~t†„…†}€„xy„‰†}€‚z†y€Š†|‡u€vy~kxrt}{v†‡‡}†m†z„v‚{wƒu……|€z‡ƒƒ†z€Šuvˆmm‚vo†z~†ƒ‹{wƒf†|w†‹‚†mqƒ‡y…z~Ž~‚}‚‡Ž…}~zs‚‡z{„†xvn…€xw‹~|ƒ|xˆw‡„pŒzx‚wx‰}ˆ‚yƒ|€z…vxy}ƒ†‚ŠŠoyqˆz|w€t‚{…€{‚€ƒˆ‡†ˆ„y~sg}z‡†}“s{~w|{v†z‡‚‰‡ˆn}‚„x~sq‹y†x€ˆ{‰ƒ†…~|}ƒxk{uw|}vwvjzvzƒ{‚‡zˆy|€‚{{‹}{Š|~zz‚‚|‹ozsŽ|‰„ƒ€ˆ„€Œ‚ty~Œ…v„Š‘ˆz…ƒs~€~||„†zyvl‚}~–„}x–†‡˜ƒ~‰iƒu…s”s€‰z~€qŠ‰r…p}~}z€Š‡rŠ~€u‹w€|•‹{yˆŒ‡upzz‡€ˆ‡†}y|x‚vz‚|w}yy‰ƒ|†~†}„‚ˆ|€Ž}v€‡‚}ur„zƒ‡wŠvy€zn}}ˆ†xˆnv–wƒƒ‚{Žƒ~‚vr†|t|xv€qj{}ti”{wqŒ|„{~Œ‚yy’}ƒ|‚z}z€xqtŠ}††wˆ…‹}}ˆ~~}z}‡…‡x{yx~}y„xu{~zw~~|{‡xxŒ~~ƒy†ƒ|‚uwƒ€pzt{‡‡}€q}xus{†~n‹„}†f‚…{€†…hz~v…‰vyypo’u‚‚†swuyxƒYŠƒ‡zy„‡ƒv|u€}€€‚€r~y…wŠv~‰{uƒ{z~l„‚‰ƒ€†‚|Ž‚Šyˆ€ˆ‹y†vyyvŠƒ{–{wxp‹tov†™xx€{„}†‘š‡‚~|‹Šx‡|€u‚ˆ~„}~~ls€{„€…‚wn~xˆv„€}†„Œ‚†{{ƒy|„yŒxrŠ{y€|‚€yyw~‚zˆx…‹Œ‡†}„~xŠ‚y}s|~|€€‚Šyn’|ƒx†‰ˆ‡€mŒ…€{„zŠ”ˆy€vƒƒ~„…o~{uz|‰ƒ|€uo‚}€„v‚}r}€‹‚{ƒu}}s‚x‚nvƒ{„„…‚ˆzˆƒzv‡z…ƒpz~t~ƒv|‚}‡†r~{€‚„x„’‡Š~{…Ž„”„m„†„ƒ„~†€nt‡Š~€‚{tŽƒ„•„€}„‰yƒ‡|’„‚~‚yŠŽz…Žw„v‰Š|}ƒ„|‡Œx~z~~ƒt€ƒ‡Š€‰ƒŒ‚z}…Š{€†œ}x‡€‚p}vh‡}‡ƒ„||zŽu„}ƒ‡u‹nr||}‚‚Œxx„}vzˆ†‰w‚†‡…|ƒ{†ƒr~‚}‚‚ˆ€u~„~…ˆ€s„€„†|€~Štpƒ|~zzz~€{‹p‚Šy}~ˆ†‹„–t†w|ˆ}zsqy„~„{‹oyxtx||zyuŠ‡{‚rxz„ˆˆ€††ƒ{ˆ{{‚~w“y„~zx…w„v‘{ƒ†ƒ{’}‹e€‚{yy‚{Ž‚lqy|u‡rw}„ˆŠ‚zywŒ|„€|ƒ{|•‚ƒx…Œw‰vŠ€{‚…y‚~{xŠ}€u„q…‚uz}„Œ‚‰~…€~€‡v†„~Œ„‚qx€}‰u‚„„†ˆ|}„r|ƒ}‚m‚}‡|j‚ƒ}ˆ‚~~z‚t{…w‡ˆx‡ƒ{|‰“s~rq‚ˆwyx„sŠoyƒ~vypvso‰~z‘‰ƒ‚on‰v€tvo‡l}quv‚‹€‚|†}€y{z‡{zz|{wy}„}„w†}|‡‚~„v‚~‚yr…„„wŽy‰~m}‡‡}|ŠrŽj€ywz}n}Š‚‚zyq‹ƒ…u{ƒ‚w‚|‡o‚x„€†{~ˆ„‚u~€…x€ŒxŽ…r|„…Š†}Š‡}‚r„|ˆ‚‚€e†|}…yz||xx€~‡‡ƒ{{‚w€“{~y€‚†‚ƒ|€ˆ„†ƒ}{ˆ~‰y{„‹~y„ˆ}Œ‚|~y‘o„ƒ}…„€Š…~c|u…}Œ„wˆp“}„€z~~u…g}~ƒ‹‰mŠ~—u|‹€€un}”‰{u‚…‹xˆt}ˆ{‡‚qx‡€{Š‰|‘q€Œsˆ‰zt‰~{t‰„‡Œ…†}y…v~|tˆ€„Š…„w‹y€}„||‡…‚‚‚†…q~~„ƒzŒx}ol€ƒ„‰w|‰vzƒz‚ˆz€€ss|t€‡}v€qˆ}rqp}ƒ€€‰sŒm‹|x€~Š…hsy‹€w~‚pp‡yyƒ|{‚Šp†v|ƒ…~…|y{ƒ‹Œ‚zŠƒvŠq„Œ~w~€…z††„‚}~…z„v‚~€{{‰†ˆ‚ƒl…ˆ{Ž†|…ƒx„uhwˆ‚{ƒww‡‚~k€…€€s‚ypnˆt‚„€‹wn“~Š}x€v}€y„p{ˆƒzy|x~kt||qn~uy}€†„y‰|Šqq‚u{‡„Ž~~„…yƒ€|…~†|~uz‚qˆzˆ~~zou{„„szut~y|mqu~‘ˆ‚„‚„r}tv„z|‰›qxqz}}swˆ}~†g‚~~x}vzu‚u„z}x{ƒz‡yz}…„wu…u~|‚yt†t‡ƒŽx„€}Œs~zŠxŠ…‚‰ƒ„…†~v~}„pƒ|Ž‡|ˆxt…|xvy‡tw€}ˆ‡‰~~vƒyŽh‡€€r…|‚‹vz{…v{€{}“‹†{v}x…pv€‡x‡€~x‹u~pƒt|y†r€{€z€u}w‰uuz†„‚€†…€ƒwnwŒy‹y}w‰r€xk}‚u„~yŒ…z„†y€zvkl€}wuy}~pvˆ„„y{~…|…†q„so€~…zŽk…xzƒ~€ˆxpz~€„|…u‹~‚s‡z„x‚z{ƒuƒz€xˆƒ‚Š‡s~~r€}|xˆvy™z‘„|†„Žz’†‚~}„€‰ƒ„ŒŒƒ‡xjqzƒˆ˜wƒww…™s}|sp‹~ix‘|•~}€y†Ž…Ž‡Š„zu|ƒy‘‚v{~yŠˆ‚†…|ƒ‹ƒ~v€yrƒ|†‚y~ƒw€ƒ„†…yŽy{|‚‡„ƒ‰xxw„}~‰|…xw€„}v|€’y…~xƒ{wz—‚ˆxƒ‚ƒ‹y…„…“„r‡†}€{}l~{w~z…†}†‹„Šy…wty„yt|…Šƒwzx„„}„}…}‚~|‡m|~u}~r‚h‚zˆw~Š€m„}w‰m~‹{|ˆ{‡€wŠ‡‚yzwŠl{|„†ƒ||q€v}†€xƒ~„€ƒ…€‹{yˆ‚•w’ƒ‚ˆ}ƒ|‡pqx„~vŠ}‰‚‹…ƒyt|…‡†vˆzuƒv†{‹‚n{tw‚„}ƒ{„ƒ…xtŠ‰…€|†ƒ†‚{€€m{}yƒ€‡wx„€Š|~~z„„|…o‚€†|~t–bu‡|€€‹|q†xy~|~‹rw|}wxywt}y~Žƒ{~ˆ‚Žƒz€…€|~{{sƒr‡}€‚~ƒ€„|u€{u~tŠx…‡o‰yz|„{„z‘„|{}w|ˆv‡v„ˆ|Š„t|~†yt•tn‹lz„w‡…|q”qŒ}y‰Š}~ƒ‘‘||‡f{€s™€„„…kˆp}z‹}{x‚}xwi~€„z}“~ƒ}|‹xƒ…‚z‹z…€‰yŠƒx{€x~w~j€ƒxƒrƒŠ}…vŒ{{…ˆƒ€‡€rŠu…‡ƒw€}……}k~„~zp€y|}„vx‚…‹ql|v‚r}€x‡u{…‚†„^žáÌÿÿ„âl*®NÿÃÿÿ÷!‡“2ü¯ÿÿ¶ÿ3"„ë›ÿÿÈÿI·<hâŠÿøÜÿcÉHVÖqÿéìÿz× \EÃTÿÓûÿ“åm+©EÿÈÿÿ¥ò$Œ‘.ü¦ÿÿ³ÿ8‹vé“ÿÿÃÿM²7_یÿòÚÿ[ÊMKÌnÿèëÿyà`=¸[ÿÚöÿïp +)¤AÿÁÿÿªý.”2ÿªÿÿ¿ÿ@¤$ |òŽÿúÑÿRª6bÝxÿñÚÿlÅHIÌqÿ’¯fq…‹|{xw†‡z}t€|z‡tzŒ{t~y‚ˆ’ˆ‚w„vŒuŠu„~pˆ|„ƒz€†˜‚~†u€oŒw†~‚‚‚ˆ†„zˆ{Š€ry€l‰~ˆˆ~}qˆn††“Šwx}…{l€s’u†ƒ€…€~}uŽwƒ„“Ž|yww…mƒyzƒŒ„†…w…}‡z†w‚qzpj}|vp…~‡p“w„{‡…}w‹z~yŒ{“w}‚zŽ‡Œ|…~ƒ€ƒ~}~xŠ†Œ‰xjuo}ˆ}€Šs†sytn‚‰y‚Žz~{„qƒ‚€‚s{|ry~…z…‚~‡}q€‚u…{cˆ|ƒ„‰ŠŠ›‚‹‚t~…|ƒmvm…}…xr{ƒ“€‡€Š„‚y~‚…|yywu†‰†|…z…ˆ}…u{‚„nlt‚ƒ„„h†p†x|}z|vwqˆ{‡~ŒyŒƒ”}…€Œ|„|•{‡||py{‚w{„y„{|zw„~ƒ„‚‚o€t‹€}w{‹|‚‚{Žƒz‹‰€‡y}z‚}{€dt…‡z}†xŒ{„tz‚~}xo{xvwv~ƒ‡…’‚~†yz€–r~~{†‡†w€‚~wz‚ˆu„zŠ†~‡||‚‚r…~x|x|~~x„kƒ|ˆu‡Š{³.ìèñÿqØa8¼[ÿÙýÿŽãv,­GÿÆÿÿªù-Š›1ÿ¨ÿÿÀÿ?¡& {ï‘ÿùÒÿQµ6]ÝoÿêäÿjÇKGÄ`ÿáëÿ{Þa0«KÿÅýÿ–î ”8ÿ®ÿÿ´þ5›#ñ•ÿÿÀÿA¶7kã‹ÿûÙÿ]ÀEX +Ø{ÿèïÿ{Ø +XAÄYÿÙûÿŽæp0ªEÿÂÿÿ¦ô(‚•*þ§ÿÿ¸ÿ:¥ xì‘ÿüÅÿK¯2f +Ù|ÿìÞÿhÆIKÂpÿ‰´rq„q†€~ˆ|‹t{xˆˆ|€uvqu{‘ƒ…ƒ‡‚yyywz„s|{z…{y†ƒ†‘€†‡€wˆz|x~‚}{x€z•}|‚{|…s‡x‰{…}€ˆ‰xu„€‰„ˆ€}„fvz{t‡w|~Œ…’…‡Š…tƒx~rtx†|…{ƒŒˆˆ‚}{ƒuoŠ‹v|x…yy€y}‹€}~~’}{{v‹‰z„‡x‰†z}{~‚Œwv}v‡€z}vvuƒv{ˆ~{x{k~‚}†zv€€€r€ƒyww|‡zax€‹oxz{t~r‡†s‡€~x…ƒ‡~{}w{pŠƒ}umrz~~†€}ƒx}‚~‹|~‚{wsu}xˆ€{†ez|€ƒ|Š†{}‘}|{€h}wk”{„o€~€gŒt‹u|‚Žˆy‰~zw„s”Œv|tyzx„†‰ŠŠ„|ˆi‡u†|x‚~‹†‚}z€…‚†Šƒ|{Œz~‡}„|‚wˆ|‰|Š€‚~„~zv}|„…y}€‚~’tw†xƒƒx}‚‚†|s€ˆƒ{|p—y…€‰x‘q{z€†zx~m…|Ž„„s€‚‡Œ~Žwy„‡|w‰vz‰†Šx†~‚€„zŠ‘|~v„~–†d¾„ÿÿ›÷ŒŒ0ù°ÿÿ´ÿ:£( xíœÿÿÌÿQ¹6däˆÿôÞÿiÎNRÎlÿÞöÿ‚àf?¹JÿÈÿÿ›õ*w'£<ÿ®ÿÿ«ù0~!óœÿþÄÿC¥"iâ‰ÿ÷Òÿ`¿AOÍsÿéåÿlØY>º]ÿ×òÿˆèq-²IÿÆÿÿŸú%‹”3ý´ÿÿ¸ÿ9!‚!õ¡ÿÿËÿV°2i +ç~ÿñâÿmÀ?UÐrÿßðÿzÙ `=¼IÿÍûÿéq%—<ÿ¨Ú‹xu•{Š€‚{€|wxxzxƒ}{ƒ‘~‰t…€z‚€……†t‡b‹|Œyq†~‡w„€}ŒˆxŒ~~‚z…w„toƒuy…|…x‚ƒ~uzuƒƒ†ƒ‰zƒr{sz{}zŒ~ƒx„i‡{}‡sz|‡‡ˆw{€}zƒt€p€t•m†…l‚ŠŒ~†v‡†uˆ‚nruxu{‡z|‚o“ƒ„ƒ|Šwyxrx‰utˆ„Šlwx€„w~Œ~‚{yu~‡‰ˆy…~{„…x‚ƒ|†€rŠƒ…z}„ƒrŠ‚ˆŽy€|z‚Œƒ‚Ž}y€ˆ}…‹Š‚ƒ‰…ux}x•{{~€}~rˆ—{‡€…~{wwŠ†Œ}‚‚~sm…Š„~qƒwo†}‡vˆƒy|‰m}m‚t{|„…Ž}‡}y}‹„y•}}ˆw†}‰zy‚€“‡}Œƒ…ƒ|‚‚|…x{ˆq}z|z…xnwzz…vz†}z}†ƒŠ|yu}‚z‡…‡|•‚y’y‚yqyuqy|gŒ|x„{vvmŠ|……q„ƒw“ŒŽ~„wˆ‹p~vlƒ~|wz€{‰…{~~‚|€||eŠx~|‰„†Šƒƒ}ˆ~yvƒw|xx~‚}††~„€v|sŠƒ|ƒ|~ˆw~{Œ€}€wŠ{ˆ^~.¢Mÿ×÷ÿén+¤Bÿ¿ÿÿ¨ö.€”,ÿ©ÿÿ³ÿ=šzî•ÿ÷ÑÿV®9]ÛzÿïÛÿdÈODÃeÿÛëÿ|Þ f+³OÿÌúÿ•ï…–:ý²ÿÿ­ÿ/!{)ó¢ÿÿÂÿF³3nêŠÿòÞÿ_ÄD[ÔuÿçòÿyÐ`DÇXÿÐþÿ‰âm, =ÿ¾ÿÿ¤ô(‚ ˜.ý­ÿÿ·ý9¢ têŽÿÿÄÿF´7b݃ÿîÜÿ_ÉPAÆdÿãíÿ|â +g.Ç\ߋrs‚}xŒyˆ…v{‚vx~vƒ‰}}†x€oz~{†„|t{}’„ƒ„~xŒ€|†€Œ€€|‹o}|‡|…ƒ€„‚€~~zv‹ŠƒŠz{|‡‰ˆy~}ˆo‚n’ƒwˆxƒzˆyˆ|}‹ƒ„||Œ„{|€~ƒ‹~…w~„~rpr‹j…‹z‚‡}‚†ts‡‚…‰w•}‚†y†z~x„•vz‚€sˆ„xj~€v}…ƒŽ‚lgzzƒŠ~{‹ƒ…}”xzŒ{„{p|{€y}‰}ƒylyzzny{yw‚w‡‡~{{–y{ˆ|u‚’r€wvx‡‚}}„‚‰~~{ƒ†}…„‡}r‰v{~‹ˆ‚tw{~€ox|{~xŒo‡Žƒu€Šh…~zxyŽu„y‡~ƒey‚{‚ƒ€wwr—z~…y‡}ys{p‚„|‡pŠz†‰}†y€{xƒy{ƒ„„„‚{t‹Œ~ƒ~w‚…{‚u{vyŒ}}†‚q~t~~‚y„pwy{…Š„‹~‚€‰{w„v{‚u}~‡}†„yv{~uw•}Šˆ|{xu‹rszuƒ†q…l{„‹……v{ƒ†s„yqƒ‰€ƒz‰zt†ƒ‚xƒv~ƒrq‚yˆ}|vy€mƒz}„„‘‚x‚ƒu‚~„jj×9Š;ÂPÿÍýÿŒås*©;ÿ¼ÿÿ¤ó&‡Œ&ö¦ÿÿµÿ9ž$säÿûÈÿJºEaÞyÿößÿ\ÍUHÄcÿáðÿ~ä h8¯TÿÎÿÿ™ô!t %£;ÿµÿÿ´ÿ7Œ!úžÿÿÅÿI¬* +téƒÿôÙÿ_¿>YØnÿçåÿsÍRC¾\ÿ×óÿâg0­BÿÃÿÿ™ó}“5û³ÿÿ­ÿ/™& ‚*ô¤ÿÿÃÿJµ5gèÿúÜÿ_Ã@Z +ÚsÿéëÿyÖSP‘u~†x…~t{u…€yƒ|{ˆzzˆ|Žzu€„y}…tŒ|zz„€‹ux‚Šw|}€wy{†~tˆ}u„ˆ{€v•yŽ‡n„ˆv‚~‚‘†jutvˆ†|‘t…‚Š}—‡€‘vzk†vˆŠƒ…‰w€yƒ†v†rƒˆ€wvwn}|q{}y‘{‚}ƒ{~v„š‚‚o|…zˆo„s€x}yvŽƒˆŽ|‰†…i‰‚}€€€Œ~€~{|€ˆt~mƒ……y€Šxƒ}j…txxxusˆŽ}‚v}wz}€y‚…‰Šxz‘ŠŠ|xƒ‚ƒvwv‚x{‰‘‹€|Œ‚~„’n€{ƒŠr†€ˆx™|Šq‚v‹z…|zx}vuw{€€uˆl†]u‡~„x‡†ƒŽ{„~‚v|€†Œ|x„‡€†‚Ž€x„qƒ|Š}’}ƒ‚ƒ~nƒ‹z‡y|€}‰}{Š‡ƒƒu~‡nz~x†vƒŒtxxz‚Šyx}t†|}‹}‡|rsqp€‰{y€Š‰Œqwu†~‚puy‰y…zu~}‚‰‡ˆ}ˆ€ˆ†…v{…‚}{Œu‰‹‡~…‹w€z|~x„†t†~{…†}{‚|u„{|……ƒ|}tw|{ƒ€…}‹y{…r„‚‘q„¹xÿÿ´ö*|”*ÿ§ÿÿÀÿ># +zîÿöÓÿQµ8gØwÿêäÿiÍOF¿^ÿßîÿ~Þl,±PÿÇüÿ“õƒ ›@ÿ¹ÿÿ«ÿ1› †*ö¢ÿÿÆÿHµ8lç‹ÿüØÿ^ÂHZÚvÿêêÿrÑWDÄUÿÛòÿ‡Ýi3±CÿÈþÿŸï%‹ “/ü«ÿÿ´ÿ6˜ z!ðšÿÿÂÿC±3hãŠÿóÜÿcÊIUÌvÿðäÿsÝ_<Ä^ÿÛûÿŠçv1«EÿÆÿÿ x}wxzu}{wtv~‚q†…‘Švz|~ƒ|oxs‰}x‡x€‹€Œu‚xvuƒ~…ƒ~~~‚y|z‚‡…Œ…ˆr‡|…ƒw€…ƒ‰‚}„‰}‡}|ƒxu…‹Œ‡~€y”||‹t€|xˆ€u|{|w|q‡~z‡zƒ|x~€}{~w“ƒ€†…t†{…v€t}“puyn…Šxx…zˆv„‚tvz}Œ„y‰‚~‘}u~~r‚u|‡†ƒw}„}x“twŽ~{~}wzppw‚‚ƒw~t}nˆ„}~Œt‡’‚o{ˆˆ|‚x•|†yz†~ƒŠw|{„ˆyy~sˆŽ‡ƒ~†€„j}}†Ž{|zw‹Š†‡€x~qˆxŽ~}ƒw…„|}}}~‚ˆ~y‚y‡w}‹€‰ƒ„|ˆ~…ˆsw|w‚‰s‚ƒƒ‰ƒ{|‘n|y†Œn‚xvnx}…u‚~„yŠt…ˆw~~m~…xyzw}u’x€‚vykƒz‚|}…{ƒ|w†‘ˆ‡w}‰w‹gu„†y‚weŠ†ž†z‡x€’Ž{˜ƒ|‚†z‚m‹n‚…~{†~‚…‡—~y‡}†{|{fsvxw~tf~Š{”uu‚x‰~‚ˆ†}”‚t~‘ywšw…„|€~|Œ„p€„…{v…xuÎlæ+8b Ðvíñðÿr× UMÍdÿÜõÿŒám:®Mÿ¯ýø•ð#€˜0ù¯ÿÿ¶ÿB›.…÷šÿüËÿSª,cßÿóÍÿoÇJJ¿`ÿÜíÿzÜT +;®SÿÎúÿ•ë{ & @û½þÿ¦þ(’#†'ö®ùÿ¸ÿE±/ k-ޏÿöÖÿ^¿8] +ÔqÿëìíjËMBÇRÿÕ÷ÿ‰çg7­9ÿÇÿÿœî)k –.ý§ÿë½þ9“#}è™ÿÿÄÿMªD{ ՆÿõØÿa­Nm|Šz}zj‡x„‘t€su†ˆ……z€•„…ƒ{s‚|o…Œ‰„……g‚|‘w‚xq~wwx|‘x‹‡†spwƒlu‚sz„tˆ‚e||xrt~szy‡oy†‰‹‰nsquŒxx}x|ƒž’{yƒwƒ}‚™z‡}z||}|qcynƒ{z‡…‘‹{|„Œ~€„tx{~ƒqŠyˆyt{xgyxvz†‡–~uŠz˜~uƒŠzf{r™‹{†–xx~—pŠ|qvŽ~‰ŽwŒq„ˆ}Œv„‹|˜xs}‚‹yyw„]€y|u|ˆyz”…’„|v~…m{l…u{‰w€}Žnrƒr}ƒ‚Šˆt…Šz‰†‡p€u€{ˆ‡u‡nukvvƒ…ƒ‡|{~‚…–‚‡ust{c|“}Žƒ~“~‰‰lŠmƒ}v|z‡”•…ytupzx^z~†u{‚~n‰oƒ€}ŽŽš‘oƒˆ{}xƒ†vj}~|€~yx€qe|t‚’rt{‚‹Š’Ž€„‹|„yŠ~x€}y„|~x‹gŒ|‰}Š†€‹j‚ƒq’„lŠ~w‘…w”z€|rv‰u}‡c{Ž‰nto€†•}‰z€‚„ƒˆ——‹‡||p„b…s}‚s~y–„~ˆ€{sw†•‘‡—oàçûG”$B|#ôŸÿÿÀåZ¨,håsüóÇÿ]Æ>OÐnÿÝæÿpÚi8ÅYÿÔ÷þ•ìs* GüÁÿÿ®ô9’.û¹ÿÿÀÿA•& _$éˆÿúØÿWÅLf؂ÿàÞæUÓ +KHÆdÿÙóÿÙf5½EÿÆüÿ™í$v!›2û°ÿÿ™þ.Ž z ê™ÿÿÈÿO¤;iޜÿö×ÿf¹H_ÏkÿÜìÿqæ]A¶hÿ¾èùwõp5«]ÿÂÿÿ¤ð&‡/—3ÿªÿÿ»öZ~r…‚€‡xpz}q€„rz†}„wT‹}yx{€‘_‰n‚Ž„‡tz„‚‹rsyq…~}wvmƒˆ’‚x{x€s•x‚n“t‹|x~”Œz„•}}—„–zwŠ‡›„…|€„€z…–sy‚t†‘~~u˜€Ž~vt‚ˆw†}Œ|p‰~Œ‡zˆxˆ‡~~q˜†‰{w„‚ˆ|“ŠwˆmkŠu€‡p€†wˆžo}…r|q|ŽŒ‚…„€n„y‚v‚„…{s„ˆnƒevtqiu‚…Žp…vyt~‚‡~~…}‚yƒ{t{‚‚ˆŠ‡‹€}„†{‚y~‚ˆ{z€€z|ssŠ}†~€ˆ~w}sx†w‰}|‰~u„„~‚|‚Š{…w…v‚‚}r|€pv|~‰‚‰€~~~…‡|„}|ƒƒyr{z‰†r„r…~xjy‡‚ˆ~€…„‚€€|v…oŠvk‘ƒ…~z‡‡z„wƒ}€…€x~}x…zˆ}ƒˆ~xz‚ƒ|t€{|{|}y…w‡{|ƒ|Šy€vtˆ|…†Œ‡†„€s~~uyz~{qƒw„{b‡s‡ˆŒwx{‰ˆ‰}‚†u~ƒ~—}‚y|…|}s€‚wuƒ‰Š{Œxƒ{tv€uwvp{‹‚†|r{yv‡p}‚‡k»–ýÅî j1±PÿÊÿÿ¡ô$„ (™5ÿ²ÿÿ»ÿ=—„ûšÿÿÌÿM¨/läzÿðßÿaÅCVÊ`ÿáåÿsÕ \7¼XÿËøÿåz<ÿÀÿÿ§û,‡,÷ªÿÿ¸ÿ;¬+sê“ÿÿÏÿQÂD[ Ù~ÿöçÿrÒYJÈaÿÝûÿŠäk3°JÿÅÿÿ¢ñ&~ ¡-ÿªÿÿµú4”ˆõ“ÿþÈÿP«(g ß}ÿôÒÿ]À@UÏqÿææÿoÖ^9¹RÿÖ÷ÿŽì v'§HÿÄÿÿý%Œ‘3ý²ÿÿ¸ÿ?¢( ~ð™ÿÿÓÿU¸4kæ€ÿðåÿgÄ@QÒgÿÜóÿ}Ó ]4¼NÿÎúÿ’êk&¢Cÿµÿÿ¨÷ ‡ˆ0û ÿÿ¸ÿ6¡%séÿÿËÿEº=fÛzÿðáÿdÏSRÐlÿæôÿ|âh<»SÿÒÿÿ—ð!z/¬@ÿ»ÿÿªó+‰•(þªÿÿ»ÿ>š }ìÿûÉÿN¬/c ۄÿñÙÿVÆJIÈbÿæçÿsÜ^=¶\ÿÕúÿ‰êh ++«GÿÇÿÿ¨ù'ˆ›.ý±ÿÿ¼ÿ9š#"÷›ÿþÉÿHª)lä‚ÿõÔÿ]¿@VÐkÿæèÿvÏQ?½iÿÙòÿ„ä l#«NÿÈþÿ”ôœ3øºÿÿ²ÿ1’†!ì©ÿÿÆÿG±(xì“ÿÿÒÿWº>dã{ÿôÜÿpËRMÎaÿÚñÿ„ÚZ8´RÿÌüÿˆçq$œ@ÿ¾ÿÿ¢û)ŒŒ)ô¯ÿÿ·ÿ:¢&‚%ôžÿÿÍÿO¶wjqˆ|ww{sŒ”’€€ƒ}€|…zˆi†‡ˆx„~ˆuˆ€wƒ~„}“~„‰zw}}™…~€…†ƒ}ƒŒˆu„~„ŽzŽyxr‰ƒxˆs~pi€{Ž…vˆyzzuvˆ€wˆ{|}|yƒ‡‰…ztƒ‚}|{„u€|ƒ€oxi„uw„…†{ˆr€€x~ƒ|Ž‚u‘‡|{€Šy”y†„uƒˆtjƒ‰Œry‰Œ||‰w‹|~v}ƒ„Ž„yx{w|{vuŠ€„z~|ˆpwmƒƒƒ„~‰ƒz~y|i{………{†{‚Ž‡†…z~‚~…yu{v{…‚‚z‚‰z‹w{ƒ„sxƒˆ„‚‹‰†‰‹‚€}oŽ‡ƒ†ym…r„~}ƒ}yuƒ}‚~€}yy‡q~Œtƒsy†}u{o~~wŽ‰~€u|{€sƒx|sˆ€ƒux„~vq{€v|uw|~€€x|…‡|„o‡z„|x†w†„v|yr‚zŠŠ…y„…ƒ€†€wy~†zzvotˆvŒŒ{{‰zp†‚w}‰ˆ}{y{|~‡†z€{Žt}„zw}qz{}~yŽ{try„|€{ŠŒ~zv‰…‚|€z‡‰Œ‚‹~~„‚ƒg‚{qy{…z}vƒk{ŽyŠ€{|‰„ˆšŠrÞÆõÿkÀGZÒlÿãðÿ~Õ _=ºRÿÊþÿ•èr%£;ÿ¹ÿÿ¦ö,‰ Š,ø¤ÿÿÀÿ> &rèŒÿ÷ÐÿQ·:ZázÿòÞÿhÐUHÌjÿãïÿŒæk:¸NÿÌÿÿ™ó!v &Ÿ=ÿ»ÿÿ±ü5‘”&ÿÿÿÄÿG¥,xì‰ÿöÕÿX³5^ØjÿääÿfÌLIË^ÿÚñÿ}â o0®GÿÍúÿ–ôƒ $3ý¼ÿÿ¬ÿ*—! ƒ+ùªÿÿÂÿFŸ0uì’ÿÿˋ}}{‡t|‚€Š…€ƒ{ƒ…yˆy‡|‚†q†‹{{wj~ww„€t…‡†t{o|‰‚„Ž„‡wz}ˆ…hƒxƒŠ‹€ˆ{‚xyx‹tq„wz‡{}v………ˆˆ‹Žq|p…i}ˆ‚‹ƒu„y~n}‡m{‚y||x}ˆƒyƒŠ……w‡‡ˆ{}ytŠ}zƒŽypxwwx„wˆs{t{†}x‚~Š‹ƒƒƒvpuzsqyvz„…ˆ€Šz}ƒ~Š‡„†rlzy„u~…y‹~{‚{€xzo}vƒyƒw…o}€|x}xoƒ‰zn‚z‰ƒy{ˆs†~Œ‹}‹oz†}‡{pxu„‡yw–z€„d‰ƒu‹ˆy|€z‡˜z‚|w…|~ƒln|‚‚…yws…Ž‡}}†z~„†‹˜}~‚„€y…€p…†„‚€t€~xˆ†{„Š€~ƒy|xƒ……}{ˆz‚sv‰ƒˆ€{{~‡‹Šx~|„€yxsz~‡zy€u|op„v~}x‰z‹us…}‚‰s{–t’‡x~|{z}‰~™…„ƒs}Œv}r‹ƒxŒ„ˆx†xz†…z‚‰‚|Š„ƒ€y‡|ˆ†ywx}{zo€’‰yz{€€€x|}z€‚ˆ‚Šp€|‚„‚„œoëÖßÿ?¤.fäˆÿöÔÿWÄILÌoÿéçÿsÙ^D¸Zÿ×øÿ’ï q4¡FÿÑþÿ¦ÿ*Œ”5ÿ¯ÿÿ¾ÿ@›#~ö˜ÿÿÏÿTµ:jä{ÿñÞÿdÂEOÐhÿØðÿw× ^8²UÿÏöÿén$¢>ÿ¿ÿÿ¨ù$‡/ø¥ÿÿ¸ÿ;©( u!ëŽÿýÏÿQ¸9dâÿõçÿmÎYQËjÿâùÿ|Ý d=¸NÿÌýÿ’ês)¥9ÿ´ÿÿ©ö*‡‰$ô£ÿÿµÿ: "ré‘ÿúÊÿGµ7[ +׃ÿ÷×ÿaÐTFÅjÿéêÿyÞ +T=¸XÿÓþÿœêu -ªMÿÇÿÿªø-‰™.ÿ®ÿÿÃÿ@–% ó‘ÿùÏÿS°/h á€ÿíàÿh¿CDÊjÿãåÿwÕYA»[ÿ×õÿéq&£NÿÃÿÿ’û#Ž‡6þªÿÿ»ÿ=¡.~!òŸÿÿÑÿOº:h߃ÿôÞÿbÅITÏfÿáíÿwÕ [D¾NÿÐûÿ‹ál*¥>ÿ¾ÿÿ¢ý.†Œ,ö©ÿÿ±ÿ1šwå›ÿÿÄÿK¶.làˆÿþÛÿZÅIWÌxÿðëÿzÕ_?¾]ÿÖÿÿèm3²DÿÃÿÿ›ð#~ +!”+ÿ«ÿÿ³ù-•~ôšÿÿÄÿFª)læ„ÿøÓÿV»:RÒzÿìãÿl×ZDÆmÿáóÿ‚çl6³MÿÍÿÿ¡÷'ˆ '£9ÿ·ÿÿ¨û4ˆ1ù£ÿÿÁÿ@¤&víˆÿöÒÿT½5Z +Ù~ÿï×ÿkÈIBÆiÿÙ÷ÿs»9v‘{…„r•|‚Š{{xy|‚‰ŠŠ„„m€r‡‡x„p„‰€nz‰{ž‰ƒ|‚~ƒv Œ†y…{„}Ž‘Œ‚„„~|Œy†w|}‚z‰‹vts‚t|Žvƒ‡q|‚…ƒ}|~~s‰y†w~|‹‡sˆz‚‚~x‡y‡„‚|z‚z{€…Šƒ€€ƒ†„€„„z|}|p€ƒ‡w‰ƒx{|ˆ„ƒ~‘w€€x‡€u‹Œ…„‚vŠ„~ˆ|ŠŠŒ„„{yv‰|‰„{y„ƒwzˆ}„ƒ~•p|”†‹„}~‡†{|—n{y‚…ƒ‰}‚–„€{~‡y‚wtƒ~„†„}ˆ‹ƒƒ…{†~„r|{t~}}ƒy|sy‰}s€|ƒ†~ƒ|z€††r|‡u|}uŽ€‡}vŒt…|o}xz€†}„…u|t€‚‚ˆv‚{uus€’{|…Ž~…sa…rŒ„}mzs†}‡Š€|y‚zw‡‚{ˆˆ|ˆi~ˆr†}g‹v…›ƒxy|“x}„g‡}…t}|}~„w„t€}rzˆ€‰}r‡ƒqk‡„zˆƒ‚ˆ…‰y€t†t…ˆ‡…yt†xjƒ€ˆ’q|}|™}‚t’’Ž…~~ƒ…Œ|~|Œ~|y~x|Œszz~Žy‹{h~Œ€pŽjº”ÿýÅÿM«,f ہÿðÙÿbÆEJÊgÿåèÿtÚb4³VÿÓöÿŠñ€'¦>ÿ¼ÿÿ©ÿ.”/ú¨ÿÿ¾ÿ=¡, xð”ÿÿÐÿZ¹=dÓwÿëéÿpÉJOÊ[ÿÚöÿÞc5µOÿÏùÿšî!u£4ÿ´ÿÿªû,‹ ‚'óªÿÿÀÿA­.há‘ÿüÑÿWÀD] ÕvÿóåÿoÕYHÀbÿáöÿ‚âm7·MÿÉÿÿžó'ƒ ¡:ÿµÿÿµü4–†öœÿÿÀÿD´(n +äƒÿøÌÿ[¼9WÊkÿëâÿiÐS?Â^ÿÙñÿƒá +r-¨GÿÍüÿ˜ù‚ %™>ÿµÿÿ³ÿ6”!‡'ú¤ÿÿÌÿG¬2yï„ÿöÛÿ[¾@ZÚoÿæêÿoÌLEÌcÿÙòÿ‚Ù e/°GÿÊûÿ”í~ —8ü¼ÿÿ©ÿ*•{+ò£ÿÿ½ÿ;²9uê”ÿÿÔÿXÀ>b ڌÿñéÿlÒPFÇdÿÜöÿƒÙ_<¹KÿÉÿÿ•ëw(£>ÿ¶ÿÿ«ö-„‡'õ«ÿÿ´ÿ;$é”ÿûÍÿL»;c܂ÿùØÿ_ËPIÈyÿèîÿyã b3¹[ÿÓÿÿ‘ó$t-«DÿÂÿÿ¦õ*ƒ&š6ÿ«ÿÿ·ÿ>˜ ƒð“ÿùÇÿS®*g Ü}ÿñÕÿ]Á?RÔwÿêæÿtÙYAÃdÿÜóÿç q4¬MÿÌÿÿ ò!~"œAÿ±ÿÿ³þ4•$‹*ÿÿÿÇÿFª2wé†ÿ÷Òÿ\¶8^ÞxÿìàÿjÊOHÂhÿ®Ówn„†{|ŒŠx|„~nŒs‰Š‚{„…ˆw…q~{{€€yw~w……|}€yz€x’x~‚„‚€z‹…–|yˆ{…n|w}ly~|Žz‚‡†‚ƒ‡}wt|y|‰~„……{‹‚y‰p…„ƒŠ{mƒy„~€‚†‚‰„‚…}}€‚ŠwŒ~†€ƒ’€‹”„€o…‰qƒ‚ct‚}…}q}y’~u{z‡‹}‚Š†Œ„„ƒŠ†~z€{wŽƒ‚‡x‡t‚v}„}uy‚‡}{…{yŠ{‚…ˆ„„„{yy‡‰‡p„ƒŠ{ƒ{ywx}ˆˆ‡u†y„|o€{„y~zq|„ƒy‚‚€‡‹‰|Šƒ‰”ˆ€…x‡y…€iˆ„Ž{~†x|‚‡x†z‡p}{ƒ{‡’}ttƒz……–Œ…sƒ†{rˆu˜nv„z‰zwuˆp‘ƒ„lƒz„~€‹}€xyz}o|‘z‹x„tzqˆyst}v”pƒz…ƒ…˜€‹ˆ~‡zm€’s‰}uˆ‰xlƒ„Žy~ˆwƒp…xkŠ}}|~w~spŒƒ‰„ux„ˆz…u~„‡†‚r~ƒ‹}}‡}€xv}ƒ~v|w‚q€zq€|ƒk‚€|€~uv|”y|…}r’vq–y}Šz{~p•ŠŒ{~}›$WvQÿÉûÿ™ô€š8ÿ´ÿÿ´ÿ4“Œ)ûŸÿÿÆÿK¬6rç†ÿõÖÿ_¾A\ÖhÿãëÿtÐ +OBÄTÿ×ïÿƒåf)©HÿËúÿ—2û¯ÿÿ«ÿ7™"~&ò£ÿÿÂÿK°5kåŠÿùÛÿ^ÈJY ÖwÿïçÿtÖ [EÈ`ÿÚüÿ‹Þp2´FÿÆÿÿœê‚ "œ3ÿ©ÿÿ«ü4˜x!ï—ÿÿ¿ÿD¢&pãˆÿùÍÿO¿?YÑzÿðàÿjÔWG¿aÿáñÿ€åg4¯QÿÒÿÿšò!r +*¤7ÿºÿÿ©õ&Œ*û¯ÿÿ¿ÿB¥# nïÿöÐÿR¹4^ØxÿëßÿfÇLEÈmÿáêÿvÛa;µVÿÐúÿŽër *¨DÿÂÿÿ£ú(•5þ´ÿÿ¶ÿ8™# ~ö”ÿÿÉÿK³/z ç€ÿðßÿ`ÈAWÓiÿäæÿqÍT=¾ZÿÔ÷ÿ…à +i+¨IÿÅþÿ”ó“6þ³ÿÿªÿ/˜‹0ù­ÿÿÇÿFª0tð’ÿýÕÿX¾<a á|ÿóÖÿkÎ MNÏcÿÙöÿ}Ù +^8¼RÿÍ÷ÿés%¢Aÿ¹ÿÿ›ö!ˆ-÷²ÿÿ±ÿ4¡( €&î ÿÿËÿL¶4læ…ÿúÛÿ`ÆC\ +ÞrÿëìÿmÌRLÌXÿØ÷ÿ†á_:­EÿÇÿÿ•íuœ6ÿ²ÿÿ°ø0Ž…-ô°ÿÿ¹ÿ7¥(rêÿÿÉÿM½<eá…ÿøÞÿeÊDPÐpÿêíÿ€Ú\BÅRÿÏþÿán+©u–|yu{€hvƒ~€€ytˆ‚‰{€ƒ{‡‘‰Œ‰€u‰|‰ˆ|—|}zƒ„y˜w€„‚€|ƒƒ†}‡„€|n|xu‚~‰~ƒ‹pyx‡v~{|i…|}‡‡x€~†€{€x€xŽv‡u„ƒz€oƒxt~~u‚ŠŠ†ƒu‡w‡‰t•sxƒ…x„ww€m€…ƒpz~ztr{|ƒ€|~ˆ|}z‡}ˆ…}‰…ipumx‚†……h“{…‚tzr†~}Œxg†|‡o{z‰•z€‡ƒŒ~‡ƒywŠq€‡|~††„…{„ˆs‡w‹†~~ƒ}{z‹„€€€xt’‚„„rƒ†zŒ}qu‚~zw‡o–…‡v…sy‡mswou‰„~…’wt‡lŽ‚|ƒ€‚…‚q†o~Š{xp…wuvy~‚z}€„„„{Šz~„‡v|~ˆˆ„|‰tŽ‰~‡…p|~|€‡‚ˆx„ƒ€{Šoq}„€|~zy€ˆ„‚ƒv„†‹v‚|z…z}€ŠwŠ„€„{ƒ†…€yƒˆwy{v†Œn|‰†ˆ~x{qzuˆ„q‰‹•nyw††ˆ}w€g~‡Œƒ‹{txty{€~~…s‰‰y‚”v†~zz‰zŒsuŒ‚||}|‚vx€~yŽ‚Œ}€…{ˆ€Šr¤µ÷ÿßXOÅ^ÿÞúÿŒèt5²IÿÆÿÿ¡ó#„ + š0ÿ±ÿÿ¶þ6›„ö•ÿþÉÿN©-oâ‡ÿðØÿ[¸DLÎqÿäåÿuÛ W>¹ZÿÕöÿ†ê n,žIÿÉÿÿžþ!† %–:ÿ»ÿÿ¶ÿ8$‚%ö£ÿÿÆÿN²1sïƒÿóÞÿ\ÂCZÖrÿäëÿtÎSCÂVÿÓóÿŒãh*«DÿÂüÿšðy¢7û¸ÿÿ¬ÿ+Ž~$îœÿÿ¾ÿ<°1gç‰ÿÿÏ¡xfŠv€•y€uŠu€x„}tˆ{…y‹p„~€s}ƒ~‰‹yƒ€{‚{zx…o{~‚~|{†ˆ…‰y{|‡{‡r…ƒ„~z{‚{~v‚{y„q‰„„ttwz‚urrz|hˆyy‰t†z‚zx|~b€‚‡zst„Šƒƒw~‘€‚z„w‰|w~{‡„{…o„ˆ{vqxo‰y|Ž}n…k‰vo‚€s€‡x˜yƒvy{|~~’p†ˆwy…|…yˆ‰‚‚z‚w€ˆ|~|{~„ƒu€‚z‰„‡‹{{w‘†…‚…~}Š‡uwƒ†t}}wƒ–xvtn……~}„…‘‚s…~„‚…•’{‚{‹’ˆ†jq„r‹|s…uŽx€npŠw|”v{pˆ}|v}”}‡u“{‹zx‰‹ˆˆ‚ˆ…‡€€u}†}‡†‚ˆ|€wxƒx…u{{}zot‚‚…Šx{xxvr‡‰~vxv‚Š|z„zz…p…xz†{~ˆws“~„„v€‚}tzq…††}y“o}xrŽxsm€xƒpvt‰ws„n}”sxwxx„x‡†€‚}x}za…“tŽƒqŠ~u{…vrƒx~y{~~‚qwt‚|y|…uwyp~€|…€ƒ‹ƒ~y……}~~Œ|€ˆ‚u…€™Íäÿ[§(næ…ÿóÖÿb¹<TÐpÿéåÿsÔV9¸[ÿÖóÿˆçz+¨?ÿÆÿÿ¦ý"3ü²ÿÿ¶ÿ;¥&‚ ñ›ÿÿÑÿT·<fàƒÿðæÿiÍMQÏfÿÝóÿuÙ_:¹RÿÍþÿ–èv'ª8ÿ»ÿÿ¦ö+‰‚%ö¡ÿÿµÿ>Ÿ)qܑÿùÐÿT»C\ Ø{ÿòãÿfÎZFÆeÿÖõÿ€èc9°SÿÎÿÿ ï##ž:ÿ·ÿÿ´ü3”$û¤ÿÿÌÿ<K‚ƒŠy‚€z{}{„ƒƒ}{~‚‹‘€ƒ}‹|zvpŠ‰~†~uq‡€‚~v|„y‚ŠŠ„s{ˆ}yzpŠ„ƒ‚{y„r‹‡ˆ……k„uz„~†v…tˆ~Œ‡t€|Ž{‚Œt‚‰‚z„ƒ„{}…‚y‡~r|ˆ†yy}x|x‚t€tuˆl‹z†…‚€‡ƒnm„w~x{y‰z…u‡w„z‚„ƒ‚‘„Šwtz‚€rv€{z…v…ƒolx…€€xw†ˆ…‹{‚…y‚w~~||u‚†ƒˆ|†z}|~†|z€Œ}{€€ƒ†‚|ƒ‰Š{tyw‚ƒ…u|}†…Œ~y„ƒ‘|€~ˆ…xƒ~…n‚{p‚‚‚{s…}…€€{j€‰€†€ws†|wƒ„‚ƒv~r}~~y…€z€x’~zƒw‹€v€x|…ˆƒ{‰‚…v‹s††€ˆqt‡w‚~’}u†s‚…€s€u‹€}fr‡x’€‚q‰y‰}yy{”|hƒr‚ƒty”ƒˆk’~‚„„~‚x„wˆu„qq€{w‰yq’ux‰n€…s…w‰ˆƒz€…q}ƒw‰zu{€~~}o‡ƒ…{w~„r{‹{}…‚‚s}{{y||‚†}vrvx‚}ƒ‹uŠl‰‚€z„ygíhÇ| í“ÿøÑÿK»:eہÿ÷ÝÿcÖRPÄhÿçòÿ€áh:»SÿÎÿÿšó!€ $£:ÿ·ÿÿ¨þ7’!ˆù ÿÿÈÿM¨1méƒÿõÖÿ_º7[ÙlÿéâÿoÉP@¼_ÿÛëÿ„äo'§Pÿ¾ÿÿœø ‰‹3û±ÿÿ±ÿ5¢({#ñœÿÿÌÿO¶9f߅ÿúâÿhÍJXÇhÿæòÿyÞ`?½SÿÏÿÿ—ås-©=ÿ½ÿÿ§ñ(ƒŽ+û¥ÿÿÁÿ+“@~Ž…z‚‚†€~{ƒzy‘Œ|‘x…|~€†|ƒtp‚x{†vzƒx’~‚ƒƒz}„u}Šr|‚‚…ytqoŒ|…}ƒ{‰w€z|†|Š~„€u„„Š†Ž……y‡…oƒ{›‡~„‰m|„‚vz‚‘{‚‚€|y‰ˆv…x‰|‡‚m‡†|›€zzzzs}u‰Š„€€{ˆz|„Š‰~Š{‰~ˆ…y~{|~€‚}„ƒy‡y…z€i~|zw{‹w‹‚urf‰yŽ}o„up‰vzp{‡z{{|}{z†š†ˆƒu„~€s„n~…~“xvvs‡€Œ{~}x€€}n€v†…t}t€‰ƒ…x…ƒ‡}qŽ€|‚~|ˆŠy„‡uˆ~}}‚w|Œ…}†t|~{€{ƒƒ}ƒ‚ƒ„tx~†q~xy†}u|sh–‰ƒzxŠxrh‡ty††nˆŽzƒkn†Št„Œ…€|ƒ’}ƒŠ}s˜t‰€v~†€…z~‰Šq†u…„~w‚Œ‡€ƒyy~~†‚|x~{„„uˆ~†w€‰„z‰€†…xv‰y~x|lzƒ|sƒ„|s…~„zˆ†~†qvq|€„…q}„{Œw€ŠŠ~ksˆ‚~~v“xwˆ‡†~z‰zŠ„…Š~{{Ž~|v|w~Š–…eÙ«ÿÿ~Ô g8¸KÿÅÿÿ”ï#vš6ÿ®ÿÿ¬ü3• w$ïœÿÿÈÿK°2i݇ÿõÕÿQÇFYÐ|ÿíèÿtàaD¾_ÿÜùÿ†ër/­GÿÃÿÿ¦ü,‘/ÿ¬ÿÿÂÿ?ž& +{ô‰ÿüÓÿU´9^àxÿéåÿeÀJJÅbÿÜïÿ~Ý ^9°PÿÍøÿ‘ìw˜:üµÿÿ©ü(”Š*õ¬ÿÿ¸ÿ>®+tî”ÿÿÕÿU¹Ac âÿôãÿsÓPQÌdÿßòÿÝf<ºOÿÊÿÿ”êu& 2ÿ¶ÿÿªô*Ž‰(ö¡ÿÿ¾ÿF£'xì’ÿÿÊÿI¶8\Û|ÿöÙÿaÊNNÌhÿáòÿzäp<¸Vÿ×ÿÿŸéx 0§9ÿ³ÿÿ®õ4†"˜0ÿ¡ÿÿºõ9Ž* +|"ížÿìÕÿG³5b ЎÿìßÿjÁ\SÑuÿçãÿzå_<½UÿÊÿÿìq.ªSÿÆÿÿ›õ&—/÷¬ÿÿÂþI–.û®ÿÿÇÿMª2\â…ÿíÚÿ`²5VÒjÿÝãýWÓVG½G÷Úíÿ‚Õe3«FÿÓýÿú0‹ œEÿ®ÿê·ÿ+ŽŒXà¤ÿÿÂÿA¦9qìÿÿÒ÷g¤Ma àwÿêßÿoÉJQ"»bÿÜêÿyÞXE²QÿÑøÿŽÞr ¢<û³ùÿ¤ö#ˆ—9ý–ÿ÷³ÿ4“!yå ÿÿÅÿF·,)j݇ÿÿÖîv½M\Òxÿîæÿtâ +SK-ÎSÿÝöÿåR5²BÿÇÿÿæw "Ÿ0øªÿÿ§±ey‰‚z}g‚„y€o|m…kuˆ€xxt|m‚}†……ˆˆ”|‚z›uyw†oyo‚m‰ˆƒ†‹‡…ˆq|s‰osƒ}w‡ˆ‘i‚{y|‡€‚‚šiy~rb‡pwy˜‡ƒrƒ~†qsl|ˆ‰~|w‚‹|{nƒ€ƒtƒ—€…Žs€{y~ŒŒyƒ‡‡Žv‰~l{}†v†€zzdƒ|vqƒ{{‹ƒw’ˆ}€‰qˆq‡Œ‘tumu†w’sv‚€eŠxu}‚‚’uŒx‡zƒŠ‡xy‹h•mw‰p|†—’j|zvŽxƒ‚qi~ƒz†sy|„jxp‚~†}…q…‚”€yuw{…€•q}‚s{€‡…‹}y€u}‚j}mxoxƒsˆŠ‰z†}jz‡jx…z†€–€m€p…p‚~sxnpŒ‚‘’}ƒ“„–{f„”†Š„wx|‚ix€s|‡z†”„‘x…plx…}m…hw†y|p›Š|nˆxy€rƒh‚ƒ…v…}|ƒ~‡œ|‰†x‚ƒ|†t|z‹ys‘ms{}‰o‚tŽu{z‚{€pu‘„…‚—z}w}yyuvqt}zw„˜{†‡Œmgw|€~…‡k~k‚{u|ƒ~z~euŠ‡„ƒu…‚Ÿ†{‰yttugyyx€OtP;þªÿÿ¾ÿ:±?"xê“ÿÿÑÿd·;c ÝmþðÙÿrÐ +PTÒ`ÿåòÿ}ß`:­EÿÁÿú™å&ˆ*—8÷ºÿÿ®ö(€#ò¬ÿÿ¼ÿ9›&OڂÿíÊÿSÂFX Õzÿéèÿ€×YHÁPóÝöÿ…ãn -«NÿÉÿÿ›ú9† :ÿ±ÿþ°ÿ4™"†,ä¤ÿÿÄÿE ?} +ã‡ÿöÚÿ^·>FÔjÿçÛÿl°I<ºcÿÌÛÿkåm5­gÿ¿þÿ˜îŒ + !yŽyŠ‚ƒ‘x…|||ƒz‘}ttjwƒƒz‡v}|{›ˆ‹}u}ˆy•“k|x~~xs€l’‚px{|Š„x‚‹t|Š„{‚{„‹„{gxr‰ŠŒ^†zhv}}‡}„vpxƒoŒ•yˆ…„|†c‰Š„Ž‚‚x‡Œ‰~vƒ‡uw}y‡„~‚ƒwˆ~…}€yw}y{‚{t‚x{„ƒ{€~}z€hz„qˆvˆ}‡x}‰‚x~‚„yt……{‚wz„wx}‡xy‚x|ˆˆ|†xŽy„w„–}{ƒxŠ‚€‡h|‡†|ˆ~ru}Šz~‰€|s}‰…}„‡}z}„†‚}r„~}zx~{‹z}}†z€yy{€|{x†‰}}s„s„€‚~vˆv|ŠuŠ‚u€ƒxˆ}Šzxƒx†„‰q~ywy}y‡‚—|„‚zz‰}}{Š„€~€‚|v{~…v€„vxyt…|ˆ‚zw†yz|y„~}€~ƒw}ˆ‡†††u€Š}„Š†}€x€‚{†‡|y‚ƒ€„€‚„x‡„‡Šqnx‚ˆ€‚|‹vt~„ƒ€|m€{€‚‰…‚psv‚…x€~h„ur†€†jz€{•Žƒ||nysu~‡uƒzŽ|wut‚†Œ{†‘}‡ƒv…mccXˆRÖ}ÿöÛÿfÑVHÆiÿèîÿ~ìk4­PÿÎÿÿš÷#„$¢=ÿ¼ÿÿµÿ9™‹$÷¢ÿÿËÿM­( ré†ÿôÚÿ]¼:XÓjÿæçÿyÎMA¼YÿÔöÿŒâg(¡Aÿ½ÿÿŸõ&’.÷°ÿÿ¯ÿ4œ(|æœÿÿËÿL¹7e߆ÿóâÿhÍPTÑnÿçòÿ€âf?¿UÿÒÿÿèq0¨:ÿ¹ÿÿ­ö1Œ’)ý ÿÿÀÿ@ 'uçŒÿøÌÿTµ5bd„Š€hŠ€‚t|lŒzwsyŽr‰ˆw‚~w‹t{‚rzzz…t€p‡Žƒ†‰ƒŠ‚{€eq€wt~spz‡‚‚{…~u‹~€u†v‚†~xxƒ{Žwl‡ƒzv‰ygˆm‚||“ywz‚xs…xt…q‡x‡wwƒuŠƒ{“y…€†x…„xxt~„z†‚pŒwzxy}~ƒ‚€†€z†…x…vŠtƒwƒˆ|x€~{‰zm‰q‡…†zxxˆn€„w|†t€z}zwˆ}†€{‡w}zxˆ€…ry~|€†Ž‰ƒw‹}x‚yx•y…y|‰~~‡…t“{||‚~†wl‡k…€v„€|…„~…‘€~‚}„€t‚|~v…|‘u‚}…‡z~ts“…ƒ…zw…~„Šzt€v€‰„ˆƒ€‹z{€‚||yo„|„†ƒ€yysy€u‰t~yuƒyz{w~€xx~€}‚}€}|€s€{xwx€„}‚ƒ„…r„~zƒs…z„ˆv{ƒƒ~‡x‚~{ƒ†‡zƒ€w‹ƒ|„ƒ…z|„vƒ„‚vŠ|{…€ƒvˆˆˆo…z~‚‡y€~~€||{ƒ€„‚y‰zz‰u„„zŽ„†‹~x„x…€~€u‚Šƒ|wxz‚…y€x~”|ˆv{ƒ‰…{n{y€x‹bbWx!ÿžÿÿËÿL¯1oç€ÿòÞÿeÅCVÑgÿàîÿtÕ X;»OÿÍúÿço( 6ÿ»ÿÿ¤ø'Ž†,÷©ÿÿ¶ÿ:¢+pè—ÿÿÍÿR¼AX Ô}ÿòâÿl×SGÇgÿãöÿäm1´QÿÍÿÿžî"{! 9ÿ²ÿÿ¸ÿ8˜‰÷”ÿúÏÿHª*p ãÿôÖÿW½@SÎkÿãçÿpÐS<¾ZÿÙòÿ…åq%¤JÿÄÿÿšû!“6ý°ÿÿ·ÿ;¡%Ša–Žo~€}{{„ƒ€|‡vvˆsw}yƒ‡€~„‚Žƒ€…|w~‡‡‚‰y|~ˆƒy~}w„€„ux~sƒxˆy~ˆ‚€€nz‘x„‰…„€yzys~v|Š…}Œ‰y€€zz|~Šy‹ˆy~wŠ~„z„€|z}†„z…t‹~ƒxz‚~~z€~~uuŠ„~‚€„‡†€}‹{‚w………|„ƒ€€tz~†€Šƒ|‚v‚|‚~ƒxƒ{€~Œ~}y‚~ƒ|†{zƒq€wz‚}v€‚€ˆz~|‡{z€ƒŽˆv‡zrŠ€~x}Šxƒ{ƒ„…xˆ|wŠ~€„~{‚w„y}‚w‚…€y€u|z„€~ƒ€‚x}{‰y‚ƒq‡~zƒ~y{{x‚€}ƒv‚z‚ˆ}†~w||ƒ}€€x|t„…ƒ‰x‹s‹z~}„xvƒr{y~ƒ†€|z~‚†€z{ˆ}Šn‚ƒz|yƒ„w‘wxŠ…‰‡wƒ…|‰yx}x‚{zˆ{ƒ„x„ˆm|yvŽy|ƒ~†}jwvy‚†y‚Žƒš}x‚uˆ{x‹wŒ|u‚€w{{ƒ}x~ysz||}wŽ~……u}…€‡sxwu}{„~€†esyŒ‡w”ƒwˆx‡€z†{pƒ{ƒwy…x‡Œ€  ‹8õÙÿÿ‰èy !¦@ÿ»ÿÿ¤ÿ+™“-ô©ÿÿ¾ÿ@®+ +sçÿÿÑÿY¿B^ÜyÿïéÿuÒ ^GÉ_ÿÛøÿ„åk7³Eÿ¹ÿÿžñ&~#,ý«ÿÿ´ý4€î˜ÿþÈÿO¬,d Ûÿ÷×ÿZÄHNÌmÿáêÿtÚ`9¹[ÿÙ÷ÿð~ *¥EÿÉÿÿ¢ú%Š”0ÿ§ÿÿÀÿ?›$ Š÷‘ÿþÎÿT¶8e +âÿîÝÿfÆIPËfÿÚóÿ{Ø ]7µPÿÌùÿ‘èrš<ÿ¼ÿÿ£ü%ƒˆ)ó§ÿÿÀÿ;©,r%éžÿÿÎÿQ»?[áÿõæÿmÑRLÉkÿáõÿ€Þd?¹MÿÊÿÿ”éy(©6ÿ¸ÿÿªö/‹'ù§ÿÿ¸ÿ>$næŽÿÿÂÿS¶6aÔxÿòÜÿdÎQEÉjÿÞñÿ|æl9µZÿÛøÿ–õx-ªBÿ¾ÿÿ¯û-Š•,ÿ£ÿÿ¿ÿEŸ$}ñ’ÿüÑÿT³3cÛ|ÿñÙÿdÆEJÏeÿàëÿw×_5´WÿÚòÿít)¤JÿÍÿÿ¤ÿ$‹œ5ü²ÿÿµÿ9–"‚"ô›ÿÿÐÿR²8mè‡ÿóáÿfÁ?QÎmÿâìÿxÐQCÁVÿÔõÿàr+ªFÿÅÿÿŸï~ ™1ý°ÿÿ«ÿ-–‰.÷£ÿÿ¾ÿB§/pé’ÿýØÿ[¾Ab Ý~ÿðèÿpÆOUÑaÿÞóÿvØ\<¼NÿÊÿÿåo'¦<ÿ½ÿÿžö&„7ú­ÿÿ¯ÿ1ž" ‚ï¥ÿª£o€st’w€‡{vŠ€€{}zwzxsx‹ŒuƒˆuveŽy„†‚z‰|Šƒ€oy„~~p}€{s~…|ˆk}ƒ}†ˆ‚zz{w{…{vzu…z€ƒ}w‹q{~x„Œz~…„}ˆŠ€{‹}‰Œƒ‚…}x†{€}€zw‚{~~„w{…{€€‚z†{ƒ{‰vƒ~|†n€yz€vƒ…‚„{}„w€Œ€„‚‚ˆz‡ƒƒ‡ƒŠƒ|…€†‚}v„„|ˆ„ƒz}„†€zzŠŒz~Ž‚ƒ‚z~†‚}{‹‰‰‡}x|z~€|Œ…Švwx~y{z‚x……~…ƒ}Œ~q„yyz€|Œ|€‡xwzr‡{„s{q}€~Šsrx„…€‹{~„zsrzx|xx}‰v{||x~„€Ž€yx„Ž‚…w…~}‰y‡‡ƒ}|~xw~x‚€‹}y}€}|†~…~…x€ˆ{v{†€ƒ{†v‰}‚†|‚ƒy‚€s~z}}zys{}w‹y‰ƒ|…Ž~€|x{wq{{€s~ux}}x~|y‡‚…x‚yƒ|ƒ{Œ„‡‚qvz{|uˆ}‚‹y€|}|ƒ}x‰{‹‰z„s„u€‚}…€~‚t‰|‚{†ƒƒƒ{x‘Š†|uzyvz‚‚vˆ~_ƒ…-o~!ù–ÿüÓÿI®2h ä|ÿðÝÿ`ÄGOÏdÿÞíÿ|× [8·MÿÍøÿ‘èp"6ý»ÿÿ£û(Š1ø­ÿÿ¶ÿ9©.oë’ÿÿÍÿT¾@` Ü}ÿóçÿmÌRTÒhÿâ÷ÿƒÚ^9ÀNÿÈÿÿ—çu(©4ÿ³ÿÿªö/ŽŒ%ö¡ÿÿ¸ÿ:¢#qéÿøÐÿP¹7Y +×|ÿôÛÿcÐSMÀkÿæíÿ{å g<²VÿÓÿÿ•òx *¦BÿÀÿÿ­ý2•(þªÿÿ¼ÿ?£& |ïÿúÎÿU°,f ß|ÿïÛÿaÆGKÍgÿåæÿwÖ^9¹YÿÜóÿˆí{+§JÿÊÿÿ ÿ$•7ÿ²ÿÿ¹ÿ; #…'ûŸÿÿÑÿM®1qé‚ÿóáÿ]»?ZÕiÿäéÿsÎSEÂ\ÿ×òÿ…Ý d-©MÿÉüÿ—ð ™9ÿ±ÿÿ©ÿ-” Š)ò§ÿÿ¼ÿG°5wå–ÿÿÔÿXÀ<c Ý}ÿïèÿoËINÐfÿÝôÿ‚×Z?½MÿËþÿ”æo,£AÿÀÿÿžõ$†‘3úªÿÿ±ÿ1š$u íšÿÿÈÿF¶9iâŽÿýÚÿ`ÈJZ +ÖxÿíìÿwÖ VCÆ_ÿÛùÿˆáe5¶HÿÁÿÿžìy"ž2ÿ¯ÿÿ«ú.…,ù¢ÿÿ¾ÿA£'uèÿÿÈÿL¹A]àƒÿöÜÿdÔKRÌpÿäðÿ{ß\AÂ[ÿÏýÿ–åo-°AÿÁÿÿ¢ï#€"–1ÿ«ÿÿ´þ5• ~ïžÿÿ¾ÿG©(k$֊ˆ‡~py‹}~ˆ„l†r„{z}€~vŠoƒ†x„‚€}†xsz|yƒ~„{yvzxv„|y’{v‰‰„tt„ƒ}‚z†Žƒ‰z„†Šy‚ƒz}„zx}€wˆ‚†‹‡„w†m†}€‚„€~ƒ{‚‡n|~v†ƒ|‰o{yƒ‰y€€Šo‚ƒ‰u€x}w‰{~}…y‚…z‡€{‡ˆ}}‚y…€m†x€‡x{vv“y€‚z„€€{„w‰s‚‚rƒ€‰Š‡‘w„}…x…{}Š’Œ~w„†ˆn”{}‹}‹px„~{„uz†s|…s†sƒ„‰€yr…€{z€„}„‚yyvs‡…€~p|€n‚~w…l~ƒ€ˆt|x†“‡„|ƒ|ŽwŠk…}†€‰}}vˆ„s~‡~€g‰€…}„„˜„tt~{…}ˆs“…y‰ƒ~€xƒƒ€‚…€…~zy€~yx}ƒˆv~†|v‚}†zw}‚ˆ€‰y€Ž‡|‡wŒƒ„ˆ‚ˆ~„y|zyƒxwƒ{Œ{v‹sv”‚Œ„ˆ‹~}‡g‘z›|ˆz„ƒ|ƒ{}Šy•ƒˆ‚|‹u}zŒu†~|‰‚v„tz‚x†{€€z‚}}ƒt‰}v‡ƒ}Œƒv~‡‡{~ˆ‚xvp„VgTv!ÿ¡ÿÿÎÿNª1sì‹ÿóÝÿ`ÅB]Õnÿâîÿ|ÒQA½[ÿÕòÿ‰åo,¥?ÿ½ÿÿŸö'‡‹*÷§ÿÿµÿ;œ&~!ê•ÿûÎÿKº?e Ù}ÿõàÿbÎORÄcÿâôÿ‚àe@·TÿÎÿÿŸëy +¤:ÿ¸ÿÿ°ø/†$ø ÿÿÁÿC¡%sì’ÿúÐÿW¸7_ØyÿæãÿkÒOEÃbÿÑ÷ÿ|àh.µOÿÌùÿ”ó!…˜?ÿ½ÿÿ­ÿ4–†)ø£ÿÿÈÿG¬+ sêŒÿùØÿW¿?a +ãvÿëæÿnËWKÊ\ÿÕøÿÛ c0«GÿÁÿÿ“íy £9þ¹ÿÿ¨ý*Ž‚*ô¨ÿÿ¹ÿ9ª0j ç˜ÿþÐÿVºAT܀ÿòåÿrÊQHÇeÿãóÿ‡Üi:·NÿÌÿÿšëx+¥5ÿ³ÿÿªö.Š&õ¡ÿÿÅÿ?š%oèÿûÎÿN¹9\ Ù~ÿñÝÿaÍQGÉjÿäíÿ{Þ g6¹Xÿ×üÿ•òz ,­IÿÂÿÿ¬õ(‰•0ÿ¯ÿÿ½ÿAœ" ~ó“ÿøÒÿP²/g á‚ÿñÙÿ_ÃDIÍoÿàêÿt×[?¼\ÿÚòÿŠít +(ªEÿÅÿÿú#Ž™8ÿ¹ÿÿ¶ÿ=ž"…(þŸÿÿÍÿM«0vï‡ÿôáÿ\½@Z×pÿäçÿlÐRD½\ÿÙñÿÛ +a.­IÿÊùÿï} !•9ÿ´ÿÿ¦þ'ŽŠ-÷©ÿÿ¾ÿC­( wîœÿÿÔÿ[¸;eâ}ÿïèÿnÈPQ ȊŽ~~}y…}|Šsw„ƒz~‚ƒx€‚†ˆ„t‚€‚‹{y}~‡‰z€„ts}}ˆ‚…Š„qˆx‡†v‡…ƒ‰‚ˆtxˆzx„kx–ˆ‰†vŠ„‹~tŠ€ˆ…|‚{|€ƒl|}z||‚…‹}‚z~„€uoy‚{„€Š…~€y~wƒ‹‡‡{}t}}ƒp•t€‚€|yt…|w‹wy†Œ‚uŒr{v€|}Šy{x|}„…‰…y}tƒxq…„}m|ƒ‚‚s‡†m|‚u„€‚y‡…ˆ‰x{|‰ƒ†~‚w{€y‚|~}€Œšz‚ww€‚†‡w„‚Ž~z|z†s}‹y‡y—€~‚xz‡‘‹y…lƒƒz‰‡…z‰{~ƒ|‚s|€u|zyx‚xy|ˆ}{‚†Š…zy~v€{}ƒyvŠk†}y‡yƒ’€k‹zƒ‡znˆ{‹……‹‰n†‡Š–‚z†z‰‰Œu‰ze„vt‚ƒ„‰x‡Œ‡|ƒrƒ‡{‘‚{ƒŒsˆ‚v‰‰zŠ{v}‰ˆp‹r„Œ}~ƒ‚ƒ„{n‚zy‰…‡ˆy‹yˆxƒ„~€Š‡zqˆ}…{t{xƒ‚xƒŽ€yƒ‹{{xŠ‚mv†}€q}yyxxi{Œ‡|„q„s†y†‚owz€vyxtd‚Bž9ÿ°ÿÿ³ý7“ùÿÿËÿG¥,q ã‡ÿ÷ÒÿX¿CRÓoÿäæÿrÓX=¼QÿÕôÿ…å r "¡IÿÄÿÿž÷"’6ü³ÿÿ·ÿ<£& }"ò˜ÿÿÑÿZ¼?gâ„ÿõåÿpÌKWÑfÿâðÿ{Û]<·LÿÎýÿ–èv'¥;ÿ¼ÿÿ¢÷'‡ˆ$ô§ÿÿ¼ÿ9¤(kåÿýÆÿN¹<] Ø}ÿôÝÿeÒRKÉkÿæñÿzée;µTÿÔÿÿ™ñ"w '¡@ÿÀÿÿ­ù2‹“'ÿŸÿÿÆÿG ' +xíÿøÐÿTµ4_ÚxÿëÞÿiÊGFÈiÿãèÿzÙb6¶UÿÒûÿò #AÿÂÿÿ¦ÿ.“1ú³ÿÿ¼ÿB§) }í–ÿÿÔÿWº5j à|ÿíãÿeÈ?QÎaÿåéÿ|× [<¸PÿÓöÿ‰év'£>ÿ¹ÿÿ¤ø*Šˆ2ø¤ÿÿ±ÿ.£*lêžÿÿÇÿLµ8m߆ÿöàÿeÊLWÒjÿæõÿ}Ö VBÃXÿÑÿÿ’ãl.¯>ÿºÿÿ¡ò&„ ”0ý¬ÿÿ·ý4™ yì–ÿÿ¿ÿB¬.sà‚ÿøÔÿYÅE\ËvÿíåÿlÔbBÃfÿÝòÿ…ér8¶IÿÌÿÿŸï"| (£6ÿ·ÿÿ±ý6”† ÷ÿÿÂÿC¡%t å‡ÿùÍÿc»6_ÕrÿìßÿhÎLFÂfÿãíÿvßk3°SÿËýÿ‘ô} $©CÿÁÿÿ«ú,‰‘/ý°ÿÿ¼ÿ8Ÿ"†ôŽÿûÐÿN­)hvŠrrqvwŒƒ|†ƒ|€€‚™{~o‹†}~Š„‹p€‚oƒ}zƒ‰}•xs{|‰Šwp}}‰Šw‚„Š}…ys|‘€†~yˆ’x{|r|„†xw„yw}zuˆ€‹}…t€yy~ƒ‚{m‚ƒ~sw‡xx~{€~mƒ‹~zv…ƒ‚|u~‡z„ƒ‚}‡upku~xwz}‚†jˆ|tˆ~†„‘xvˆvvzƒ„‚ˆ„x„{Šu‰€u}u~‡€€yx‡}u{zx}{ƒ|y†‘v‚y…—y…€€ƒ‚|‚{z„~„‚ƒy||z†q{€|…‚…z~}ƒw…†{‚vs{‚‡‰ˆ†€††‚†‡ƒfp†l~‘~~‰w”‚z}u—p€vzƒw…zt~m†…ƒoƒƒ„~{‡’„„ƒ}|€€„t€‚vŒwy…v|v{‚x~Št’Š~~„pxŽŒ‹}ˆ{w~ˆz–{{Šw…xy„†Š‡q}}m‚‡‚“€ƒˆŽ~}‡y‰€v†‡ˆˆ}x{u€š‚‡ƒz‡‰ƒŠ…x…}ˆŽ{€}uv‡“‰z†‘Š‰…„{„ˆ€ˆvwzw„wq~kp‚~†~}z€wyƒ…‚z„„u‚yx€xv‚…„qry{…ƒp~m‹‹z}uuqŠ„|xz~sÿ€Ç.kâŒÿÿÒÿYÇJUÎpÿíëÿsÛdB¾_ÿÛþÿðs0®CÿÃÿÿ¢ô*”)ÿ¦ÿÿ»ÿ=˜ƒð•ÿÿÆÿN¬/e ݄ÿï×ÿdÄAJÎkÿáîÿxÒ^;¼ZÿÏûÿ‹ïw +(§EÿÇÿÿ¡ÿ+‹ &Ž2þ²ÿÿ¹ÿC¢'…#ò–ÿüÐÿQ²<lê„ÿõÞÿeÇBYÔiÿÝôÿwÒV<¼YÿÛðÿ‰äo)¦AÿÃÿÿ›ó„“:ÿ³ÿÿ°ÿ2š z%ò¢ÿÿÂÿP¶6oã„ÿûÙÿ^ÄFYÔwÿîêÿqÔcDÊ\ÿØùÿÞi5´MÿÈÿÿ˜ì!x#˜-ý²ÿÿ«ú*“ˆ#ô ÿÿ»ÿ9¦)tåŽÿÿÌÿT¼;d ڀÿóâÿhÍRMÍnÿáöÿâgB½WÿÒÿÿ‘î!u0¨<ÿÀÿÿ©ö.‚”$ü§ÿÿ¶ÿ@š {ì“ÿøÈÿG¨3cáƒÿ÷Ôÿ\Â@VÎrÿîåÿlÐ]@ÅbÿÜ÷ÿ„èj0¶QÿÌÿÿ ñ"{%£5ÿ¸ÿÿµü5‘&ýŸÿÿÁþ9%wìŠÿôÓÿR°0^×yÿïÚÿ_ÆDIËoÿàëÿ€Ýg5¼UÿÐ÷ÿ…ñp +/´HÿÁÿÿ¬ü.Œ™4ÿ³ÿÿÁü9š Œ$úšÿÿÄÿB§(pè~ÿòÖÿX½<WÓzÿìßÿmÎP@¿eÿàíÿsã g3³KÿÊüÿ‘õ #œCÿ¾ÿÿ©û-ƒ’+ù¬ÿÿ¿ÿ@¢"ð™ÿýÏÿS¹"Ph‹„b}€ƒˆuzuƒ†…Š†zzru…Œˆ~{‚Š†}“l‘€zy|†…€‹ƒ{‚…‡}x„r|z‹vw{}}ƒŠp{Šu{†}„z|y{o|€€‚ˆ‡w~~„„ˆx{~t~~ƒ}vzxƒƒˆy~„xˆw€~{‚€~l}„€v€‡|‡Œ„€„tˆxw‰‰}Œ…ˆu…t}uˆl€~vi‡Œ†…ˆ„‰zz{€~ˆx}„z|{€Š|zŠqŒ~ty…{€v{’{xƒ‚ƒ‚‚|ˆpˆ„ˆ€‚q|†~mŠsŒ…‚ƒ|ƒ†|qyƒƒ€}u~‚‚ƒ†„y~w…~‚x€~…€“ƒ~‚~yf|~{~€‚„s~m‰|~v€ƒ„{z|‡€|‹ƒz‚‚|s‰w{|z~‰l{y‚ˆ–m~u„„wˆ|€Š†yqz€‚‰{{~i„…|ƒq€wrŒw„sypƒs}w|zzŽ‚€s€Œ‹sr„x|q‚}xt‚y}ˆ{wjv‚|††‚—vuq…ˆwŒ‚ypz~‚ƒ€wŠ€prƒ}uŒ|€†q•r|“~……Œˆ„nv‡t|~‹Ž‹€Žuy€{{‚€Šƒ}Œ€}}~‡xˆy~w‡ƒw…z{ƒ‡xxx„‚w|VrBˆ@ÿÅÿÿ«ú+Žˆ+þ«ÿÿÂÿJ¤) ~óÿøÓÿW¹7fÞwÿéäÿgÇEKÈ`ÿÕõÿ}Ú b-¬NÿËùÿ’îy +›>ÿºÿÿªþ(“‰,÷¨ÿÿ¼ÿC­-péÿþÒÿX½?Y +ØyÿðçÿpÔUKÊaÿ×ÿÿ‹âr8ºPÿÃÿÿ–éx+¡6ÿ¯ÿÿ±÷0‹ƒ#ó£ÿÿÀÿ:ž&kéŠÿøÐÿP¾CW Ø~ÿðÞÿnÔSGÃ[ÿèñÿåk1½Xʆ{w…Š€nzƒ…‹€y‚†‡yw…sw€o‰…‚„}|~|}{uƒŠ”|~~z|ur€yuƒ„xz‘xŒ‚r„ƒ‚tƒiƒ}€v}…qrnoy‹ˆt„wt„ss{wƒƒƒ‹~y{xq{‡t{}Œ€‡v‚ˆ†‰}~|x†~‰€€~|ƒ‡s~yyŒŠrm€x„qs‹r€tvˆv|€€{t~ƒ†~‚„„„yj‚}€z—Šl{m‰wwwtq—{}Œw…z|{’r‚…q†††{syx{‰‚s{€œ€…€q‡†t…€}ƒ}}„……t„t‚qyuy}w„€~xu‡|…‹u€xˆŠ|um|Œyƒ…ƒjpw`|}‰ˆz’ph™zˆ“…w…„‡ˆp”€…}Š‚y…Œsx{{†‚sˆˆk|s€‰€{ˆz’qŠz}„t€sqdn~„}Š„˜hx~‘ƒz’w{z‚†|‹ro‡q“|t†‡~}x…~ns‰rzl}Žy’u‰ƒ™n“st‚ww}v‰h‡•ˆsdzƒwˆo‘„ƒwƒƒ‘†€h‡ƒ‰“–z{r{‰u†„z‚sxw}tpzk†w‡{{vs‰‰rƒ{~~€‹‚}‚|ƒ†{…ƒu„…}ƒ‡lƒ„t˜…s…ˆ…m¬¯{ÿÿÖÿU¾@_ÚuÿçëÿtÖS?ÀZÿÞúÿèx+­FÿÆÿÿ¤ÿ;…":­(ø©ÿÿ¼ÿ>“%sî–ÿþ¿ÿL²=r%¹ÿîÝÿfÈEeÄfÿàðÿ|Åa2±OÿÆØÿ”ëv!“?þ¹ÿÿ¦û)Ÿ&$ñ¯ÿÿÁûDª.zçÿÿÒÿ]«?UÛuÿÛèÿpÑ SM£dÿÛøÿƒÜt7ºHÿÏÿð¨Ò.( 3ÿÁþÿ±þ9Ž#‰$÷™ÿÿ½ÿCº0 mé‰ÿíÜÿW¾=Y Ën÷íæÿlÒWTÂdÿßôÿØe ,¥PÿÊôÿô%{%œBúºÿû´ù8™#ê–ÿÿÈúEš4l î…ÿòÍÿ[ÌAZÏqÿëÃÿbÍRCÄrÿÐòÿ€Ú i6²LÿÌ÷ÿ’èC‚ ›=ÿ­Ùÿ¢ÿ4™}/ä ÿÿÁÿ>¨*x#æ•ÿþÙüc½F\ +åxÿïàÿp»UMÉ\ÿ¼ðÿ|Ù_3½WÿÊûÿ‰å†<–Cÿ¿ÿþ©Ì1‘)õ–ÿÿ¶ÿ<¢"‹!î•ÿÿÔÿQ¹6` ފÿîÖíLÐHQ΁íçóÿ× ]O¾SÿÎÿÿ‡ã!h*¢Cÿ¸ÿÿ›ô)u !’4ñ­ÿúÂòF™)~ì—ÿüÆÿQ°/V߀ÿðÐÿZ±@R ÉtÿæÞÿjÕbL ·…ëÖþÿˆæs .´MÿÇÿÿ›ô=ƒ !™=ÿšþô ÿ7ˆ'òžÿÿ¾ÿH£3v߇ÿøÑÿb¸:fÕrÿááÿgÌOIÅfÿåÙÿyåc9µ]ÿÕüÿ–™ynaw†q‰x~…Žt}‰xy‹y‚oŒ€†Œ‡ˆ{o|š„‹‡u†u’vz€‰…|‚~‚“h…}‡sƒ’|l€x‚wp‹r‰†‘˜„zzŠˆy„…}kzŒv“pxx~ztsyƒk…ƒ~ƒvzwnz‡~x~t…ƒc€v}u–ƒ‚dww…„ˆ}xv~p„Š|„x{}z‘Š–ƒƒ~u‰„{š{wz~}~‚xŒb{|w}{„Šˆ‰ƒ‡sƒ}€ˆ‚™{€v~ƒzy{Š~y†ˆ|r|’‚…pˆw†‡‰”‰q‰‚…‚{€~€m„tƒz‚s~|u{d„‡……o~’}šg{‡ƒ—~xm“}†o€†rˆ…hr…“’vx„€~xvs~…zƒ…|pros…ˆqŠ‰yŒ…Žˆƒ~ˆw†t}‹|{‡‚—x€€z}xƒ{~†}vo‚‰‚{€„‰~w{u‰„…‚‚‚„~„Œ}|ƒm~~€w‚…{Šˆ~„„†‚…vƒy}‚{~v„s‰}€{‹|t{xˆ|‚ƒ}wz~{ww‚…}€Ž‚„{v}ˆv|~€Š‹zƒ{‡…ƒ|yuˆ…|‡zƒ|w|ˆ€†€}…†x‚‰€…†€tŒ‚zƒy€}s~w‰Šƒzt‚…xŒŸk¢ÇÀôÿC²6d܇ÿùÚÿbÎOLÑnÿéïÿ|Ø d<´VÿÕÿÿ–ð{ ,Ÿ@ÿ¼ÿÿªÿ6Œ&ÿŸÿÿ¾ÿI¢) +vêŒÿøÑÿSµ5^ÖyÿîÚÿgËKCÀdÿÜîÿ|Þf0±MÿÒ÷ÿ’ò '¡AÿÃÿÿ©ÿ-”‰,ú­ÿÿÂÿ@¦, uîŽÿýØÿU´>^ ßvÿêìÿlÌKNÉaÿÙôÿ…Ú Y5µEÿÆüÿ’ésž<ÿ·ÿÿ¦ú*Ž‡*ô¥ÿÿ¹ÿ7¥)v î–ÿÿÌÿP¼>cã‚ÿùâÿeÌRNÏnÿæòÿ}ã`?¼UÿÎÿÿ—èt.¬9ÿ»ÿÿ¥ñ%† ‘)ú©ÿÿ³ù2›! xëÿýÄÿF°/eá„ÿöÔÿZÆGUÏsÿíæÿoÙ^HÃgÿãùÿŒçq3²KÿÈÿÿ¢ò%{ $ž7ÿµÿÿ³ø2‰øžÿÿÃÿ<¢%qè„ÿòÔÿS·8T +ÔxÿíÜÿfËMCÆhÿßðÿ{àf9²VÿÑÿÿñx +*¡CÿÅÿÿ§þ1š/ÿªÿÿÀÿ>œ …÷•ÿüÏÿL²3i +à…ÿîÛÿ]Á@QÎpÿçäÿnÒW<º_ÿÞïÿ|æ q-±UÿËÿÿ˜÷‚#š;ÿ»ÿÿ±ÿ6˜ˆ,ü¥ÿÿÄÿJ¨( |óÿùÔÿV¶:eáxÿïÛÿmÊGPËfÿáéÿuÕW6³TÿÒöÿƒç q* GÿÂÿÿšû"Œ”9ÿ¸ÿÿ°ÿ8š# ~%öŸÿÿÆÿJ¯5qæŠÿøäÿM’Yj}u„{zx“…{vu€ƒ‡vy„|„{y€~…‰}}q}ƒ{z…€ƒty{…‹ˆx‹~p|y|zy~…|‡‚‰w„~~zƒ{{†€wz…{Š€w†{{‡€„xyt‚ˆ{xˆ‡‡}rxm~€u€x‚€{„„€Œ}‡uˆ’‰t„{|†ˆ{{z‚„|rŠ~Ž‚{„€y‚z„~Š…w{}|ˆ‰}zv‚€}ˆ~†‚‚~w†‰‡‘}{‹…ˆtŠƒˆ…z†‚‹trŠ}…‡ƒ{ƒn‚†ƒzt‹tz‡y‚…y}ˆ‚‡‰u~~{ƒ‡…}‚|{„~w}„€€‚r{‚w}€„~~|†v|‡z†‡€vry„‘{Œ{…Œ}‹ƒ…|{y„v„xr„zx}q‡‚€†z{vz|€vo€ƒ{ƒ€z‚‡ˆ‚}|r}|y|‚{‘…‡y‰‚yx‚€t„}‚‰|‚|t}{„€yu‹{†ƒzŠtƒ„yŠ€‚ˆ~Šƒ€€ˆ‚w~mˆ‚}Œ~Šy{ˆ{|Œ…†oyzt~s‡|‚r~}wxzr‚}“|}€€y‰x‰ˆx…„{|ƒv€‡~~‚…ƒƒ~„|u}t|‡€…o††w…~w…s~€tzm`ÏU` ÚÿõÕÿ^ÆIKÉmÿåéÿrÞc=»XÿØøÿ‹ów "¡EÿÄÿÿ©þ.ŒŽ1þ¬ÿÿÅÿCŸ)ó”ÿûÔÿR·5dàwÿíãÿjÉMOÐgÿÛñÿÖ +a7µSÿÇýÿ”çs—:ÿ¶ÿÿ¤û*Š.õ¥ÿÿ¹ÿ;¨,s!ì–ÿÿÏÿU¾@bÞÿõáÿkÒNQÏiÿæïÿ†ÞcAÅPÿÍÿÿ”éo.§8ÿ»ÿÿ§ô(ƒ +$÷¥ÿÿ·ÿ9š!rêÿûÊÿN³9dއÿòÝÿ\ÌJLËwÿçëÿwÚb;¾[ÿÛûÿ‘çp1´IÿÅÿÿ¥÷+… œ1ÿ­ÿÿ±ü3–‡ö›ÿÿÃÿE¨+kæ‡ÿõÔÿ]¹=TÑsÿççÿlÒV=¼bÿÝñÿ|è p,­NÿÎÿÿ–õ(¤;ÿ¼ÿÿ°ÿ2—)ú¤ÿÿÃÿC¥& zò‘ÿøÑÿVµ6cÝ{ÿëâÿfÈGKÆfÿÛïÿwÜ\7¶RÿÓõÿŠêt +#¤EÿÅÿÿžü$Œ•6ü±ÿÿ·ÿ9¢$‚$÷ ÿÿÎÿJ«5mì‡ÿöÜÿ\½@\ÚnÿçéÿlÉKEÀ_ÿ×óÿ|Þ `.«JÿÉúÿ‘íz ž:þºÿÿ§ÿ)”/ø°ÿÿ¹ÿ=¦+xð˜ÿÿÐÿT¹6eâ‚ÿóáÿgÄH[Ølÿâðÿu× +QE½VÿÓùÿˆãk,­BÿÆÿÿ—ï} š:þ¹ÿÿ¬ÿ-• )ó¤ÿÿ¾ÿ?¬.sì˜ÿÿÓÿXÀCkD«}vjxŒƒƒˆ‡yƒƒvƒ‚}uyz…„}zov|t…‹v‚‚‡{}}t}‰zw|z{‰zzr†€„v‚}…~‰‚t{ˆxƒ‰…{|‡~z|uz{”}yzŒŒ†z}|r„‰~ut€€‡†€„vŒ{v„„|Ž…w…xu†€ƒ‚u€Žxƒƒ|‚€~‡y€xwzw|”s‰o‚~yˆ~…†Žˆƒ‡…{}|€†quwxŒŠ”{‡{‚p„†g}‚Žp‡„gzq~xz†|{•wŽr|‚}€ˆ}}…v~xƒƒy€r|‰|„u€‡yˆ~qŒt}‰€vˆ{~‚rw~|ys„|‹qz|u…„‚„v„{…€ˆˆ{Œ‚|~†€‡‚€zp€z‚y‹‰‡…„{‚€……{†~rxtmo‹‚‚x}v|nxxƒƒmƒlzx|„€z„wv}tƒ‡{‘}w‚v‡€|ˆz|‚}}~zrŠ‰†††ˆ‡‚}‡uŒzz€z€u‚}~ƒv‘|x‚v‰‰ˆrx}p|~|‘‡xy}{yƒ}Šr„‚ˆŠy{|}y€ˆŒ…|‘~‹€‚y{€}‡‰{€…sƒƒzŽŽˆv|€…p€x~ˆ|j„†~r~ƒˆ~qƒ{{ˆqy…~|ƒqu{Ykaaî‘ÿüÉÿS¹@` ÕpÿëàÿfÒUFÁ_ÿÜñÿ€ç o0±QÿÎÿÿ—ü"‰"–;ÿ»ÿÿµÿ8œ#"óŸÿÿÎÿM³/oåƒÿõÚÿ_ÃEW×jÿâðÿwÑZCÄUÿÓøÿän'¥Aÿ¾ÿÿ£ñ#’2úªÿÿ®ÿ5%{éšÿÿÊÿI¶8b݈ÿøÛÿ`ÎJRÒtÿèîÿwÝ [=¼XÿÕþÿ•èv ,¥>ÿ½ÿÿªô(}•*ý«ÿÿ»ÿ?› |ï‘ÿúÌÿP±0c ځÿðÛÿZÉHNÏiÿàêÿoÙ\;»UÿØöÿ†èu ,ªDÿÇÿÿ¦ø&‹–3ý²ÿÿ»ÿ9Ÿ}õ—ÿÿÎÿO°.m èÿñáÿgÀBVÏpÿâëÿxÐS=¿ZÿÎ÷ÿ„ãj%§GÿÆýÿ”õ„•=ÿºÿÿ³ÿ3ž# &ó¤ÿÿÇÿH´5méŒÿûØÿ`ÀE[ßvÿééÿwÓ +XMÊZÿØ÷ÿ‚àg3¯EÿÅÿÿ’ëx5ÿ±ÿÿªø(†*ó ÿÿºÿ:¦)rèÿüÎÿO¾>` Ù{ÿôãÿjÍTQÎkÿæöÿ‚Ý]@¹MÿËÿÿ—êt-©Aÿ½ÿÿ£ö-‹‘'û§ÿÿ¸ÿ:˜ tè—ÿüÉÿJ±2e݇ÿöÖÿXÆGPÑvÿñäÿtÚZE¿]ÿßûÿˆèo4°LÿÉÿÿ¡ó( š5ÿ¯ÿÿ²ü7’Š"ùÿþÇÿB£&råŠÿõÓÿW¸9X ØwÿêßÿaÌP=Ícæ†ks|‚…‡w‚~…~{‚‰s„‡z‚|sƒt‚~Œ€y‚‡w‰u‹|ˆƒƒz}†„‰„|}|s}‚{‚{‡ˆƒz|}ƒ}~z†y‚‰s„~†v‡}v‹w€|}‚{yu~p‚€v€yr…†‡yv‚{z„tr…€€†ƒ‚xy{…ˆ‡‚tz{}Š|}|v†v†{|‡w|w}€Š‚‚{x†xƒ‡‚ƒ}p„}|y{€~|Š‚zvy}|†yƒv…xy|v„€‰„w‚‚„ƒxxw{zv|…Š}}z„‡‚yz€{~s}~…„}‡ƒz†…‚‚‡v‡†yy„{€z€sƒ|~}zwˆ†€„ƒ~w€~‚z‰Ž€u†{t‚€y‰{€z~p†}y~}‹ƒ‡€|‹|ƒ€r}‚vƒy{wƒ}‡rv{~ˆu{u‡ƒr|tˆ|}zyr~ww~u‚|y„}u‚„‚…ƒ|wƒ‡w{}~ƒwzw|Œ„wƒrŒƒwx{}qyz~x†~}{‚|{}sƒ†‡z††}†xˆzw|‚‰z|ƒ|„~‚‡~vƒƒ‹ƒ€xx{|‡~z„~y‚w„~r„y‡}‚††uxƒ~‹~|„€rƒx†r{†u‚}x€x{‡w€{}~~€qˆu{r†‚‚‚H‰gEÿÍÿÿ–÷"†!”8ÿ²ÿÿµÿ6œ‡#õ ÿÿÉÿN¯3kç„ÿóàÿaÃ@UÕlÿäéÿvÕ R@¼MÿÑöÿŒåo%¦@ÿ¼ÿÿ¨õ#ŠŠ0ø¯ÿÿ¹ÿ7£&tç—ÿÿÉÿD·>]فÿùÜÿiÌMPÌoÿéòÿ}Ý f<·SÿÑÿÿ—êy (¡8ÿ¹ÿÿ¬ø0‹Ž#ú¢ÿÿ½ý< " {ëÿùÐÿR´6[ÖyÿíÙÿdÊILÉeÿßìÿ|Üd;³XÿØøÿñw +$ŸGÿÄÿÿ¥ÿ-”3ÿ¯ÿÿ¼ÿ=ž& ‚ö—ÿþÏÿP­1q æ~ÿñÙÿbÄ>ZÑgÿäèÿvÖW>¼YÿÔõÿ„ã k,«IÿÇÿÿ—÷‡–9ÿ·ÿÿ«ÿ3›#‹)÷§ÿÿÃÿH«- +yìÿûÞÿYÁ?bÚuÿëæÿiÌKLÉ`ÿàìÿ‚Ûb8µJÿÐøÿ”ìo&œ>ÿ¿ÿÿ¢ü'‹„.÷³ÿÿµÿ>¦& y#ð˜ÿÿÍÿN°6eâ…ÿöâÿfÅFWÔmÿäóÿ}Ñ SDÄUÿÕùÿ‹àm.©BÿÁÿÿ£ó({ +—/û±ÿÿ­ý4• …&òœÿÿ¿ÿ?«3qëÿÿÒÿP¿AW׃ÿõâÿhÎKNËfÿá÷ÿ„áa<ÂTÿÐÿÿ”ét-«9ÿºÿÿ§ñ'€ ‘.ú°ÿÿ´ÿ6›zï“ÿÿÄÿC®3dáˆÿúÕÿYÃI] ÕxÿðçÿqÛWJÁhÿßöÿ†æc7´KÿËÿÿ˜ì z (§/ÿÆÿ©¦ny…Š€‚{z…€y‰i„†w~ƒ}u~{{€~t„u‹ƒzzvƒ‚yƒ„…„‡Šx„„ƒz{ˆ…{yyzt€~|‡‚yˆxƒxw„x}ˆ‚zŽ€x‡ƒvz}ˆy{ˆyŠ„v€~‡t~tyxx~{{{}…v{z„…~‚„ƒ†w„tr‚ywzƒxx‚xo{…‚ƒw{„ˆ}v~vŒy€‚‚‚‰y€†}rˆ~zyŠ„„†r~}„„u‰{ƒ…†~y…ƒ‡zx{~}‚wŒ‚q‚}‰Œ~€v‹†x‡~ƒ€y{…yw|‡…Žz…€€‚ƒ„ƒw€‚„|~y‚ˆŒˆƒ†vƒ„€ˆ~x‚|zŒ„‰‚ƒy†v~€y‚w†zƒ…ƒ{‡Œs{{„zvz}†|w„~yzo‰v|}w|yŒx}Št}€ƒ}ˆ††|„‚‘|…sr‚„z||u†ˆ{z€o‹‰v…Š‹ˆy}ƒrŒ~|‡}|}„Œ{z|y~„x{Š~…t~z…r{|…u}ƒx†}…ytv€€„‰€z}w€†€Š†Œˆ…w|Šrƒ‚v{s}wu€yxyy„’†|zƒz|{zw‡s~Ž‡…}w}z„Œwƒ‚y‚y„}ƒ}|~~ˆ‹zz„cŠy‰z†‚u~‚zƒyhO_þ ÿÿÀÿB¢&h߉ÿõÒÿQ¾ARÐuÿççÿo×Y?ÃcÿÛõÿîq/³MÿÍÿÿ¡ø$„$œ9ÿ·ÿÿºÿ;˜#%ø£ÿÿÈÿQ´5lèƒÿòÝÿa»?]ÔrÿãçÿqÎT@¼[ÿÒõÿ‚æj*¥GÿÃþÿ˜ó…—3ü¯ÿÿ¶ÿ3›ìŸÿÿÄÿM³1oèŒÿþÚÿaÄEY×rÿìëÿwÐYJÄ^ÿ×üÿˆáf6°CÿÀÿÿ™ñ${§@Ìl„‰†{ƒ~†{x†}~ps‡|yƒ|xˆv‚|ˆ‚‚‚†~ƒ|o„Š‰‡}tŠyy†zst{…‚ˆxzŒp†|z†…€€†y€}z„€rzyƒ†u…w†|{}y€zƒrx‚~x‡y€Š~Œz…ty„Ž{‰‰v„„s‰†qƒ|…zzt‹†wƒn~‰{ƒ‚xƒ~s~|zsw}‹{ˆ‹‚|‡}‡u‘w‰}…yvvŒ„w|un|ƒu€‚s}n„‡}‰‰†Œryv‰~~…………{w~‡l…~ƒy~z~€|„€}‡uw„}„}}n……wƒ~y‰z‚~|{wŽpyph€z}‚ˆˆ‡”ˆ|yˆƒ„ˆŽj„p}~„p…„‰ˆz‚‚‡}€~rq~ˆue‹w~oœw~~y€ƒsl‚t}Š€uzx~€ytl|†}‡~z|‚qzƒ†{„†„„w‚ƒ€z~€‰yz~}€…†~x‡}‡„„Žv…}ƒ…~}‹ƒv€|ƒ„ut{xz‰uxˆ}{ƒpƒ€†‰Œtw|‚ˆ‰d€zsŒy~ˆ{m€w‰~|„‡‡x{n„Œx„Š}‚sŠƒ„{„zŠ‚q…|tŽ„{Šo†„v||‚yzk„„ƒz†‚ˆv’€yx}~ƒynˆƒt‰x…‚‚‹y«=ôßõÿsÒ PIÇUÿÖúÿˆâj1«@ÿÀÿÿñ' ’+û«ÿÿµü.— x"ì˜ÿþÄÿB¯2g݆ÿø×ÿ\ÍKPÎqÿíêÿyÚd>»^ÿÛüÿ“êr2¬HÿÄÿÿ¤õ*ˆ˜,ÿ«ÿÿ½ÿ>˜õÿüÍÿN±5eÞzÿìÞÿcÈGJËdÿÞêÿtÖ]7ºSÿÑùÿíx%Ÿ?ÿ¿ÿÿ£ÿ$’‹2ù­ÿÿ¾ÿ=§* +w î˜ÿþÑÿV»=g â|ÿñçÿgÈPPËcÿÞõÿ€Û]<¹GÿËþÿ“ço&Ÿ6ÿ¸ÿÿ£ø*„.ö¥ÿÿ¹ÿ=¤(rêÿýÊÿMº>]Ù|ÿõÞÿjÑTJÇmÿçòÿ…âj6·[ÿÒÿÿ˜ô${'¨<ÿ·ÿÿ¯ù1“•&ÿ¥ÿÿÁÿC¥" +zíÿþÉÿK±4[ Ý}ÿñ×ÿfÄJKÊjÿèéÿxÞf5²WÿÖøÿ‰òy +&©@ÿÂÿÿ¥û*‘“1ý®ÿÿºÿ=¥( x ó—ÿûÓÿO´0l +åzÿðÞÿcÅ?UÌhÿáéÿvÓ T;ºWÿÖñÿŠàk(ŸCÿÀÿÿ÷…5û±ÿÿ¯ÿ4"}$ð ÿÿÊÿK®1nëÿüÞÿaÈF_ÜuÿêêÿqÒ +UHÅ`ÿ×úÿ…åi4¯KÿÇÿÿ–ìv”6ÿ¯ÿÿ©ü.’‡&ó¤ÿÿ·ÿ:«-oç“ÿÿËÿS¿AeÜ~ÿ÷âÿgÍQPÑkÿäôÿ}â`?½RÿÎÿÿœæt2ª:ÿ´ÿÿ¡®h{†yˆyx}‡€tƒ|ƒƒ{—{‹uy€„…~sƒuvn€€ƒu‹}tzz„vs‚~|ˆŠt|~€|xƒƒ~rŒ‰†q‡}Šu{}{s}|xx‰u†‚ˆ€w~s‡~x…sŠ†y€ˆyy‡‡Ž‡{v†w€{xˆr}{z~‰wz…ƒ}v‰†}u~ˆ€ss…w{~†ov|~€‡ƒ€}y†‚…t|ƒuo…y~|‡‹‹|ƒ…t|wxyƒoƒh‡€y„wr}y~|nƒ†Œ‚~uzƒy|Š‡{{‚}‹s€|w‡‚qyo‹Žu}}ƒŠ~„x†‡‰r‚t€ŒwŒ|…ƒsuƒrwy‚‚ƒxƒ‚y„€†„}ƒ}s|ƒ€‚„x„~…ƒ€‰}…€ƒp€|z„†‚ˆ‡€v€€‹r‚‚p…r~€ƒ}t{†{~€sˆ~‚‰€„ˆ‹€€t{n‰{†|…ˆ{‰xz…€…€w…yu~€‡o‰‰‡{}ˆxy~z~‚~Š„‡‰…y„„nz‚lƒ|y…‚z~“€~„‰Š~sxƒr€ˆ……yˆ€‚wzw‰x€…Š~‚y~y}ƒ{p{r…‚ˆvz“Œz‚v‚xy|~~‚~‡|zt†‡uŒ…~„…vzvsŒ€{|…ˆ~ƒlq{ƒ|‡va~): ¨JÿÁÿÿŸý$‰2ÿ±ÿÿ¼ÿ;œ* }î™ÿÿÑÿT¶4f Þ|ÿðçÿmÉPPÔdÿÛöÿ‡Ù\9¶MÿÎüÿ•ëv"œ5ÿ³ÿÿ¬û0‹ €#ó¥ÿÿ»ÿ?§.må’ÿýÎÿOÀFRÐyÿìåÿj×[BÃcÿÝøÿˆçv1±JÿÊÿÿŸï#ƒ%¡;ÿ¶ÿÿ·ÿ7™‡"÷›ÿÿÃÿI¬.mç†ÿòÚÿ_»:XÑoÿååÿhÌT=»`ÿÕöÿ‚æl)§IÿÈÿÿœøƒ—8û´ÿÿ¯ÿ1š"'ô ÿÿÊÿK°1jè‰ÿøÛÿaÃEYÙpÿèéÿrÑ\EÅ[ÿÖöÿ„ãj5®KÿÀÿÿšïx +–1û¶ÿÿ¯ý1” {$ïžÿÿÀÿ<«2kæ“ÿù×ÿYÄ@V +Õ{ÿòèÿsÒYLÊdÿÜûÿ‰ßd6µHÿÈÿÿ™í!{(6ÿ¶ÿÿ®÷/‹ˆ(ø ÿÿ¿ÿ?¥'kçÿúÏÿTÀ>Y Ö}ÿíáÿiÎRKÇhÿàïÿyál7¶UÿÎÿÿ–éz#ŸCÿ¿ÿÿ®ù.’,ÿ¦ÿÿÁÿE (}ñ‘ÿùÎÿP´1h ßzÿïÜÿ`ÃDKÈcÿÛìÿqÖ]:»Rÿ×õÿé{,¨KÿÆÿÿù"Š#•:ÿ´ÿÿ¶ÿ8#ˆ'ûžÿÿÉÿO­3pê€ÿõÛÿdÀC\×nÿãìÿtÒNCÅZÿÓõÿàc*²KÿÈþÿ‘ò| ˜5ýµÿÿ§ÿ)—+ö¢ÿÿ¿ÿ>¬1r(鏈}s|‘…y~x~r‰s„{‰‹z“„€ƒ†‚}qzˆ{ˆ‹|†€€y}k„~Šr‰xvx‚vx‚zˆv‚v~~wunz}ƒ…}}xz„}„u{…|…~|€…s…y€Œ}„ˆt~‰z…ivzryƒr}ˆƒuqws„„{„}‰y‰|„x{~x‚ƒs†fu€}‚‡r„i}{ƒ€Ž‡‹|‹v‚€{ztz„†}‘y†v€}Ž‰‚b†s‡yƒ}ˆu|€†x„~zw“‘|{ƒ†}€•{†{~v€}v{}}xwƒ‡|„ƒ‡†‰s‚y}wvƒƒ„…{ˆ}||~€y~€‚‹u‰‚ƒ‚†…‡†s„…w{~’ƒy‡ˆ‹~yv€†‚|{„y{}‡‚}{yƒu…|w€|‡{…ƒ{ˆ‹x…ˆx|…zy~qŠ~|}x}}ƒ}‰w{€…€z~†~ƒ|‰Žw~ƒ‚‹†|~|ƒ„…}†€ƒt|€‰‡x€„‡x‚|m‡y}‰z~‚n„p{‚vƒwz”†„zwq‡y}‚u„ƒ…qxr…q†ytƒ‰w‰s€~xwv}‰‹Œˆƒ‚~u~€‰„‚}t|‹wxvy…‚…„Œ‹‚ˆ{…|z„ƒƒ€Šwxˆvs†Š‚wo…ƒ€Žk  +tã¾ÿÿŸú*‰)õªÿÿ¾ÿBª.wä‘ÿÿÑÿQ½>d Ú}ÿôèÿsÑRJÈ`ÿÞýÿål4·KÿÊÿÿœó& +!ž0ÿ®ÿÿ­û6”†!õ™ÿþÂÿC¢(lã‡ÿ÷ÒÿUÀA[ÐpÿèãÿkÕW<ÃgÿÞðÿƒék2­GÿÊÿÿšù#…!›8þ¼ÿÿ²þ1˜‹'ø¢ÿÿÉÿE¨( tñ‡ÿõÙÿb¼;`ÙxÿðÚÿmÍLA·\ÿØñÿ‚Ü g3­Zÿ’¨z|}…{vz|}‡}~iu€pƒ}}„‡~o€z„w{p‡z‚p}|y†qŠuu}‚‚‚z…†uŽh€oy‘‡†‰Žxˆ…ou}‹u‹„r‰‰Œ†•o†€itƒw{”‡u|€x…~u|‹{„‰|{v‰–l~ƒ|ƒs„ŒŒ{y{ˆ„…‰’{ƒ~sp}…gfv|~‹z…zm‘|†ˆ{o~~lvm|{€†ƒzhŒ~x€u{‘Šza†{€€_u}„jvtyz›uŽƒd‚v†‡‡wo†‰Ž‘|t‚tvx‚|nš}ƒ€~…}„’u}†||„oz‹Ž~„„cƒˆ˜ˆq}ˆrz|}xlr‹ƒy‡Švlsw‰€wz{wp{x„……~…s’yu‚‚tŠ|{{u|Šzƒx‡|yxƒ…y{o‹‚}{…mƒ“v’Šz„…Žz‘}~x…‰‡—|’}xg€h„x†}Žf€zt|~tt q{tv~s}„`Žu…~|uy{™ƒ–vƒˆ‹‘‹†yy|{{‡„sx}}t„z‰ƒ~€x‡ƒ{„q„†Žv‰z~‚tŽƒ}ƒy‚€zŒƒ|€ˆˆv|‹w‘{zemˆr‡…rŠ‚Š’~s‡rƒt{‹}e}z~„n{”yL˜nÿèåÿkÔ `AÁSãÕúÿŠäe)H±8ÿ¼ÿÿœÖ=n‹.ü¢ýûŠÿ;— v?׋ÿúÎÿM¶Z[Ö}ÿù×ÿnÀ RI ÊcÿÓÙÿ€á i7±UÿÌóÿˆîˆ 7Qê¿ÿÿ©÷,–B!ˆ*ü¤ÿÿ¿ßQ’' ówÿåÎÿVº5a6àoÿíàÿhÎnCÃjÿäèÿÝ a5±YÿÏøÿ’êv‹>ÿ¿ÿÿ§þ*™‰1ó­ÿú»ÿ>¦!#á”ÿÿÜÿ_³?hà~ÿòàÿm¼ JEÂ_ÿÓîÿzÙP4¹ZÿÌ÷ÿuçq ©6ݶùÿªò0†&¥&ï±ÿÿ·ú=|+|#î’ÿûÎÿK¹8`هÿùÞÿhÇYbÍqÿéðÿË_H¹]ÿÇøÿŽð x+©Kÿ¾ÿÿ®ñ"€$–@ÿ®ÿÿ´÷9–€ì¦ÿüÃÿV±-jé~ÿÛªÿ\º@O%ÞpÿêãÿlÍuN¸eÿáõÿ†Üj<³Kÿ¼þÿ›ô"| & ‡8ÿ·ÿÿ¯ü8™5û¥ÿûÇÿLž/sߝÿ÷Íÿ_°9h ÙlÿäáÿbÁ@Cµpÿâêÿw݁7¸QÿÙýÿ~ì{.«;ÿ¶ÿÿ¥ô)‡Š4ÿ®ÿÿ²ÿ>§$…$ó›ÿóÔÿO«0iތÿñÚÿ_½I[ÕeÿßäÿoÓQC ÁTÿÊîÿyê*¦TÿÏÿè‘ö +1žWëÁÿÿ®ÿ82')ü©ÿÿÁÿD®( +}íŽÿåÛÿP´:gÇsÿíäÿiÄMTËnÿäåÿxÜXA¶[ÿ¢´t}x†p‚††}„swo‚{}{rŒ€u¡||}€‘j†ž|ƒrŒŠswy~xooy†‰…‹€€ztv‹…o‚}q{€wzy}y……v||…{z{‡}…u}„˜ˆy|x‡‚{|~Š…„€ƒ‚}||u|„‡ƒ…„‚ˆuˆztx{oxm‹{‚€†…ƒx|~‘p{’|ˆŒ}…}†r…uzz|Žy€’r~‚…{€y‡‰oƒ||}~~y‡…~}xƒyŠƒ‚ƒ€ˆŒ~€‹tŒ}ƒ~€x|ywƒ‹‚ƒ|ˆx{|„ww„}t„€x‡‡}‚…†y|qƒ„‡ˆy‚…’ˆŒ~x‚y}ˆzŠ||‚‰†„Ž{”}}ƒ}u~{|—‰‚„w~xƒvq|qv‚„}‹~z{ˆ€‰~~{~…{‚‡ƒ‚‡x‡x{v…zt€Žvˆ~‡„u‡w}Šƒ}{Šy‚v{~h‰€†vxŠ}‹‹y„~~{‹uˆy„…ƒ|{„|z„xŠs‚ƒ||t‚u}€}~ƒz}ˆm‡‹v}‚‚yyxz}Žyƒ~x}ƒy‚ƒ‚{‹zƒyŒ{†‚ƒƒu†~v€~Œx‹z‚€~~†p†zƒ†…w~†„ƒ~‰u†wy~‹uv€€‰††|†“‡~x|‚‚k­¥ÉûÿEŸ!nå‹ÿøÏÿT·=W ×xÿëáÿvÑSAÂeÿÙõÿé +m+«NÿÉÿÿ—ý#€œ6ÿ¶ÿÿ·ÿ9›"€'ø¡ÿÿÍÿL±2géŽÿôßÿeÆFV×jÿæëÿ{Ûd=¾SÿÍüÿ“ãq'¢Dÿ¼ÿÿ£ô%ƒŽ)õ¤ÿÿ¸ÿ4›&të™ÿüÌÿH»:_ րÿóÞÿeÒQSÎmÿçðÿ€âd@»Wÿ×ÿÿ™ñ"| )ª@ÿºÿÿ­÷-Œ”%þ ÿÿ¼ëR}…–|‚yyˆ„‡€‚uy†„xzjxˆ{y}~‚„’~yv‚{‚y~~o‘u|tƒ‡s‹q‡{ƒy~o“€~}wzˆtˆ€ƒŒ€|†x‰v{|zo…{…~}p…tv‰~u‚†|…z~ƒ~}“z}†x‰€q|‹ˆ~Š„yˆw}‹nŠl…ƒ{~{†ˆ€Špp€„|†…rˆ™‚~~v‚‹„‚‡r…uvƒ€~Œ‡Š~†z…y‡xŽ…‚y€q„ƒ{{y„ˆn|€‡}x„|„||Ž|ƒƒƒƒtvys~z€‰€†|s…~‡…w~ƒˆv”~ˆv~~‰~p€x€r„„xzsz|…k†z‰v‡{…y™z€~uˆ~~l{s|“qz†…uxi‰ƒŠy~ˆ‹oz{†„{„z‡{~yy}Ž„ƒ|ƒuˆˆx|sxt{sŠ|wy‚‚ƒ}€‹x|†s™€‹€|†||ƒ…zzxv}Š‡wo†‚Šo|€„tyv~|†s{ˆ‡ww}}|‚w}‘ƒ„z†}r†s}o„†~}rˆw‹„v{x‚|‚~„o€Šu‘w}ƒ‹pŽ‡}{†vƒƒxƒ‹x„‚„€‹‚r}ƒ„‰‡†}†‹~~ˆv~ys|v€r€w|„†‰~}|‹~†wƒw…}xŠ†{}XvÉ/j] ÛzÿëÞÿbÌPBºVÿÜíÿ{ßf5ªIÿÈýÿ™ðƒ‘=ý­ÿÿ®ÿ.œ# ~(ö¡ÿÿÈÿO³;läŠÿøàÿ^ËI]ÖlÿäöÿÜ[>ÀRÿÊÿÿèq+«=ÿºÿÿªõ*Š&ø¤ÿÿ¸ÿ8$sê‹ÿ÷ÐÿO³9X +ÖvÿíÝÿcËQD¿cÿãëÿvå h4®SÿÌþÿ–ö%¢@ÿ»ÿÿ²ÿ6’†)ú¨ÿÿÃÿH©-wïˆÿõÙÿ]¾:aÝlÿèãÿoÒ LMÅVÿØñÿ…ß_/ªMÿÉýÿ›ï{ —9ÿ´ÿÿ¤þ)˜ %óŸÿÿÀÿC­/mê–ÿÿÕÿXÂAZ Ôyÿïêÿs× QKÌ`ÿØùÿ‹àd8·FÿÇÿÿží!| ›4ÿµÿÿ²ü3“„&õ£ÿÿ¾ÿB£+iä“ÿûÐÿW»>[ ×wÿëåÿiÓTGÁeÿÝöÿ‚æ p5°NÿÓÿÿœô"}#9ÿ·ÿÿ¸ý4(ÿ¡ÿÿÁÿI«(wë‡ÿøÐÿY²4^ÚvÿìàÿmÌQDÃeÿÚðÿvßd6³QÿÍüÿò…"¢?ÿÀÿÿ¥ÿ+“*õ«ÿÿÄÿE¨) €í•ÿþÕÿPµ8a +â{ÿíãÿjËLSÑ_ÿÝñÿ}Ø Z<¶PÿÎýÿêp!@ÿ¸ÿÿ ù&‰.÷©ÿÿºÿ8¤)w ì–ÿÿÌÿM¸<aàÿùßÿeÏKUÏnÿèòÿy× bDÃTÿÔýÿ‘èt/©=ÿ¾ÿÿ¢ò(‹KxŠqgz€v{„z…xe‚qryƒ‚}ylˆ‰……†……w‹uv€~‰……wv‰~~…yƒ‡|‹y…†‰ƒŠˆ{~†|„z{}nr}s~owƒ~ƒŒxxxy„w€‚†x‡u€}u{~w‡pƒzw€‰tŠ|†‚s‚|~yu}v†{|‡t€w}ttƒuŽx‚yt|x~…wvx}|‡†vuxˆvztu|s{‚ƒˆp‹}mv‚…„Šn}yx|‚‡|…ƒwzwz}w…Œ|vn‚„ˆƒqx}„~Ž{†‹€u|zu“x‡xwƒ…ƒ~}x‹Š~‹~…ƒv“|‹wxƒp~Šw‡vw}~…Œˆ‚yƒƒ…„nyssƒy‡…‰{iˆ„‚„}p~r}€qˆ†{ˆy’Š€†‡{…€‹‚ƒ€ˆ}}…’†…{xs|„{€{Š„||ƒzƒ}v„~xzƒ}uzzqŠˆ{ˆƒx~v{„~„ƒ„v‡€…ƒt}€Š‰‚€|€‹|€€€Žiy{‰‰x‚s…€qƒ{zˆ‹yuvw|„†}~}{x‡rz†vŠ€Œ|€z€xyƒ„{}y{{Š~}wu}~ˆ‚{z‰xq†„|€€‘u€…t{…{~}}Œ‰s‚‚£.‡­‚ÿôÑÿXºHRÐmÿàèÿjÓU>º[ÿÕñÿƒã k(¤HÿÅÿÿ›ùŽ/ö¯ÿÿ¶ÿ9£& x"íšÿÿÎÿP°9iå‚ÿôàÿ`ÇKUÍkÿãòÿyÚ_>½OÿÐýÿ‡ån+¦:ÿºÿÿ§õ*…‰)ú¨ÿÿ¹ÿ7Ÿ yì”ÿûÍÿH¶5dÜ}ÿ÷Øÿ[ÉJTÐtÿîêÿ|Ý +XCµXÿÚûÿëv2¯GÿÅÿÿ¬õ,†š0ÿ±ÿÿ·ÿ?”…ôšÿÿÇÿH£-i ߆ÿòÖÿYÀ>OÓuÿéäÿoÒW<ºaÿßòÿˆèp7´WÿÓÿÿ—û"‚!¡7ÿµÿÿ²ÿ9’†(ÿ£ÿÿÆÿH¦/xîŠÿöØÿU±:ZØyÿèãÿlÌJEÇfÿÝìÿ~Ø^4°TÿÏùÿ’íz "œ<ÿ¼ÿÿ£ý)‹2û±ÿÿ´ÿ=¤) z ñÿÿÖÿT²4lå‚ÿóàÿeÁIWÐeÿÞêÿsÖ R>¸Xÿ×òÿ„áo+©IÿËýÿšô ƒ’2ú­ÿÿ­ÿ+“(ô«ÿÿÀÿD¬3rëšÿÿÚÿ_ÃHc Þ{ÿïìÿfÌNJÊZÿÝïÿ{Ô Y1²GÿÈÿÿ”èq&£?ÿ¼ÿÿªö)‡)öªÿÿ´ÿ6 %v íšÿÿÄÿMº9såŠÿÿÛÿ`ÉMZÒwÿëíÿnØ +XIÃ]ÿ×ýÿ‡âe:¸FÿÈÿÿï €#ž8ÿ´ÿÿ®ù-Œ †(õ£ÿÿ¸ÿ8Ÿ,né•ÿûÎÿK·:` ݋ÿ¼Ælwv|†}y~{wˆ‡sxuˆ†kƒ„Œx}y‚|v{{™v‚ˆz‚y†€…pŽpŠ„zuy{xvw~}v}‚y†iŠ—ˆ~}yp‚‹w…xˆƒ|zyŠu…‚…y‡}ƒ€x€ƒy‰ƒƒ{†{„‰€yy{ts€†z†‡r‹€€o‰†„€‰yƒz‚‰y||qˆ}‚~€p‡|{vz„vyˆ‹s‹lyty‹u|‚z€Œx}ˆ|p€€…z~z‚v}‚y~t‚‚u|ƒ|€‡r{}‚…„Š~…uw‚yyys€ƒv‚|„€ƒy~}|||…†„Œ{}|ˆ€}ˆzŠˆ|yuƒ‚‹€{p||ƒ€y~nƒ‡}‡€}†y„…r„tzx…‚~„‰~‚~yˆx€€†}|Žt}‚~x…{x~~…ys‡y„|‡y…x~‚€…‚}v|tƒˆ~…u€€„†‚wƒ}|}€o}†{‡w…‚…~~†…{‡t{~‚yzyŠz‡„t€‡qˆ†v†z‚Š†{ƒˆ‡‚‚{ltz}ˆu~Šz€~{ƒ~x†Š{€…ty~…||ƒ„ƒ‡†…y‚s‹‡~€v‰ww„|€…|‡Œ…y{{†„…‚yy|ƒ„~„q„„‰x‡yz‹Š~{“yxum‚yyhœVô3CcÚyÿêêÿnÕ TKÆ\ÿÙóÿ„áf5°AÿÃÿÿ£íz “2ü¶ÿÿ¯ÿ1™ {'ðžÿÿÄÿH®4gáŠÿüÓÿXÇE]ÒzÿñèÿqÛ_EÂ`ÿÚüÿŒêq/¯FÿÁÿÿ£ñ%›.ÿ¬ÿÿ¶û6›ƒñœÿýÅÿH§%iã†ÿôØÿ\¼?SÎnÿéåÿpÒW?¹bÿÚöÿ…è r/¬NÿÌÿÿ û$† –3ûµÿÿ¸ÿ:š …$ö¡ÿÿÉÿR«G‡wƒo†w‡}w|{~„~Šƒ„‰r‚z|€w†y‡s{}qv~‚…‡~tƒ{zŠ‰„Œ†ˆv‚ƒƒ{}€Šx€‚‚€{‚€uvqŠuƒ‰€ƒ{‚‚ytyv‘{p|„z‹}j‰~zz†pyzzŽ‡~||‚‹Š‹i€~Š‹‚ˆwŽz~yzŒ…{„~‡v}‚†‚‚z„s€{x|‰„ƒ|vt}{v„yˆ‰„†}€‚|„|u~~‚Švwx{‚u‡„sˆx}„zˆxr„z„Šm„…zƒ‡vˆ‚||kmyƒw†{}…|„vu‚…z‹ƒ}{zu„€z…}’…‰x|…~v|ƒst‰‡‹‚vq…}{ˆ‰‚}|rq„„z†v|„}‚yyuwy‚‚~†{~x{€twzx|‚z„‚€vx†…†~‰sƒ{‰€…w~†}{‡{|‚ˆ{„†w€‰}‰ƒ{~{{|u}~‹}|{‹z‡ˆuww‹xuŒ{v‡„ƒŠ}…„~x|…|zy}Œy{‚†w€|…Œ|}x‰‡|†|…{ƒxƒ€~szr‚€}„„|~€ƒ‚~ƒ‚t{ƒxz‡y‚ƒv}y„…}|yz‰‰t„€ƒŠ‚~}v‰‰{v}†„yŠ„‚†…{‡x‚ux…{†‘p}al½Hv"í‘ÿÿÉÿK·;Z݂ÿôÝÿ`ÍPMÇiÿäñÿ|à f3±QÿÖÿÿ”ô""£:ÿµÿÿºý5•%‹&ûžÿÿÅÿD³5pè†ÿô×ÿ^¾AVÔjÿææÿtÏY8½XÿÒöÿˆål(¡Iÿ¾ÿÿœö†‹6ú°ÿÿ±ÿ/ž% +|!ï›ÿÿÈÿH·<k߉ÿöÞÿcÏIOÎpÿæòÿ€Þ\CÂWÿÑÿÿém-°?ÿ¾ÿÿ¦ñ)†)ú­ÿÿ¶þ8— yí”ÿþÈÿH²5fہÿóÚÿcÊINÊmÿêçÿoãg7¶[ÿÔûÿòs*ªCÿÂÿÿ¨ø+ˆ—1ÿ®ÿÿ¿ÿ:¡$óÿûÏÿN¯1h â{ÿîÝÿdÁDNÎcÿßîÿyÔZ7¹WÿÒöÿŠèq(§FÿÀÿÿŸû"‹“3û±ÿÿ¹ÿ8£%!îžÿÿÌÿL´5mçƒÿõßÿ`ÃEUØjÿçëÿtÑ +THÃYÿÕøÿ‹äj.¨FÿÂÿÿ™ñz +“5üµÿÿ«ÿ,˜ +ƒ'ñ¢ÿÿ¿ÿ@±0oä“ÿÿÓÿZÈCZ ×uÿîìÿlÏZLÆ_ÿÜøÿ‹ßk6¹JÿÊÿÿžév'¡7ÿµÿÿ­ú3‰&÷ ÿÿ¾ÿ@¦(tæ”ÿüÌÿM¸?^ ՁÿïßÿaÔONÉgÿæïÿzÞ j=¿ZÿÓÿÿ–ës/¯GÿÀÿÿ®ø.‡!ž,ÿ¥ÿÿ¸ÿ:~ï’ÿýÇÿO±0d ߃ÿñÚÿ^¿BQÎpÿçæÿrÙZHd‰€…‚†z{†z‚{‚r…y†„€~…†}x}‰‰xw}ˆ}‡yvŠƒux|~ˆŒx~ƒt…ƒ‰†‰r†‡xŒu{‡v}ˆ„†y}‚…yx{‹ŠŽ€ˆ‰{{~€}|‚}wˆ…€q…ˆ|†Œ{‡}„ƒ…‚˜z‰tˆ…†€{‚~wx}ŠtzŠ|y€~€‡z„‡~€x}ƒ}{‡‰‡}x‚ƒw{‡†}|‚†~{|}„‰v‚‚u|‚{w}xy€v‹}{„„v‹Ž†|y{~w…}„{}•w}…zrvz€ˆƒ€ƒoxƒ‚zy|€‰{uŒ}}„€|†q…}†€~Šz~…tx…ƒ„‡wˆzy{p‚yl€€ƒ~„{”†~„uw~{„€‚|€ƒ€~ty~…q†}yy‹~€}„~„‚„€z~€Œq|‚}„Šxw†zƒ‚{~‰†‰€€‚…††|~t‚{}}…{z{tr{‚†„y}{|ƒ‰„„|~{€‡ˆ‡w{}{ˆpy„x‡€wŠƒƒ€€ƒ€mƒt€€{…€~w~xy}ƒ|y€z†xuzwy}|~{}{€Œ€}|ƒxˆ„‹{z|o~ˆƒ”‚„„w†…€|y€…r}|„|„xz‚w„~‹‚z|~ˆv~u}hs| :ÝpÿßóÿyØ _AÂMÿÐýÿ’én*¦;ÿµÿÿ¤õ(‰‰"õÿÿ¸ÿ7ž$ré‰ÿùÐÿS¼=]ÛyÿðàÿfÕSKÃeÿÞóÿ€ëq1²MÿÏÿÿŸö#%¢;ÿ·ÿÿµÿ3”ˆ%üŸÿÿËÿGª+rì†ÿôØÿ]¿>ZÓlÿèãÿkÊOA¾^ÿÖòÿˆß h3­LÿÅýÿ˜ò| ™:ÿ»ÿÿªÿ-–ˆ'ò¨ÿÿÄÿDª+ qï—ÿüØÿ\¿@Z ÝuÿêëÿqÌMOÊ^ÿÚøÿ†à`<µGÿÆÿÿ“èt#š:ÿ¶ÿÿ£û-‚,õ­ÿÿ¶ÿ;£(tçÿÿÍÿO»<_߄ÿóàÿhÇHTÏjÿäôÿ‚Ø ^=¹VÿÐÿÿ“ær.®Cÿ¿ÿÿð#† •'þ«ÿÿ·ý9’ +yïšÿüÉÿI«0i ܉ÿõÙÿYÄJQ +ÐwÿíãÿlÖYCÄ^ÿÞõÿˆåq7²OÿÌÿÿžñ#…'¤:ÿ´ÿÿ¯ý5ŽŽ üžÿÿ¸ÿBž+néˆÿøÐÿP²4Z×yÿíãÿcÇMEÅpÿãêÿvÞb=·VÿÔüÿîy/©HÿÄÿÿªø)“3ÿ­ÿÿ¼ÿ;ž‰ö“ÿþÍÿJª/p æ‚ÿôÔÿ^º<XÏqÿäçÿlÑS?¹aÿÜðÿ|äj0²OÿÊüÿ‘ñ‚" ?ÿ»ÿÿªÿ1•—1ÿ¨ÿÿÂÿG§) {ô“ÿúÖÿY´2já}ÿòÞÿcÄFRÌhÿÞíÿpÔZ.Ãh²‡„†€{ƒƒw~‰}„ƒtŽ‰‡ƒˆs‡x…†…„Š„ƒ|„~†‡}Š}€x‰…yv~ƒ}}ˆ‚v‰€‡’r…|ƒ‰…j€ˆˆˆƒzuyƒŽw|t‚~Ž~|{ˆ}t„sxoˆ…y‚vv}}yŠz‚ƒwuz…t|…{z{‡y‰‹{‚}ƒ{…†z}‚}zz|u}y€w“}}xvz{†}ˆ{}Šuzy‡r…y€ƒ}‹t†{yˆ„{|‡|†ˆŠ‡…yˆ~|{~}oŠyƒ‚…‡Œzyt~|…‹~€„‚z†z‡……xu{|w}{~x‡z‚{ˆ~€Šym…x‹€u‰zz~‡xŽ€q€…py„|‡‚z~€‡ˆŽ‚‡ƒ†~xƒy~‚~uz€†‚ƒƒu‚|‹†€‚}~y‡ˆ|‡|€}„|‹‡x}‡{‡s„ƒwˆf„~|†|q„q‹|…{„ƒ€…swz„‰…‰‹s}„€qˆ‰z†ƒ|‡‡†€„ˆw~uk|‡xŒ€……v€ƒ……{ƒ{xŠx‡z|„pƒu|‰†|~x€ˆƒ‰{„…‰ˆ‚t€|‰}r„zt€‰x˜}xyyu…„Žry~xsx…‘sƒ~xŠ“‚…ƒsŒ”v††}s|~x’w€€z~†{‚i‘s„}}z˜)^•hÿæðÿàe6¶QÿÌÿÿžì!y 'ž6ÿ´ÿÿ®ù0“Ž øžÿÿÅÿF¥&rëŒÿøÎÿU¹8WÒuÿêãÿhÍUB¾aÿØóÿ~åh.¦NÿËþÿ’õw š8þ¿ÿÿ¬ÿ0š!‡%õŸÿÿÊÿH°/yìŒÿúÛÿaÅ@aárÿçèÿqÈJHÇXÿÔùÿÞc0«KÿÆüÿ™îz –6ý¹ÿÿªý-•‰'ï¤ÿÿµÿ9«-yäŠÿþÕÿRÁ=Tê`ØvjŽ…“…|z‰„}{€w’…zƒt†x€‡u†tƒ‚„€„‚…ƒˆn}‚…x„…v‡†w~yxˆ€o„†|ˆ|€Šx€~vvƒ‡z‰ƒƒ‰‚‚z}‹z‡rƒ~‡|zq…€zƒ‚z„t†ˆxzƒ~ƒ‚Œ’…€‡|~{~“y‚…x~t}†w‡…lŒƒ}ƒ{ˆx›syƒ€„„ƒ”t‰x~|jt…€uyy|€€€„†r‰tzz{w‹}w|~k‚†{„†x†‚†Žƒw…‰zˆˆ}…‚€s‚‚„y{~ˆy‘€|}‚ˆ{€€~}‚y€€}ƒ…‰z|y‚o{s}“‘t~ˆ„…|ˆ|}€xˆ}yj‹p‚{|ˆƒˆ‡Ž}~…ƒ„‚~|y–~€yz‚†‚–u|zŠ‡…‚Ž~‚y~Š‚‚~{m‚…„u|y‹††~|xƒ…w‰v{Œp†nw}s††„„zzŒuŠ‚|€€x{‚g…‡€{‡‰zwl{Œ†Š|‹‚…~}o|‰~ƒ{zƒtpvty…}uv|„uw€~y‘{r”}…‚‹‡|‹vx„ƒƒ~~zuŒ„{z}}€ˆ…v|oxx„y„u|ƒ€}Œv‰Œ†y}y|lb„zŒzz|…‚}€kŒ}Š~ƒ†f‡plw½C³›@ÿÅÿÿ¨ÿ/š.ú«ÿÿÂÿE¦2|ðÿûÚÿ_¿=^ÜyÿêèÿrÓ +PMËYÿÕöÿƒÜa3¬JÿÄÿÿ˜îy•3ü®ÿÿªû)”y%ð¬ÿÿÂÿB±3aâ†ÿüÔÿ[ÎQU ÒqÿïèÿwÞ _D»ZÿÝýÿŠçq1¬IÿÉÿÿ«÷(‡ˆ*ÿ©ÿÿÀû;¨$}ïÿøÐÿQ®1b Þ}ÿîÝÿ_ÅIMÎdÿÜîÿyØ]5³LÿËúÿ‘ì{ +#ž>ÿ¿ÿÿ¦ÿ)Ž+÷ªÿÿ¼ÿ@£+ xî—ÿÿÔÿR­?g +Ü|ÿðéÿhÍLSÑbÿÜöÿÖ a=¾MÿÏùÿçu%¡7ÿ¼ÿÿ¦ø-‰/ø¥ÿÿ¼ÿ9 'räÿÿÉÿM¶?]݈ÿûÛÿdËOUÑlÿéêÿ{Û aC¿ZÿÔÿÿ”çq'¨>ÿ½ÿÿ¨ò'Š“'ý§ÿÿ¼ü6˜ vêÿ÷ÌÿM®2aÕ~ÿóØÿ^ÄGRÐnÿæêÿpÚ\<¹[ÿÕøÿ‰ð{ +*£FÿÉÿÿ£÷)Œ–3ÿ²ÿÿ»ÿ?…!ö—ÿÿÎÿL´5mçÿóÖÿ_½>UÒdÿäæÿqÑTAÂ[ÿÒ÷ÿ‰ã h)­Iÿ¾þÿ•õ™:ÿ¸ÿÿªÿ1›!Š,ù§ÿÿÇÿG­.rïÿûÕÿY¹?`ÝsÿïÞÿgËSKÈ\ÿÙôÿ€Ýn3¯LÿÃÿÿìy “=ÿ²ÿÿ©û)Ž ˆ)ô£ÿÿ·ÿ:«0qé–ÿÿËÿQÀ2 ]€uru{wx~x€oƒƒs~x†}{}w|†w†€|€‡€|~ˆ‹€€Šo{„z…v|ƒxŽxz|tƒ‰Š~{‹ƒ†y‹x}xymp„ˆ|t‡Œ‰€x…|ˆ„~zyy|¤ˆŠŠtzƒvŠu€‹|†v„„|‘xƒ†{w|z{†|t†w†‚‰wƒ€ƒ†~u~Œ„x{€~’|~‡‚zƒ„›…zu†|ˆ“„ƒ||”y}r}ˆ}~‚u‰‡{†‚xŒtu}…‚~…{…y€}|u†z…{fvˆ|…‡{ƒ |‡„„w|ƒyš„‘ut{}r}}ˆswv†Œ‡o{‡†‚„uxxqx€x{z‰‡“†vŠkuw„ˆ‘Šs‚‚‘…~|t|ŸŽ„|nˆ‚{€‘}…‘ŽzŠr~z…ƒy€pn{kŠƒ‚zu†Œ†|}~yy†w‚|”ˆt…yz|„‹¢’{‚Šƒ‚|Š{™~‰}yyl‡¢r†€„…’€…pjxw}‡“‡ƒ…‡†yq‡u†‰t{f‹‘„’…–qv§oŠtŽl‰†~f„xŒ…Š‡ˆ~}†ŠŠˆ~s‚Š‡€}‚bŠŽx‰|ƒ~vv}—€v~uzv„‘t‹{u•‚|†‚Œ…„‚†w~|‡ˆuw„’•˜FÁHäûêÿiÀDQÎ^ÿÞóÿsák2ÃLÿÃøÿŒìj) =ù¸ÿÿ¹î;Ž‡ê‡üÿ¼ÿ>­0våˆÿñÍÿX¥?W ÐzÿÎåømÞ]N¹UÿÝþÿ‹çw)-«IÿÇÿÿ ô:†‘3ÿ¢ÿÿ²ÿ@|=ä”ÿÿ¿ÿG¬Fh +Ýyÿö×ýcºFGÑjÿÙÞÿyÛW8 ·RÿÖÞÿêx +/–?úÇÿÿ¡ø‹:‡2ý³ÿÿ¹þ[ (z$ôyÿ÷ÈÿT³.r1遑~ƒ†‰ƒq„l‹„€{~Œƒƒ„y~ƒ†„Š„ˆ‹€„yˆ€’‹{yƒv‡}z‹t~„i…yus„h}ozh{Žu‰g}‚n‘tn…ƒ}‘ƒŸz’w~Šu‰„]†wƒˆŒˆƒ„jm”…w‚z—xy{g„‹z‹„‰Œ`jvt€sxt„š{ˆ‡€q€|{‘~f…zzŠvv}€Žœ…†{ƒ‹}€ŽƒsŠˆu‰}ŠtŽs{x€€||w‡z“„‰vƒz†ƒ…ƒ‰Ševquqz…tŠui‡~—‚v…h’„nzzz…‡€›}zw…yŽzsŒ’uˆr}{ˆ†~‡tv…g€‹vy|x“’€r†ƒ‚††~{Žƒ{‹€€ˆ€‡coƒnƒv}{x‚‹p}qq…yy…†}‘~€|u‚u€‘„wƒp~uƒuŒ€Œz}w„w†y…zo‚{l‚nƒwƒ|ŽƒbŠv“~~}yšz‡zŠxxkzlŠ}‡}|yy†]†~ŒŽ…„w…hv|u†}‰†€Œp}r{}ƒy„Œ‚‡t}~|ˆwtrˆw…y|…ƒv‰yŽ€|u…n}~…xvt…ƒn‘s–‚‡“y†ty~‰zƒ–‹ˆ†‡‘t‰{q†€–•xxŠt‚„{•’|Š}{ƒvy‹•k„€Š’OÔ«ýÿ§ä,x +.®:ýªÞÿ©ó)ˆ”0ÿ¤ÿÿ»ÿ< 'uô“ÿäØø_¹6^ÖyÿêâÿkÈPNÁRÿÌêÿÒ_ ++¸KÿÄôÿŽõq “Jù¾ÿÿ”ü(›„:é»ÿÿÆÿM©9eè‘ÿ÷Üÿ\µ?`ÑwÿâÌÿfÕ TJÃdÿÖùÿÜh 4¯EÿÁÿÿžç(x Ÿ;ÿ°ÿÿ­û-•ˆ,÷œÿ÷Ñÿ?¦*bæŽÿùÓÿUÃBU +Òsÿôâÿtº^GÄ\ÿÜöÿŒ€r~†{€~|€„|}}ƒ|y†~~…‡{„z€„ƒˆ{}…z€„~„€z‚tuˆq~Œv…v|€u€{Œx}{w}x‚††w„x…ƒ{yzz†…wŠ{z{x‰€xŠ‚†€ƒ€Œ~z~‡ƒ‚|k{…y„{x~…rz{v…tuxj‰€z…‹y‡‚†xx}q~|ƒ~~‚w†ƒw‰‚‡|‚yƒ‰ƒ~†……‚qˆ‚y…wƒ}ry|‚{}tz€…|~ƒx…}€…}ˆ‡xxƒx……}}syŠr{ƒz}ˆ‚ƒ‡ƒ‚„€†ƒz€ƒz‡w~xv|…z||~…x}zt{‚ƒ~q„}„‹€xx†ˆ}w†€ˆˆ|s€r~€u{†|}‡|~}~…ˆy‹wƒ~€v€‹ƒ~xƒ}s†u‡‡~z~‚‡‚z~‚x{~}uˆƒ{†…€{€{ˆƒ}|y{{}{~ƒ€v|xt|z~zwt€„ƒu€y}ƒ……z‰w~y~x€s‡Ž„„}wtŒw{w~ˆ…~Ž‚‚r|‰s„~{v{~x†y€|Ž}zŠz…~ƒuupx‡‡}‰‡‰zzv|wˆwxw‡…ˆ‡„wv‚||v}z~w~u†ƒ„…z}‡}mŠzŒˆz…ƒ}{|yr‰…y`ázõ9QE»WÿÐ÷ÿ„âe*¨@ÿÃýÿžó"‡0ö®ÿÿ¹ÿ5£(uì“ÿÿÉÿO¸9c߀ÿöãÿlÏPNÍhÿæõÿ€äi7¶UÿÏÿÿ›ët+¥;ÿ¶ÿÿ³û5‹‰'üŸÿÿÃÿB¤# +qçŠÿó×ÿT¸5XÑqÿêâÿmÌQBÅcÿâîÿ|ßo2¯QÿÌþÿ•ôƒ!ž>ÿ½ÿÿ®ÿ/˜+ý¨ÿÿÊÿJ¦2wîÿúÙÿZ»=]ÞqÿçëÿvÏLkp~zx†„‹|{„w„zpxy‚ˆ‚tŠtƒƒ{xˆx€ƒ‰‰‡‡}}{u€€‚…s“|€ƒoyƒ~|{xy„{tƒyu„u€~‚‚~ˆ„„j‡ˆŒy{‹‹m‡„}|}„Œzw}s‹|~…|ƒ‰‡|‡xuŠƒ„Šx~„„yuuƒ{z‚{|~‚Ž…€„{zŠ|ˆy‹~y}vzˆ€oƒ…n…†‚|~v€†€€uz†y||}Ž‚‡ˆ{~ƒŠ‡„}Œ}…€˜q|‚v|‰ƒ}y~‡{†ƒyqƒ{{ƒ…v‰yw’wˆ‹‚}†‡s‚q€„}v{o‚u}y~…Œ‡…o{t€|ƒ{zq‰}}ƒyq}ƒ‚y…||‚zx{vx‚†xŒyz}yyo…~~‚‚}|†ˆˆ‰v}~{‹y{uy}’‡Š…}‡{Žˆ€|†~†ƒx†|…ƒxƒv{x}|†}~†{{twzˆv‚€|ƒvz}{‡€„|{z…Š‰{|ƒr|ˆwŠ~r|~~‹x‚t{‹€€~‚ˆŒ‰ˆ‡}€{‡…†‹€y…{‰‡pu}†‚yˆ‚|y‚y~‡~p{‡€„x~‚wn|w€€{„‡‹ˆ‚q|Œpwrˆˆ‚‡~„€…’‹m†}|Žp€‚ƒ‰€‚„…tŒ˜u‰º¡ÿÿxÓ]2¯SÿÍúÿít +!;ÿ·ÿÿ ÿ)“‡*ô¥ÿÿ¼ÿ@®,sé›ÿÿÖÿX¿D^ Þ|ÿíìÿsÔSIË^ÿØûÿ‘èk7°GÿÆÿÿ£ñ&z ‘.ÿ¬ÿÿ°ü2• ñ–ÿÿ½ÿC¨+d܅ÿôÔÿV¿ETÍtÿçæÿkÙ`;Ã\ÿØöÿ…ìt +-©FÿÈÿÿ¦û)‰5ÿ³ÿÿ·ÿ7›!‚ö“ÿýÎÿM®/kâ{ÿòÙÿ`Ã@UÎhÿáìÿwÒS=¸VÿÎùÿˆåk#¤BÿÂþÿö!‡‘2ù¯ÿÿ³ÿ4›& |!ì§ÿÿÇÿL·6eáˆÿ÷ãÿcÂGWÛqÿèïÿ~ÐWDÅZÿÓüÿ‡ßl-«@ÿÁÿÿ˜ñ$€ +•-û±ÿÿ³þ4‘ !ï™ÿÿÄÿF­2lâ‹ÿúÕÿXÆCd +×xÿòæÿqÔWGÉcÿàüÿŠân:µLÿÈÿÿšð"€ ¡1ÿ°ÿÿ®ú3†÷šÿÿÀÿH¨#rä‰ÿöÒÿU¹:XÒsÿëâÿjÒW@¿dÿàïÿ}ç k7´OÿÌÿÿšø!ˆ%ž<ÿ½ÿÿ´ÿ4”!‡*ý¡ÿÿÈÿJ¦0tîŠÿõÛÿ[»=_×vÿëæÿjÌKDÁ^ÿ×ñÿƒÚ `1­HÿÈüÿ–î} !Ÿ=ÿÁÿÿ£þ+–‹,ö¦ÿÿ¹ÿ=¥% yé’ÿÿÔÿV»9f +Ý~ÿòæÿmÉFSÎfÿÞóÿØ]@½RÿËýÿ‹çp(¢4ÿºÿÿ¨ö)…‘(ö©ÿÿ¾ÿ*ŽM‚‡Šx‚‚{„~~x…t‚}|ƒŠu|€m~u~‰€‰‡€ƒ€{‡}xˆ|t‡ƒtxs……}~u…p„…€„~t„l‚~{Š…w„u†~†wy{yƒ…‰{†‚|Œy|{‹‡{~z|zvƒ}~|‚ƒ}wˆ†xŽy‚}€z†v€|v†zw~…x‹“‰|{{w‹~„{€w|||…}„|x‚†„wx„}x‚xy|~„‚{‚t†„„„sj€Ž{|t†wx‡lŽ}…ˆxƒƒzx€u†‚ƒpz}rŠy}‚ƒ~ˆt|x}„{||tz‚€~‚…u„„‚€|{|ƒ|w…}‹€€€z‚‚~{‡zƒ‚x†}‰‰y„~€€„…†„{…{‚…|~sxxr|Š}…„yt{‚||{‰{ƒ~†~qr‹€|…y~†vˆ€v~~m€€q‚€€‡uˆ~€€~…‚ƒtƒ|ƒ~‰„„Œ|‚‚{x……}yxƒ€~{s„ƒƒv„‡w†xx{†~ƒ€‚„u|}‰{~ŠwtŠ{tqƒt‡‚€ƒzƒ‡z„€u„†{ˆ{~w|~~Œ‡ƒ}~„{ŒzŒŠyy~€†w|„‚„vx|q‹‹ˆƒ~v}…‰x}~€x„{}v„€w‹‡Œ{€s„}Œt{ˆn†yy„„…v€…r{z}sƒ‚vz†~yw„~‘uv‡{|†…„y‰u††q{xy‚uxŠ|‚y…{‡‚}yˆ‡yƒ€xŒ{Š}w„q’s‹„{}v}rzˆ†€ƒzyˆ‰{|s|„ŠŠ„‚‰o…†xw|€Œpsƒƒ{‡||…z„v|†‚ˆ‘w‰€y|q}~~†…w{‰~ƒyu†ƒy‡€‹zs‡€~|r†Š|†~‰ƒxvw‰ˆ€x|h‚}ˆu…Œ|‡…z‰|~~s€||…{€}{‰~„zuus~~€y~t€€y|„zx‚‚ƒ€€‚ƒ|}|‡ƒx‹s„‡~v~q‚t~€ƒ„€†|€‚ˆ†yw€~„wvwŒnˆup…†}‡€n„„{ymx„~…‚†‚„|v‹‚{ƒƒ†~€}~‚Š€…y}…z€~€}‹ˆƒux~‰zƒ…‡ˆyƒvƒ~zzz‡zˆ~}…€†ƒƒy„}t~„‡„z|‚~‡‚€{vzz‰}y|€}w…~’z€~„w{|…~mƒ|z‹{€|y{zz‚v‚‡v~{€ŠŽ}‡}~‚vƒ~‡„ƒ‰}ƒt†ƒƒ~|†ƒ}|†„}€ux}~‚v‚ƒ~~}‡~~{{y~‡z‰~tv~€l~xv|xy…{……xx…~‰wŠ„Žt†xw‡w|x~‚}u…w‰q‰zŒw€„‚„~w‡„‰ƒ€…}yvx}…|~zv€„~…‡…†‡zv‰v‚ˆ~‚…~‚‡w|w‰ƒu€zz‡z‚}{†u|q|ˆ‚v…x~†~yt{‚t{‡ƒŠƒu‚v|€zz|…ˆyƒ‚„†‰ws~‹~|v{†Ž‚}~~‹ˆ|ƒ‰zk†w‡{y€~ƒ{}‹u€xw…q†ƒ„y‡kƒƒ‚Šƒ{zy…ƒ‡ˆ€„ˆ|~zx{‚‚ƒƒ‚„€v‹€}€n€‰ƒ€vz{€{ˆŒx‚zqƒƒ‡€z„}„…„€Ž|r‡tƒ~{st‡€|ˆnx~u‰zt~|†„xz}~wƒ‚…}Žu„€ƒ{{Š†‚ƒzyy‚xxs‚ˆvƒzs†„yz„u‚|{€…}yu‚‰†ƒz‚ŒwŠˆx€~||{ƒ}x}…€‡z„†Œz€ƒ‚~‚†wƒ}y‚|p{{z{€„‡‚€ˆ‡ƒ‚x€w…€~€y…‰|…ŠƒŠz€‚v†{‚‚~u„yƒyvƒ~~||y~}yŒƒx~ƒ€ƒ„yƒ€„~~‚{w{~}t€w†x…„ƒ~‚{{ŒoƒŠ|{‹}‰‚ƒƒ{|„…~w}‚‚ˆ‰}|„†ƒ†|‡€…†y}xy}†uz‰}…‚zˆ‚~€‡x}wq€ˆy†w{wxŠ{w|wy‚x|ŽŽ„|w€xyƒ€‘y€ˆŠ‚ƒ|x|‰€ƒtƒ{€‚„vzr‚z…z„|‡Š€‡x}ƒys‚€u~}{}‚z~„|‡†|‡Ž~€x|‡€~~~…€{€‹‡{}ƒ‚‡ƒ€u~}‹{wn€u~„€‡†|…r|n†‚z~w†}vxkƒ{||‚~s~€|‡ƒ{€€~‚v€z{„ƒ‰~†xyr„€wƒwqˆƒ€Š„}ˆˆy‡€pu‚|ƒ{„ˆx†y„v}~ƒƒ†„„y‡ƒ€„{~€w…„…}€x|‚ˆ‹‹‚|ƒx~…xƒ‚~~z„†|w~„zw~uu€…€wƒ}ˆ~w‰y}}~z„„qˆ}€~w€q€y€ˆ‚vƒ~ƒ€wwryz{sƒ~‹‚ƒry~‡p……}}ƒ|xˆ|‚„}~‚ˆw‰~w||‚‡~‰‹{nƒ‚„is~|p…zy‚z†‰ˆ€w}€xƒy€~{~{…†t…yƒ‚p|~z†{x†z‡y|…{‰ztz~{†‡„ƒvƒ€|sƒ…~‹xˆz~Œ~yƒ|†„†}}u}‰u~„Žw|wƒ‡†yˆxŒ††}€„…zz‡|x}‡v~~x€ƒp|€z‚‡†„}„ƒuzw€ƒ†„„y{~€„z}}ƒ‡}ˆw‰{|}yu‚€ƒ|n|…ƒ}y„ˆzˆ‡~sƒ|‹…ˆ‚tŠzƒ‡‰„ƒmŒvpˆ~t}z€x|~‚€‚‰}l‚„Œˆt}ƒx…ƒt€†{{|€z€†€x€|…€x|w{‚~…~}}ˆ~€†}ƒ‰nŠy…~‰ƒ}ˆt~v„}~Šw††‡y~„…v†Šsˆx|…„z€‚yŽ„€v~„€‚u}ux‰wƒ{ˆ…}“y|z|}„†y…{ˆs„‚z„‚r{‚v†zw~ww|…zvx…Ž{ˆ~|~v}Š}‚„}ƒ„xƒ‚y‚|w{‚o€v€€ywz|€}|{z{†~‡x€„‚‰€Ž}x‚~~~~y|€…ƒƒwzƒt‡‚~„‡~…€}ƒ…Š‚~„~{s}}‚‹s|†~‡€x‹xƒ…w†~||vx{xŒ{{ƒ{{…‚Œ~{ƒp€ƒu‰„{€vƒ~ˆz|ƒ{€‚ox“sŠ‚Š‚w{ruj‰ƒ}„~u|‹l~€‰yyut˜€ƒ€}€y~†€|u…x}„~x……Œƒ€€~„€ƒ†o€~„{}ˆˆˆ‡y…‰y€x}rƒ‡ƒ}€|…~ƒ~‚€„‡wro~†…y‚…x€Šyn€€ˆ€y{kƒ}ƒz~‹Šp†x{ƒv…{rz„w€}†{}Š…‰„|}„}v‚q†q‰tˆŽ}Œ‡‘‚ƒx‡xq‡~|…vz…€zŠlt‰ˆ‚ƒuwƒ…Šxw|ˆ…yŠŠ‡…x~|‡tŠ|xˆ‰s|{…‰uwƒŠƒ~r€‚~…ƒsysx{‡€†‡|tt}Š~†|i}v†—sƒŠyŠ‡w…‡rqzt€ˆ‚‡wy‡–‚Œ‚{ƒ‰ƒtwˆˆ‚ƒ†s„~‡|†…|{{ov|‚†‚ƒx{z~‡€z~~„~|z|Œ~z|zrˆp€y|{‚|€{vy…ˆpˆ|x}pŽ„v€‚‡~x{•‚„xvŠ„~i‡xŠyzzn†‚{†v‚†rƒtzi}‚€~wŒ|‚‰dwŽ‡u{}}†‹ow}‚yyƒ„Œ„vŠt‰}p{qz…{€€„ƒ†~‚v„wmŒˆ}zxˆ{€ƒ{„‚yx…Ž†xusŠ„kuˆƒ}‚}xu‚}„‚ƒvxtvo‡ƒ„~„t€wyyƒv{v˜€‚†|}~„}yˆ€Œw‹o„r’{{}‡ƒ|}yrx~…†€‚‡‚|uu†‚zy…‹ƒ…~sy{}‰{ƒm†yq„v}ˆ†„x‰|tu‹oq|~}~€|€ry‘l†…‚}z|d†ryˆts‹n…‹Š„ŽgŠ‰x•†rz|ˆvzd‚„u„~xv€ƒy‚s{€t„“{y}†{z‚pŒ||x{‰„‚„t}€€l|ƒzu€‡„‰{€|„|”}zˆƒ†}r‰ozx„|y‚koˆt€~|zzurˆ||}xy‚wqzˆ‡‚rƒ|‰…—{…ƒ‡’r€zy†~yv}‡‹{‹v†w}‹Šx|†ˆ‚Šwy‚mx€‚w†~{‡ˆv‡}z~t€‚r†…‡~„x~ˆq{|’v{~xƒzx~|u|‰y}„~}ƒ{}„z€…w{ƒy‰€|‰ks„€{Šx{„‹{Ž|{y{€•‡vxv~‚€vp…x˜ƒ€ƒ{xx{‚}d{ˆ„|w‘……•‚~†€†|wm{z|‚~zy|x‚p„ƒ‹rv}ty“‚z‹}ŠŠ}x€}…}ƒ€{zu}{…|‚su|ƒ€€ˆ‚}p}u„‰|w‡Œ†u‚|†€|{v…‚‰nn|w{uyy‰…„~{uw‰v‚p‰r{‹„‰…Œ€‚†i†{‘†€€‹†zplk}‚~†v|yg‚z€†|‰„Š‚ŒzyŠ‰…‰”„y|ƒ‰v~€…||„{y†y†q€€y‡|†‚†„v‹{…”v‹zv|„{ˆuƒ‡‡‡q„‚ŒŠ‚…ƒ~|†tzw„sŒ‡|qz“zyƒqw‰…sx~~k|wv}†}xtpv’w{‡{‹Šuƒ€Œƒ„u…tŽ€•Šzy€q€imˆ„y€t‚‡…—trw{…‰|‚ˆ…z„nu€„u|vzz„}‡v}xzv|‚zv}uŒˆx{|}‹{…~€}zqy}‚ƒˆmw‰‡~|{‚{jƒp{ƒ}{|v‹~†v|Šq~}s†|rj†w~†}—„svxl„‰y…qv€yr{}ƒ{ƒs’|…‘ˆ~{yvuuŒxr~wˆ}}‹†Œ…‚ƒ†y„ytz|s…r|}{‚Žw~€ƒˆˆ~~ƒs{‡y‰ƒ|~…Œƒ‡|{{ƒ{€‹r‚Œ~„tw|{Š€}ƒx|ƒ„‘x‹|‡„~†yxpp‡€}…l‚{˜vŒ{ƒŠ‰qm„y‚~†…‹xz‡ƒ€}xxz{‰‚~}h…ˆ~€Œ€Ž”vw„yuw|u‰€‰†x|€€‹ux{ty‡}|yyv‡€‚…r}}s|„{…ˆ‚}}†ŽˆŠw„pƒ~p„~y~„†‹z~€€Œ~~wzy€Œ†‚…ƒ|kŽ€Š†rƒ„z”‰txur~ƒ‡†p„„q—}€zv{Œ‡zoŒr“y€}}‹Žv}€w†Žž„€‚‹uwto||sw‡„ˆ†x|†x‚w‚xzŽyŠˆoŒ‚yˆy†‡|~ƒŽ|~ƒyŽ{xƒƒ€~‡Œ‰|„s‚yƒ†|}Š|ˆ‰~†Šy‡‡s€Ž||…|Žˆˆƒ|vr‹ƒŠ„|ƒ‡uqq†m’‰{tˆ|„€qs‡|ˆ‡‰}†tk‘qƒu}y{…~yq„}s…t…‹‰‚„„‚‡|„x„†‚ƒ†…‚…|{ty}‹„|…ƒ€wr†v€„†‚‚ƒƒ}t|~ƒ}~yv~v|v~†ƒˆ€zŠ†ƒ€‡}u~o†}€{„u~r{uywq€‡ƒ{‰w€‹}b‰zlƒ~ˆ€|‰~ƒ~{{ŒŠ…„nvŠ‚ƒ}}zs‚}…qƒw‚ww}…†{ˆ|}€|s„pƒŠ‡}}„~x{tzv~|ƒw…€Žˆ~„……yy…†ŠwŒ|y}su„€‰‰{€znzƒ|‚r|€xu–uŒt{‡z‡ŽŒ“{‹xv~„q|u|‹‰r‡o„kz€ƒ|Š|„“z~~zv}u‡…r€}}ˆ€xƒ{yƒ„‚~Œ|s‘zv}ƒŠƒq|x„{{„ƒ||}ƒˆ{…†~‚y|~‚{€zq€„~z‚‚™ˆ†}|††p|tw‡™‡t…pƒ|s†yqˆŠŠ~~w‰ƒ†—{ˆ„szv|r‰‚„ƒ‚Š~k„v•{qƒv‡w…Œ€{~qzx{{…{„ƒ€x{z’€wzƒ}’‚‡|ˆ…xx‡†{…ˆŒ‚‚{€‚€{x€}m€{}|}Š||’q€‡„€t}x„oyuuzyttzƒo‰rƒ‘‰„†—}}~|}…€€i}‚‡…„‘z“xƒ™‚‚zwqŠ‰…‡wƒ}…|}p~o……‚‚zw{s|w‹…wvƒy€…‚…{uy†}|~ŒŠ}}x‹}|‰Ž‡„q„s‰‡~{tpw}s…ƒ}}l‡}ˆq{ˆ‚ˆlyƒiŽ‚{‹ƒp~yznx‚{„…‚uŽ€w~oŠv€‰”|~i{~„†„{swu{‡v†}{xxs|~„…€…~wƒy~Šuˆ„yt‰‹w€v}‡{z‚r„‰ƒ†xz…‰wƒ…€|ˆ~‡Œ€{€x}…y{uzƒy…{qv€…„yw‚…–‡qur{„€€€{˜€}ow†ˆ~šy‡ˆ“‚€vzrj~zq…u‚…~„“w{‚†~{‘r}yy†{s„‡yuvƒ‰q„iƒ||‰€uxƒu}„ƒ„~x€ƒx†{†o|~|…ƒ}y~q}€ˆwƒy‡z€zzz€Š‚‹…‚Žz‰„}ƒ~‡~{vzvw…~{‚‚w{ˆqƒ~pƒ|}~€‘‰…~zzx€‡zz~ˆ}w‡z‡Š‘†|iu…‚Š‰v€zvu‹‚vƒlƒxƒx‹r‰‚v}{‚€|wvˆv€zxu„}Š…€ƒuxq‹|…€x„„uƒqvƒ|‹Œ~€ŒŽ†xƒ~tq‡xlxq~~€{„ƒxkxz‰|…vŒw}v~g‚~wz‡p‡vƒ”{{†…ƒzŠw„x„{vwr|xwp†u†‚„|~†v‚‚wx}~}ƒ„‰„‡|„ˆ€uz‰s†}€~€}}†{‹“{€ƒ……x„y‰†w…xvˆ~~†yŽ‚t~x‚|zyw…„“€r€Žw|z}”{„y„‡†iŠ}‚…ƒxr‹‹wweo……u‚u|r„x|ˆ‚|†‰‡y‡t~yŒ†€v…‚y†ˆu~o‚|…t„ˆ…~Œ†ƒŒzs…|€{{‚|†zŒ}‡y~Œv†~ˆn‚‚Ž†ƒp‹†‚wx|†{„’~‚…|ˆzr†ˆys€„~w„ƒ|†…z†x†…~k†|‚„ty‚vw~‘€ˆv{}|‡x†……{ty}ƒ‡€wwˆ€|…r…‚|‹y~‚zs|}}y‡yƒ}t€mƒˆƒ„wxx}‡v„{}Šx†€p}}{yŒw{os†}}z~ˆz{r}x|„zzk{wŽr}„{{}u…q‚ƒ„{}~{~€|{yƒ†‚Œ‰{…‡€…u~x{}yxx‰ƒ‚Œ~{–u……|ƒ‚Šzƒ‡„w}„‘„–hŠ€‰Œ…uƒj„~ƒw~‚‹y•yƒƒz‡†nŒs€||€|z‹t}y‡}v’~z•‡~u‘t‚—r|x{y‚v‰ˆ~‰vŽtt‘y…z|Žƒ|{{~‡z‡…€p‹xŒŠ€€x‹z‚xƒˆz{„ˆ”~€š|„„qƒ€~}~ŽtŒ†}~v†ƒz„€‹y…~†‰yy„…†…Š|ƒ}{|xxoŠ}ˆz‚{’†ƒ|s‚Š‘~y}‰|†z‚ƒ€†zˆ‚uŽy}€Žƒ‚€v|€zt€}~{}}‰}|€~|€|„Žw~‚~x}ƒx~suƒz~†‚ˆ‰xw†zŠsyƒ}ƒƒˆƒ‹ˆ}~}ˆl~x}{†}~†‚…„‚}z‚~{~„~~……qws‰Šwƒ|Œ‡qyqzwƒyƒq„w„t„€w{nwy‰‹z†ˆ‰sƒjˆv}€‰Œ„‡‡uy‚v}tƒy~…u‹xŒ€px‡r‰Œ€ƒs‚xƒ|€w‚ƒ„{|z‚ww}zƒ‡‚„}}‚„tv~{Š~Š|ŒŠƒxu†r„vŒ~}tŒ€{{gw‹|ˆƒ€}zv}r}{z€mx„xq€ˆ†|‰†}|~‚ˆ{y…sx„‚…v{}”|‚zƒ|nzwu‡ƒ~xs‹v{€{„‰~€}~…vˆŠox„q†€~~‹}ˆ“…zuƒ|‡xnzyu€wsxtruxy„x€}xz~wmƒw~y€‚~‡‹Ž{€‚}‚‡zx‰{‰s€v‚‚x}ƒs†z}wp|x~{vvvƒ€„‚Š‰}}~|‚wi‡z}nz~ƒ€z‡ulks~}‡t‰‡{x|{€‰r€kŠ}„€v‚‚|‚x{v“{„Šzxy‰ƒyˆk„…yzŒz|…€|~…xƒ€…†v„yy…„wsu{{lsw‚pŽ€‚yx}„†‚{wqqqv‡~‰…w|y‚~xup~g‘‚|}}qz‡’ttw‹}‚‚x‰€r~‚ˆwŠzzzŠ…}†k€Œ„–‚~{‹wp„j‡r‡s†‚‘…u”}ƒˆyr~dqŒ{Š€t‰‡q†sj€u„q†r‚p€Œ„v|q‚}“}wzƒug€„{‰zˆ‡ss‚{ˆ……‹l~…ƒ†~„……z}p†x‚…yry‚uˆ‹tŠ†yƒq~y ˆr~pƒw|hr~‚t‡„Š‚‹‡j†noˆ•‘Š•x}¤€‡‘Œ€Ž‰ƒn‚‡~w‹~Ž~qz‡|‚Š‡a„vnz‡xsv{ˆˆŽƒq~„Œˆ€rf‡…†Œwv~u{’‚|’t‡~qj{kxt{‰yuw‡~t}ywtƒ‰}ˆ……„st‰}ƒ‹ƒ„‘}„|{h_ƒ{k~{‹‹uovyo{‰}…Œz‰‹Œr~h†zƒq}}œ|i}„Žu•nt¡€‡q†y…ua‡u{…€tyŒŒq‹c‡„Š}ƒvzŠŽ”yƒv€†uƒ„—ƒyz„Š{{†‰u‚‚}‚xuu‡w–|‡‚~‡€|‚~k|u‡‰r†il~s€†~†q‚rtt‚†Šj~ƒtqi‰„€j~‚…z…ˆm‚}‹Š‡{Šq““€Žˆq‹‚v}v†ƒwž}uŒz†Œt“™‚y‹ˆoŒz|{]€mq‹‡ˆeŽh{‚€†x…Ž’}†Œ~u}€v™z€…€xŒz{g‡}v†x‚‹€„–…€‡†‹‡‚„n‰…z}t…yp…v‰‡‰†{„}q…yoˆ„jƒ†‚n†‚wo†‰woŽ||fxyvg‹‚‚kŽky{€†{„‹fŽj†‹€‡€€ƒ|Y{y‡|‡|hum•~†w}…xwn~}‰ƒy‰…ƒzy{€ƒv|zƒv†w{p†„ht|e‰†{sƒy„y{vj…†z‡|}~†‹Žˆx…|m‡q…‡—ƒrw‘€‘…tsxb‹‚‚yŒd†{›‹„qŒ~u–ysoŽu…„„‚py‚…œz}|†‰ƒƒ”†y…‹~…}}—s„~}oz†}|‰Œy€ƒ|€|ˆ…z”lƒ~zu‹~…Žt„ƒŽv„…{x‹€‹x„qx†}Šƒ˜tyo{uŠ}qt‚}y–v†zz‰‚ƒ–Š‚„„€Ž„oqjpƒ‚}ƒŒwzkx„‹€ƒn†p‡€yy‹€‹yp‰ƒ‚}x|ƒf‘€zƒn‚\~Ž}‡ƒ~ˆb€woˆw“}‚Œ~‘x‚~‰{yzˆˆ~€Š†{†{|l|~m|z‰‡ŠŽ‚†‰‹‡‘s~Žv—‹pƒgm€‹yŠtw{€y €„ƒ†‡…sŠr|‹‡v{…vrƒbz–yv}q‰‰’{|l‚†‚€Š{€{ƒ~sŠŠu˜€Ž~}zy{…nws|{€rƒz”‚’r†}„v|‹†„ƒ€‰|zt}ƒ–}’w†}„‡„ƒpm…ˆŠ~„w{tšƒ‡†rv…sq‚kx€{†o„un{}„~}~‹šƒx|}€g{o}‹…ƒŠnƒ~t}|}€€u‚€xzn–‚Š‰u‡‘z‚†~y€†ˆˆ|zˆ‚px{‚{t{^€ˆ………c„zu”‹ƒ„€Ž…‡~z‚ƒ~„…€|ˆƒˆ~}‚|{{‚~…€‰~x…q€‘|ƒy{z}…|…‡|‚‚„Šˆ‡~ƒ|‰}~†…‰~‚|ƒu€y~……ƒ‚uƒuu†}€‚xx‰w}†{€…x‚€~„ŽzŒ†Œ‹u‚……y{xŒxx€kŒ{t‘ƒ~…Œ~‡–~‚…„…ˆ‡tpy„‚ƒ|„w~pz†xƒz}ˆ…‚yv{{„t‚x{ƒw†ƒ|yy‚††‚m|†|}‚„x€~qyly€|‚x€ƒ…‚ƒ}ˆ}yˆ~„ˆz†ƒ€~{„yz~ox{yƒ‡~xƒ‹‰w‚ƒv|o˜ƒ•ˆv€{€y|rz}xt~xƒ‹ƒ‡‡ƒx{Œ†ou|„z‰zƒz„|zƒ}}…‡……}~‚pƒ…~}…y‰€†„u€}ƒtx|}…‡zx|zƒ}‚‰„ˆw€zu|sŠz~‡}‹|v„‚ˆ{v‚whŠy…pp{w™ow‘~}q~“||v‡€|ŽhŽq}z‚‡nk‡z„yz}{€wŒuŒ€y~…{€y€‡€|€~„’q||‚‚}ƒ€{‘ˆˆ~†„‰{{€…€~|‘y„‹w…ƒ~ˆrw||Ž‚~ƒ{€€Ž„}{~†}’–q…{‡~‹ywŠyvxy†€v‹w|s~zƒ„„‚……~‚…t|„vyv†Œ†|…‡†{wŒ…||„rƒ…q‰z‹ƒ}ƒ‡y€ˆy}txx}ƒŒƒ‡‰~„€ƒz„w‚zx€ƒ}ywszr„}†y€†vŽ{ƒzrŠ~ƒ‘v‚ˆ~nq~™ƒ‚ˆ|‡„„…ƒ}Ž}‚†‰ˆz‚„„˜„}‡‡†y{vo{z€ryw‘~q€|z…wˆt|€x‚‰‚„ƒŠ„†Œ‚…}w~€~†ƒ€sv‰x|{{x‰{ˆ‚x|t|†€‡}‡€„~yzw~z|c‚yz†zy‡w…‡ƒŠv}‚ˆ‰’xyts~‚vŽo||sj‚‰†{……™€‰q‰Žx™|w††{Š’††…€ƒ„„s‚v}~u~ƒwyz„vut…~}ƒ|‚‰x‰z}~p‚Œ†~{r‡t‹Šy‚ƒ~‡{r‡€z‚v†|zyvƒŠvt†…ƒw”{‚u}Œzw“‡r€x„tz€Š†…x†ˆ—~x€g†€zr~lzu{iŠ}yz†m†vty”}Š{‚Ž|“pw‹{“‚~|„…ƒ‘ˆ|†…z‚‚Š“†~‡ry‹Ž‰‚€o‚€„y€zƒ…ƒ…pŠ||~ˆz€‡€}}z~{y|{‘x|„€‰ˆ‚€wzt‚~|…{}†ˆ‡€~Šy‡{y}}“u„‡u“qŠ‚†‡y€‚ˆŒwˆ–†ƒ„}†ppty‚€€u†—y‚~r…~‹t{rk…ƒ}†Šx‹ƒ{u‡†{€~„‰lz{w‚‰||t…nƒt„‚~||{†‰‚Œuƒ„‚„ˆ‚ƒ€‚€{…‚y}z|„„{zxr~‚xz‚Šxx„’}…•uƒ~ƒ}~‰tlzx‰€vw|}uŒou{{ŠŒ‡zm‡ˆ€~|qqˆ‘’€s€~Š†~†‘‹„~|t„{†|€}y~||‹|‚Œˆ„xz‡ƒ‚‚x|‚€|€}}|„~xˆ~„}}‰ƒzuŒ{‰…oƒ‚„‡yu‰†xŒ‚|…‰p•~w‰€w}ˆ{—}‘‚zƒ}qˆˆl›|r~€|ƒ€ux~‚z†wˆ„…Šz…‚ƒxp…xŒxyy}…vxtz†„{z‡•sp~rŽ„u€€‚Œz„~‚ƒƒŒˆ‚ƒ†}…„{ƒ{xˆ{‚t€xs{nŽ†‚‡ŠvŠ‰}nxŒh}…}{zz‹m–~|†w……ƒv‡‚~y‹~‡ƒ€txz}……z‚€pz}{w‡z~„~mƒywƒv…ˆyznžvy{t‚€s‹|Š„pu~~†‰{…{Œ}vq„yx}z€~zˆ‚t|x‡}‚|…y‰xxy}ˆ…x†|vŒŽ€x€†€Œ}‚Œ“‘vƒy}{}Š}|€~}{‡{‹wo~…~z€y{vv„ƒ{~zzƒ{t{x‚‡{€l‰yn|q}€zw|Š„||j}…zˆ{‰n{~y|Ž~moys|z„~ˆ“‚‹~~ƒ‚‰o‡rup}y‚yƒ~~}’t‰ƒ|}„„…uv|ˆ‚†~xz}z~w~{…y€„‡€ˆmwsx€†x{…„„~Œtm~s‘r|Š{wƒw{m‡xz}„’|s†€p‡„~tˆq‡†{x~…„x‹i{‡xz‡…ƒ‡ˆz‰y‹‚v†|ƒyyv}Š…€{Š{‰uxv‡z‚‚u{w‹‡†€~{†t‚ƒq„x|€…t†|}˜t‚†|Šƒp€ƒn™…‡€†wŽ…„}cy€‚„„||~x…Šv€‰{††}u‘uŽy~ƒ€ywƒ}ƒ}t|yƒ‰|s€€~Œ~‚tv{€}‹}eˆ||‰‚‚€}€zxƒ…s‡|zŒ†sˆ‚z‚€~‹zƒz~…p…Ž}‚}u‹‹……wp~uy…„xƒ‚v„j~‡~ƒ{‹’v€†y†‚€n}€‡|r|v~Šƒ†u‚ƒuv}†ˆo€w‚—q…~„}{|yk‚€…„|…|Œ…Šlˆƒ|~ƒ€ƒ„{‰w„~q€€‚yqŠ~ƒyxw‰}„r€ƒy‰zzˆvwŠ|~~—€†}wzp’y‚„€…Œ||€yl}‡ƒt~~˜lƒƒ|w„„…r~z}†rƒ}ƒz‚{|}ˆxv€{~€}m‹ƒƒ|†‰…wŽw‚„~x‚|}{}|t‚•ƒ‡m}Ž|€z‰€Œsm„x{…„‡xv€‚ˆŠ|ˆ~~Œxtjo‚„zvuƒ€mv„zŽr{zmq‹|‡{ˆ€sƒzmr„~{~€‚vƒx…‹}xzˆˆƒ}~‚z†u†ˆy‚„€„xƒr†w„‚}}{tŠ‚†‰{‚€{—|†…„„‚xq‡l}uyƒ}}w†~‡l|ˆ‡€y€v„–…}~†}b{t|‡{…~{{“x„xz€†wl†uzl~†zzx{‹‚…~x„‡ˆ‡k{~|Œx‡~…|}|x~{ƒuˆ~w|†……pˆ~ƒ~z}m†{z|y„€sx|{z„t††…|“†z€xzy|†ro~{…„p}€}r}r†|†ƒ†tw{n…x|x‚†|Šˆ•ƒw|~‡…v‡q—ƒ€z|‹p†‘s‡…}€…€…m†’zˆ‰x€~vtyx€„w‚‹|€x}…}}x~…„}‰|„yt}€v€€}t}|ƒ~†y|„t„p}Œˆ‚|rn„ŒŽzz|uˆ{‚}†|„€rŠw{zznˆ‡w†nzŠyŒzt‚‚m~u‰ˆ|Žs}˜ƒ|ƒ„…†znv‚…{p‚‹ˆƒ|{‹}|†p{€ƒ€ƒwuƒ|s†tn}„…~{€y‚u~|y{‡~„†}ƒŠ‚…}y„zqƒp‹zz…†vys‚ˆ|Šz‰uylr€|zˆy„€’’}|Šƒƒt{†‡v|vz~ˆ…ovu†‚‚{ƒw„‚~…}€|‡‚x}v{‰zu}}}…z‡}{|r{rux€~h}y†xz„€…~€yƒˆ~‹xzpy€ƒt{ˆ}ƒˆ|‹ƒ‹rv}ƒœ€}~{{~…ˆ‚j}„u„~†v†yŠxv‰„‹‡wzxŒ{…{z~…†w‚{…‚|‡‚~„ƒy†z€s†w}|…xˆ…v‚w€~ƒ‚ƒ~ˆ|‹|zŠx‡†ƒx|{}z†„u‡u|~~w|€‚k„~{~ƒy‡„…s…xz{€~ˆ‚ƒƒ}…‰‰~y†u‹Šw—t…‹qz{‹x…|ƒw{ƒy|sˆz‚€wƒ€‚{v}‡}|vz‡ƒvˆo…‚zƒut|„ƒ}tƒ}xv€}…}ƒ|€ƒ|’qmul{}z‹tw‰“ƒ–m~…u‰{w‡‚Šq†y}v~mt†{„‰‰x}zŒ{ƒ‡wˆ€z‹|‡…|~…t€w…}ƒ…†}wx‡xww…€€†uŒx‚‡zŒ‚{z‚{†ƒz„Š…„v{€„yƒ‰v“qw…|x|{w’qŽ€v‰„tˆzs‚jx‚€‚vp‡|“’€‹ƒxx€zc}~w€yy”Žƒ€wƒ‚}w~€x†€†x|€€|z€{€yˆv~…ƒ‡y…v€xƒˆ†…{†Š{€†„‚…†puzz€tŽ‚€Šo‡ŽwŠy‚€„‚…Œ…{’ƒ„~…„sp…‚k‹rv~yu‡„†—rƒ†z‡z~zysu‚€„‰z„‹xˆ„‡„}v…ƒxzyw~yx|ƒw~„ƒzƒƒƒ‹€~}~„ŒˆŠ‹vy…|€„rw‘Œ‡ƒ€|~r{†„Žt|„„‚€ƒ}qw…{‚x~~to’{‚‚€‡uj‚z}†…‡ƒ~‹€x}€}„~~|z„~‚vzŒu‚‚zx~‚‡†zr…x…ƒzz}z†zƒ€u„ƒ„|†yw{{‚‡„{‚w€}}€Žyv}x…Š|z„tu€‰zry~‰j{wz„‰€€z~n€|‚w€‚€’w’‚}…€~€€†‡Œ}…{Š‹zˆ…w’v~y}€‚uw‹€€Š|zw€„wt„x}Œr‡ƒ{Š|{x{}€{…{„x~„€}xˆz…wn…ƒ•…v‚v}v”r€€sx‰o…˜tŒzˆ‚‰‡u|uv~yƒ~|v…i‰x{€€€}o‚ƒ|ŠwwyŽˆ‰}|€„‡uˆsŠtƒ‚y}…|“x€u†„|ˆ€tz‚z’z~pƒƒz…‚{}‚…v…‡†xŽx‚}xuƒp„|†…{‰‹yˆ}w†zmz}ƒ}xw|†y‹„†n‹~|Žsc~o…~}|€|€Žˆ‰w~‚}{’‚y€xyz‚tq{…|„ƒ}—v‡…}†x„v‹’ƒƒ}sˆ€„~}‡‚|‹€‚„•}€‚|{‚€~ƒuw‚{q…‚ƒ‡zv|}tŠ}z‡…„‚w€h‡~}†t|ŠtŒ„ƒ†„t‚‹{„‹xžz€}}‰…‚}‘}€{y€v}yk|vu{~}‡l‰€x†€~†zz`Œvx…wy€r€ˆ‡s~y|Ž{qszv…„…n~„z‘†zˆvu‰…|…‡ym‚z~„~…ƒ}ƒ„ˆ}~‹}w‹sy‹†€ƒ€ˆj‡xzˆru›…‚y‚Š~††‡‹|ƒ‹†ƒ„‹„|}Ž†q‰{‘…~}ƒwr„u›‡w}xvn’‰}‡z€‡{~z†€†o†~‡|s‰tˆ|}rx‡q€w}Š‰|~‡‡‰y}yx{Œz‚€ƒp}u‚q~~zyut‘„ƒ~}ˆszp’tz„ƒy„Žr~Š|ttˆŒ‚†‡z‚ny‹zŠxw|q‹†{€Œ|t‰u€t‚†{€y|ƒuˆ{‚|}yŽzztu}}Žu}~bˆ„~}|€„wsulŒ“‰‹~{vwuw|†rŒw€€yƒxz„ƒƒ{{„†ƒt|‡z~yu„{u€‰‡‡Œ…‚x‡ƒ|€‡yŒvxš‚|ƒv‚†‚ˆ“y‰†t„wxszt‚w{„ltz}Š~„}ˆ}Žzƒ€~ƒ„}q’~˜~€|zƒz€wkl€…{‹‡wƒ‚z}{~yow|uu„v}|~‡‚}ƒ}ˆp…€‚p|y†‚yxpw{‹v‡{}{pŠˆl…}w„}~cz‡~ƒŒ‚|„‘u‡{wŽƒ‰Šp{y{Ž‡y‹~{€{x„Š‹†{|„q‚ŠyŠ‹uŠzz|‡‚|€c}~Œzxƒwm“w~Šƒ€€„oz}‹~Š{˜‡…‰‡„x~z{s†€‰Œ~}v|™}w‡…{s|~q…ˆ„{w„‚z†y€x†~‹{q{††„„vrz€€{~|ƒ††tˆm~‰u‚t}}iz†}nt{vy“‚€Žt„{mˆ…}xz}pŠ‡„y}€s‘~y‚t|‚€˜…„Š‚x|{z|„‹}uxtu~’}|zƒyƒˆƒ…|€‰Š}|z‚Š‰„w~y€„‚‰q‚}ƒ…‹…z„zŽj‚‚‡~ƒ}’xs}{„~†vxv}|‰~…ziyr‚p…„ƒ~tmszƒ|yyrrƒŠv~|‚†yxx{u‚„z†‚x„q…~y†„vŠpƒz‡oˆ…†„u‚w…vx„vŽp€{}~€‡ze‚‚‚‚zu‚‚xou…€„ƒt…y~yuw‚Š~ƒrr{{yy{†€ƒ„tyts~„t}‰u€ˆ„uv{}‚‚€€}ƒx~ˆŠŽm‡…ƒy…~‰€ƒ|y‹„z„Š€z‚y‡}xo~ƒ…z‚~††x‘ƒŒ{zvs‡ƒgy|~„†{{w‚Žv‰}~ƒ€uyx|~„~twƒy{€…Š|†~…‡|rxx|…€‚‡†…sˆ†„„Š‚Š€{„†Œ„rtwyy}}{yxy•}ƒr‡uzˆ‚„y|†…|q„{€€€yj€††…ŽŽuyt}‚‚}ˆv}ym‡s{}‚“‚ˆz“‡‡…{†w€pz„z|~{{yw‚~}†ƒ€{‰x~z~u{}”~~{„vq‹uv”y{„|‹zƒm}{y€„{‚›„‡{xŠv……‚Š}x~wy“thyvx†yt††ˆ‹—~t„}†x…Š‡‰zŒz}€‚~Šwy€z‹t~y~€w~ƒwm‡|wyw‡w‡{‘{†‚€ŠƒzŽ–yx‚{}‡z~„~{}nm}}‹‡l|‚{Œz€„zƒ†v}|uƒ‚‚‹}}ƒyƒ†…ˆ‚…“‚ƒ|‹|†~iptw‰}ƒr{Ž’€ˆyv{~‰oz~pƒ‚zqŠ~f„v“‘ˆ†‡{Œ†‚‡Žx‰~‚‰ˆ~€qŠ‡~u{x~v‡~Š}ƒm„}~zŽ†…ƒ~…|‰‚|‚xy‰{x‡q„xz~~tŽ|zyy‰{‚†qyƒ„†{vx€{r€‚}~z†z}}|‡•’s~rˆ€{‡w}z‡}†‚zŽƒp„p‹{‚s}‚cŒyx}‚…kŒzq‡ƒ‚~w†‡yt‹w…€›ƒ„‹‚{~xwŽ…‰†€~|‚…€{‚t{‚‚€„ƒ„€wwt„ˆŒ‡~v‹q‡zwv‡yˆ‚Š{ƒ}t|ˆ€t{wj†‹ƒ‚z„p‰uŠ†}Žw}ˆ‰zuqx’€€††‹‚ks}~€€…„‚x~q}~t„sŠq…pzƒzŠ„‰y€zy…{ƒ{w}ry€ˆ~yy‰†€„‚„~|„Ž„‚z€‡…€r†Š€…~xˆ€ƒ‰{‚{z†~‚}t‰€yƒŠt„wzn‚‹t‚wiƒxuwvuŠ…~€q–{‰u€x{w~|“Š}uˆ˜r‚pwƒ€…ŽzrŽwƒ~…Œx–„rˆu€„{ou„‚‘p†}‚}n…x‡|‰{zˆu}‡v„ƒƒ…‡{~Š‚ˆ–{‚zƒ†rƒxƒ~ƒn„y„y||}~xƒ„tŽx€‹y|ˆs€ˆxŠz†r„}trwyw‚r‚…o‰‚ˆ……|zy‚‡‚{uo€„†x„~„†z‘|q~z„vƒzww{†}€}ˆ™qzq‰uƒb}Ž‚…x{€ƒg|ur‚sƒ„|sŒ‹„ˆ}€}}wy…{‹|Ž}‡~€Šs‹‰‰ƒ~}‚†€~t„t|„‚|€†Œ€y€x†ˆ‰ƒ€Œz{‹‚~yiŽŠ‚{‚y†ƒ}rˆ~‡†x„‚opƒy‡~s„„~ˆy”z{~z}ˆt†jx~y~~v|{tpmzvz{yr‰‚wƒ|€ˆ‡‘‡w€oyˆƒƒ~o‡„‡€~y„€xˆy~|t}ƒ…ƒ}…xyŠy~z{yŠx‹}yˆz…}…‚|†~Œ…€z†‚ˆ‚„|‘ws|wq~‡{ˆv~‚sq’€|ƒ„|v‹ƒ}z€{x†v€‹{zz‡}v}v~k~…ƒ‹v€…ƒr€}…€‚ƒs‚Œ‚‚s„y…ydƒŒs€}|w›y|vuˆ„~y|ƒ€~}}|‚‚yv…„~z~u„€m€{|…Œ|Šuoqq…|}p|x|w}yw†‡†}…}†~‚}z}‹ƒ~}{Š€Ž|}˜x}xy‹|Œ{ru…yƒ‚€vqyv{‹‚|‚m‰y|r‚€…ƒ}|v}qŠ|ƒ“‰Š…gˆ}x€yŽ–„ˆt„tsu~ˆsŠ~y‚‚‰wsŒŒ~xz…€Žsxuvw€uuŒ€‡{{q}„€y†„ƒƒ„zw|y|…‡zŠ€}syŠ~ˆ{qŒ…xŒ{sƒ}|‘v€hs‡~w…fˆ“ƒ~~{‚|Œ}vs}‡{”zƒŠŽ‰~s†ˆŒ~†y–‰ƒ€y~xw€Šˆ~†yzwxzvt…s{}ƒ‚~ŠlŠ€‚ˆ‚v‘ƒ}‰w{…|}„yuƒ|†‘~†Ž„ƒ‹|‡„t~‡~‚‚}ŒŒ}‚€‚‡€‡e‰€„‰~}‹…uŠw‹y„ƒqyyrv|v…|p€|‚†”Š†u‡†myh}}Š‡tŒt‰sup‚„w‚vh†uƒk~~‰|w–†„l‹ƒ}ƒƒkƒxu†‡}}~~pu||‚~~ˆy‚‡†xx}…Ž{‹€{|~uxw…x„|€uzƒuƒ‚}„ƒ†}€†t’†k‚yy‚o}n{’{|ˆtŒq{|Š‡}‚}{|‡Š€px{{}ƒyy€‰ˆ†hy††€w„kvŒv}~{{‡ƒ„†|„‰|Œ…zy}r…u{‹~|Žx‰ysxƒ†ƒƒz†tƒ€ƒ|z‰‡wŒ‚ƒw{{v‰sz{ˆ†Œ†w|ˆŒ}z†w‰yj‡‡ƒ€„Žƒku„‰…~z‚’~~€{ˆl‹‡‰Š|z†xxqy{Šp€„zv”‘ƒ’‡y„…z…’‚‰~s~y|x‰x}‚uu}‚|Œx€|zxˆŒ{u†‡ƒy{}ƒy‰€…Šƒwƒ‚y~‘ƒŒ†~xzˆ€‹~ˆ~…€zyƒi‡z~uƒs„|ytzww„‚~ˆ†…y”~€{}‡‚ƒ€wš{{Ž{†q{shwvx€ws|q‰†}vxzx~„|‹‚ƒŠ~€}~‚˜wƒˆ‚Š„ƒ~‚ˆ‰’n„~u†‚‰~{Œƒ‰ƒz|ƒuŠux}Š‚~ƒt‰v‚|~|‚vz‚z~{u„‡{‚‘‚v{‰um~—…u~ƒ†wyƒ|y~zŠxˆro†s‡~‡yq†Š†t…‚y”Œ†“oƒ‹x|„Žwwx‘x„z€†„‹qŒ†|y€}|‚’y†xz‰qwƒ„~yxƒz‚sŽƒ~‹w…{{†v€Š‚w|‰†zŠ~‡„}ƒm€„ˆw‚€qƒq}‡‰{€v…‚•{{xƒ~|zwŠux|‰Š‰v„ˆ€xu‚}‚}€i„„~{Žu‚‚‚}{}ŠŒ†{„†ˆƒ„…ˆ„†r‚m}‹Œwƒt|€w“l~€Š{}usp}‡{‡}€†„€€}|‚|t{‚€ƒx…|‚†zt…€‚‹|…‚x‚}}‰|™}uzw‡„Œ|w‚ƒu}ypvx~…ƒ‹w†r€‰ƒ„ˆ~Œo†€‰y~~qu|xƒ~…t{ˆz“~~ˆfn‹€~˜†€‚}Œ‡ƒ~o……yz‡m‡~q|y~…“w‹}{yƒy~}y€…|„|Œ‚€}~v€…}x€|‚‡€~~ww|€‡‚zŠ{€}€ok|†€|pvzl€qv~y€||ƒŠ‹ƒu€{zf}€t‰|t~‡wyŠƒ“…„wxz‚|‰‰|‚‚u~‰„‚„~~~z€Š~q„†„ƒŠypun~…†{|€~l~{|ƒv~€ˆ||‰l~†‚‰{€iƒ~~Œ|}€€‚„~~€„Ž~‡‚}…‡w€{†Šˆ€‚up{„‹…‹}ƒ‡€|‹€x‡y|||ƒ}|sts{„{†€|‚q†~|‚{m~|w|zv‚p‡o}‡z|„‘ƒ‚mmŽy€|‰ƒz€ly{ƒ}z”‰}y‡†ˆ||}d†Š€q€†x–‚yyuy‚‰}}z€„†ƒx‡myy}v…†€Šƒn‰{‚Š|~‚{s‘†xƒ|†…‡…xyƒ‡ƒw‡y‚uvztw„cŠy€{nyzww…ˆ}}x|‰|c‚‰…t‰wŠwŠ„„|‚ww|ˆyqx‚}ƒˆƒŒ„y|‡„~wˆˆƒ„‚‚…rwx|Žrv‡{†wr|y†€v~ƒp€r‰ˆ}‡„€r€y}Šu~–…‚‰pƒ{€‹’}uo€~Šwxqˆy‡w}‚€~~z‚vyŒ‚|w†xz€~y†„~‹ˆ|ƒƒz‚„Œˆws‰~„x€†zƒ‰r}}{su|‹|‚‰{…Žl‡y„…‚s~uxn…lŠŒ†i}ƒwn„{‚~”}ƒ€Œyx|€usxv€z†Žt‹r†Š‡‹u†x‚~wŒt€~‚…}|€‚z‚~~…„‚ˆ‰|€‡r’x~yz…|€‰|€|z‰vu‹{y{„wy‘‡Œ||†{€“†|‹yƒ€{|{‡‚ˆ‚“‚„Š…‰‰|x‚†yr|vxv„„…‡}~k„„†vw„}}}‚‹{‡vŽ€†ƒz‡†„y‚yz…ƒ„‡‰w|‘|yy|y’|†…}ƒŒ…zŠ}ƒnxˆ{tw…~tjƒ{„…–†’…|y…€{Œvy„i}„~‰Žvƒs|vw‚twx~}…vƒ…€†€…„~‰wˆyƒ€z~ty~€†s‹€…}„w}y„}y‚mx~€}v†€†ˆy‰}zƒx„rnv…jƒ„“m…„‡n€ˆuxwr„yŠuƒ‡‰y‰sƒy‚uy„u‡†d„}w„‡zˆ~‹~}„ƒ…}…ˆ|‚„zo€‡Š“r‹x~z~fxƒ‡€ƒn†vz~rg†|v|z}‡Œš~x‚u…wš‡}vq†‚xrnƒ}€„{€›‚~|ƒ‚€rx…v…j{|pzx€–zˆyˆˆwyutŒiƒ‡ƒ…}ˆo‹—~wz„i{u‚Ÿ‡zsuo~€ƒ|y~|x„o|w~‰|‰s†yˆ„|myyv”‚‚uˆo„nw~‹‡„zk€€|r€~Š~|€ˆ|sŒ}‘z}€‡y~o~yƒlŠˆƒv~{u|ov†‚uŽwrsˆƒ€‚€ƒŒ€…€‚~‚}~“{k|Šxw‚Š…~p‰~ƒš„z„|‚sxm…ƒ|ƒ’„r‘€~wn{nŠjon˜{{}i€“Š™g‡ˆ‘€xu]ƒƒ~”†w…|vžƒ„qy~Š‚}‰rt{†y}v{r™ˆ†…Œ|…ˆhž€~~‚kz‰~vs‚yˆw†Œvjve‡uƒ}ˆy€i„„ynŠqsvv€ix‹…Šx‹€vl~Ž†nnx“y„z‰o€r„{h…sr{‡o…v’|x‡roqm’{}……„”q…‰}ƒt}†šuŠu{ˆww…utoluurŽxy|oŽ|†‰lŠ…ƒ‚~omˆvt}ˆyz‡Ž~ˆ€ˆqy—ƒŠx‡k‚…‚w~‚{~zxt}||ƒvu—~†y˜pvqˆvqtŽ‚~{‡ƒƒx“m‚wp€wzyž{†{}u„ri’w†q{w…qu‰i‰“v~}{Š€syk„Š€zz~‚{„„}Š{–€ˆs…ƒ~„‰ƒm†“z„ˆ€|‡q……~ˆ†w}…|ŠŠ{}‹s„{‚‘vvz”xƒ‹ƒs‚w•k‡†rkƒr}aˆ„~ƒwyyw€uvƒŽ”€u‚Œ†‹Ž‚ƒ}„Œ‡ƒ‡~x‹ywwŒšk„xsu€yƒŽŽŒˆz{w†z…ˆt‡fx€ƒz~xy’Švnt€‚†Žmr‚l~‚ry~z‹k’‚u€ˆ}‡ƒj“pƒŒq‡‡f‰ƒy’…s|x~€~Ž†ƒ{uwŠ~}tv{{„‚z…‰x|†m}…€xu—xŽ„€z……z…m~~tyˆz‡‹›†w†|„Žuv–z}u€ƒ}€sztz€†ƒwzˆ…„Œnx|‰€}}}„vvn‹…w€ƒ‘•z–z}‰ŠŒƒ€’‘}{\z€€}sk||„n~y‰‚p}s…xn‚twtsw‡€ƒ‘‘~tu‹n‚ˆe}{rwkž{yd{†‡y…ˆx€’‚„†y‹€|qz‘‡srƒ{~{zpf‚~ˆ€x„{‚p€xŠ~z€‹yyz~e‚szt~†~‚dšy‰un|„…|€|ƒ‰|‡{Šqˆztmyƒ…zh|†waˆ}€|Š}‚ˆ€cn~€‚~†‘v‹uv|‡x||†‘ˆv{ƒwŽ^}w|}t€w“‰uƒ‡x|rplw}‚rv~o†‡Šyq†ƒ‰’my~~†y„r„„ˆx€Š‡„{v‚“~ƒs‘„‰~Žk}y~c„„ˆ“‰{ˆ‡‹}˜~}€~Ž‚w‚bw…‚‡‡x‚|{–yƒƒ~‚€n{ƒ„|}w€‡˜‡x{„…}~ƒ˜†€s‚‚z~‰ŠŠ‹j}}}Œ‹z‰‚lˆ|Š~ˆzˆ~iƒ„wœ}…}ŒzuvŒhŠu|‘zoŒoi„gx’e„{ˆu„{wwux}put‚ƒ„€‚y†’}€w|„|Šƒ{‡†x{€z€~y‰x‡y~„‚‚ˆx‡st†€‰z{‚xˆu}uyz}‹o}x{}t€y‚zƒ…tˆƒ~}€…šx‰ƒ}Šzzw~}yƒw‰vx‚{y„„u‚m{zz„~…„‚ttwv|ƒƒ„~Š€y|‡{ˆw€†o}~z~ƒ€€‡p…{~€~y‹€Žƒy|r}…ˆ…w{~r…€y…||~ƒu‡yŠ€ˆ{|y|ŠŽz…s}„ˆx}„{†‡„|‚~„‚{l‰€Œˆv…ƒŠ}‰xŠ~}„yr„ƒˆ…|‚‹„„€‚„~|~ƒsuv„‡€v}€ƒ~~|‚vp†qŽ€z{|uƒŠ…|~†ƒ{„€€{‡y}ƒ„…z’‚~~u{Ž|}{‰‰y}w€~…Š‰|†{|€‚y{t…r~€i~ƒ…‰}t~}‹||v†v‡‚v„Š€ƒ~ˆ†z‹ƒ‡{†€x‚wŠ‰…y…Œ{€mt„{Žotz‚n~‚Šv‚‚…‰|yy‰€‚„zŽ|tƒ„|w…tŠƒ‡ˆƒ{Š‡†ƒ~ƒŽ{„z†ˆvx‰rƒv~txu…{~w}~~…~{{†‚Ž|…w{€„|„yy|€ˆˆ~€„wˆxk‰x”‚z†{€„q{}zr„z„~’…Žt~‚z‚~p‹|ƒŠ€‡‚€€rs}ˆ„q†}y~mz€y€‰w‡†“xvzŽtvƒm‡‚‚‚}‡yty‚~tƒ}ˆ{}‰yˆ„„|x…xu}xyy†|„|~‡€t}~~„v‚„|yz~…~~„€’zˆ€…ƒ„“{}kt†‡~ŠŽ„ˆŽy‹w‡‚|‚w…stƒzz{~‹l}oz‚ƒ…w}‡…’s|‚{€o{††•v‚‰|vˆxvu‚y…|~vŒ‚€~ƒ|‹†…~zw{‚w†„}†„u…{|‹ˆ‡v}}‹{}xw|}l{ƒ~~x‰x}Ž–{|~}vr€~yŒŽg‚wwktpzz‚}y‚˜t„“tˆˆy|~„l‡x~ƒ…‚‡}‚“ƒ†‹„xƒƒ~‹|sx‚ƒ…lxuzƒ{z…„‚}v~ƒ„€€‚Œ‚~‰€†‡€ƒz„}„{~yz”€y€uw…|†„s†~xwqy€}wlŽy‡…{‰ˆo†vˆ{‡‚{{‘s†„x}‡|€|ƒ}‡ƒ{‚yt€‚Ž|t‹{|{|›}{}Œ€„‡v‡ps‚~~|€v‰‚€‡{t}{‚q~s‰z„~ˆ…||{„y€}}y„ˆzx|xƒ„‹|„†zy{|Š~|{€y|ˆ{‡ps~‚€ˆ€‘|€‰ƒz|w{†‡‚oszv€}v”y|„‚{zyupzw{~…~„zx€x‚‚zš{„q†~‡uu‘z‡‹‘Œ€~€y‰{†u~wx~}‡|ows|rƒƒ~~|‹|}{„{swƒƒz‡ˆ{ƒŽ|}ˆ€}Šy‡‰ƒ‚y~†t€{†{{{‚~„}‰~…‚„ˆ}n„q}‚ypƒ‡‚m…‹u‚ƒr…t^…ƒx‡x€ŠŠ…n~}‚w€~t‹n€u}‰…|ˆy}‰~Œy{x}…Š€o…€€t„ƒ…zq}‚€w„{~yp|x‡„x€„›rz‚€…sˆƒ}wŽx‚‹sv|w‚{xŠ{†}|‚pv„ƒ€ƒ|}ƒn}zwƒ~}†~Šzoƒ~‹}‚~~xt€‚z{|‰Š•„}}€„m€ˆ€r…o„€pŠqu‹‘{‹…v‹|{t|‹y€†€m‚‚‡y€{‚ˆˆvr|ƒ}‡uƒƒ}t‚o}v‚pŽŠ‹„|€tz„}†~~y{‰{…†y€†~x€|ƒ}~z€ˆzvˆ†t†}‹†ˆ‚ƒ€Š~~„ˆ‚ˆ€~}„Š‚zrpx„}ˆ|xƒ|ƒ}|†Š‚}jm‚vv…|Šz€ws|‚zz…|qrx…†~xuw€s‘€zˆzx}~y{{x~…z€~‡€}~r‚ƒzwƒr€„‚{yˆˆƒ…uƒv‚|ˆ€v€†z„€~‚†‹}z‹‚vŠ~€Œ|x}yyˆys}‡zuw„„x‚}…~”t|Šƒ|€x‘u‰w€„r~™ˆ‡wxˆz†ƒqqqq‡„~€‚{wy‚yƒ€u|€y|‹x}{~€ˆŒyyzˆq€z†{}v„zƒ}{‡„zƒ‰†ˆ‚„|}z‚ww†o…‡Š}~w‚…š†{€„}{wyyi…€†ˆ~€z€‹vwyu…†}ƒƒwrˆ}‰ƒ{Œ‘„‘“‡†wv‚t}n‚ˆ†Œƒ†ƒ|}w|…vu…|…~…~|†€q†‡ˆ‚{y€‰vtzx†‹€{‹†ƒ‡v„{zo‚qŠ~xoz~nl€Ž}Š‹Š…h|ƒ{‹yv„Œ…‹ƒz†‰g~„{ƒ{‚†o}p€pt…‚‡}ˆ|~t€y|}|—…}z€}€y~v…€Ž€†y‡ƒt€y…€yz‚xz|t…z~{‰r|q€†y„„…y„rz{Šq‡rzŽy„ \ No newline at end of file diff --git a/build/src/gfile003.data b/build/src/gfile003.data new file mode 100644 index 0000000..3ef506e --- /dev/null +++ b/build/src/gfile003.data @@ -0,0 +1,65 @@ +„z‰vpywr}‹~{{ƒr‡z„€‚†‰‚ƒƒ„|†ƒrzŠx‚z„‚wƒ‚Ž~v„zc‰|‰{ƒ‡…xq‰}~qu€‰{|‰pyƒ‡…rŠ‚Œqƒ†}~yx‚…{€Œ€‚w‡†Žv|}€}u~„Œ€o{o‚{{ƒ”~~yovz~~ƒp~{sˆ†€}tvŒ‹{‚}‡ƒ{v†uŽŽ~ˆƒryˆ€€~‘‹~ˆr…|€~‚‰†…‰€†‡{z“…„„€wt|„‡}”v¥{„‡~z„~†‡Ž…z‚‚wvŠvˆƒw€Œupƒ„‰–w€w„~ƒ€o„Š}~Šy‰|•Š†€…‚ƒ…s~ˆ{†zt€‚€…†z~~w‡…‡‚zy~€|…{„…}€‚‡Œ‚|x{‡y†‹‰‚ƒŒyƒwz€…‰ƒvl‰|‚‡‹~‰t—t}ˆ‚{”tz‰{Šƒ}x†‘z~Š˜ƒŒ{y|ƒq’jŒvw…|pŠxwƒh…€|††„‡€|„€{qwx‘}„~„‚‡~l}z‰†qxpz‡ƒtx…‰‡z{uz…{†Šƒ”ƒ‚tsy‡„‚z|~ƒ…r‚wŠq‚€{u~‚~~tr€{}{ƒ‚‰ŒiŠƒ}‡|ˆ{‚ƒ€Š}€ƒ‰y‰„€“€‡|{vts‚~€o‡v|‚x}„‚y|{zƒ˜wyx„‡…yy‹ƒ‚yŒ~{~‹…{ru……~x{suw…}‚€}‰~…„…‘w‡y„€ƒ‚ƒ‰–x…xxvƒzŽ‹qŒxw„wyzv„‡}t||€|ˆ‚…sŒ€{n~oƒvz†uw†~~rƒŠ}”s„…zp‡‹‚•v}u‚‚iŒu‚“w„‚xv„…€‹ˆŠ…|t…€‰|€ˆx‡Šjz}ƒ|‡€|sŒ‡u‰w}†~sxnz…{{‚z}€‘}ƒwwxƒ~’‡{ƒqnz|q~€€‰z–ˆ{w~y†x~~{‚y‚‰r€‡ˆ||v}wwŒƒ“ƒˆzˆzŠ„ˆ‹†w…wx{w|w†‡z{„€…{||}‚†w††yyƒ~…x„‰€‹ˆuƒ‚{xƒu„|yx{v”Ž|‡z~ˆ‰|}‘tŠszŠ{Štu~ŠtŒŒ{…‰vz€xŽvƒ…}wr‚{‡‚}wƒ|€€|‰‡}z€~{€{ƒzƒŒ†€zw|‹yƒzz†|€wywˆr‡‚{v…}„z|ŽyŒ…r„Œu„€y‚†~…‚x‡rw}xx‰„v†„{–€‡|•z}ŠŽˆ‡„}v†„lŽ~€„‰‚~p…r„„Œ‚y}{v„rx‰‚†‚€~zszy‹ˆy‹zƒ{vƒ|{~~„us}~†}Š‚}……|~‚‹Š‰}€‚uxƒq‚€„t‡z†’…Šu…}‚‡}oŠz}uzlq‘u‰‚€}€spsw|}’~€–†ˆŒ}€…~~Švtyu‚‹€~osˆzyŒuy‚zs~~„‡jz}{vxx€…€ƒt‚~‡|†€‚€~}y„nƒt„|s{y{oy}|}wzuŒ‚yŽ‚}xy{pu„|y…}|†zŠpw{ƒ~~|{mn†ˆ|€€v€ƒm‚}†Šy~ƒ~„‚~Šz†}…z€‡}€€€sŠƒq‡‡zoŠ|„ˆw|€‚‹ƒƒx…zƒ…†|z…|…vˆ’„€w‚ƒ}}x€y}x‚‹‡y…x„uxuƒz†|y}€ƒŒ~€„Œƒƒv}€€‚…~}†~y€€€‡}…€~w†Œz‚|u‹yŽƒ€€‹€‚}y…Œz‚ul~Œ{zr{€€Ž}{‚y„„‚‚iŒx„‚ƒ~tˆ‹’z~{|~‚|qˆ‹}x‚|qpyyqƒ~{}}}|ˆ‚lˆ|{Ž{~Šk€Žq……x…ŽŒvy†…|{€‡~…}‰rx~x€ƒxˆ‚€}~}wy{„vƒ{}o…z‹‚……jŽu€‡Šx‹jxƒuŒ„‚ˆ€ƒt}—~ƒzŽƒŠx…†Žp€€|wˆu}~uŠr’„h‡}wŠ{y”ƒu{f{ƒ…q†‡z„Š…Š{Šƒz„‰„z†~w†zx‡‰‚ƒ‚€v}€‹x†……‡}|€wt|{u…}~x|……{‚‹~‡}`„|…~|x}i}q…ƒ‡~m‰‹‚…‚~{Š|ˆ†x‡|{‡‚˜‚~{yy€ƒt†€x‹€}‚ny|~€vvjvvu||„~}~r„x†…|‹…‡w~~“‡„{ƒu•‚‰{…ryr~†h…~o‡j}rv‰x{w’€Ž{{…ˆzty…vŽt|t|quurˆ~€~‚‡‰Š|p~v„†||q}ŠƒŠ…}{‰yšv}†ty{…pk†y{}x|‚‡‚s‹|€€{zˆ‰„ƒ‚†~|z…|wzv€‚…~€}y…{|z…y|‹„~k|‚rƒ‹‚€•‰x€‚yy|x~|iys{zƒy‰‰xƒ|z~‚|œ‹„Ž}|†v{…t†‹™‰€z€x…m…Žƒw„z~hŒŽ‰|„ˆ|}|}xŽ~„‡s‚uzu‰‚†ƒ„‚l‚yu…w|†z„ˆ}y}‚{{~…‹|‚}t}ƒƒ‰’~‰u~ƒ|o„{‡Ž‚ˆ‚r~ƒˆz„†}€ˆ}…tv€yt‚xyˆ…„vo‰z…†tuu”p~y}„ˆsy}Žp€qq‚‡x‚g}„€s{ƒ…ˆ{~{t‰|ƒ‰‰yz{uxx‚ˆ‡txvuƒw|}€‡sxy}wz{zŒxƒ~|yzs{‹jˆƒuy‹ƒ…~suz†ˆƒyv~€{‡‚ˆ†…•„ƒ|€ƒ‡Œ|„o…s{‚€p•€„ƒdƒ‡€‹‚}z|~„‚Žxs„l…}€~„|y€zr‰‡}‚„t~vt…zƒ}€|Žw†z…|††|‡v{ˆ~‚„~‡Œ†t{‚|ŠŒuxy„u{‹‰llo~wƒylˆˆ•„ƒw}}‡~ˆŠ‚q}‰‹ˆ‹€ƒzƒs…Œ|~s{{„‰}‚‚‡q‡„„zˆ„q…vr‡„yŠqƒƒ€~‘z‡‚”‚~ˆ‹‰€„‚xl…{ˆmzs€~}|w~y{ypŠŠƒŠ„v|~so‚}†‹všƒ‚ƒ…wŠŒx‡x}u…~€~Š’~xˆ}‰„zw„Ž€†Ž…Ž{…ƒ„…‚„ˆ‡~r}eyƒ~€‚ˆ’zw{~|‚{y‘qv}zzyŽv}†…‰{ˆtƒŽz„}t{‡t…„ƒztsztv…ˆ‹p”tuƒqqˆ}w€‰p‡xhq}{~‰‹~rl}x‰s~lrŒy„{w€z}Œ{€|{Š…zz‰zx†y‚r{„}€€}|uŠ€ˆˆo€‚rw{w„u|…ˆ’ƒwƒ‚h€„|’pŠ„ypt‚ƒywzv}ƒq™}~ƒ…}wzzŽpw„y|‚…†d„y‚„…„ƒw{Œ†}€z‡Ž|ƒ‚…‰‚u†ƒ}„|‰†‚s}yh~„s†{y€p‡†x|€z{u€}szrvrlxt{……y‚er‚f€…|y‰u™€~Žƒ||vsw}q‹‚„xx€{|†€Ž{‡x{‘‡‚{{‚…xƒ€~z†ƒ‚}…}~ƒ{ˆs€}}‰ƒ‚„‚s}|}y“€†“z‡}t‚~|Š}…~ŽŒ„t{…pz’ƒŒ}{w‰y…~|v{€ƒzo€z‡‡uzy‚…{~€r{z~”z~u|{ƒq|zy{…}ƒƒ€}‡qƒx€„ƒ~x‰r~†}}u‚‹Š’‚ƒxŠ…{†„z”}„otzƒ}ymu}ƒvy‡Žw€†{|ˆ‹‰‚xxr||ˆzi‡}€‡y~t‚r„€yrŠs~ƒz„‚‚y€z…~w†t}{|„€xn„~ƒŒ|zsz†‰x„~…€Œ…„…„Žv~~„pƒ„yrŠ~z€Šnyx…‚q„gŒyŠƒ{zupz‚}ƒŒ€†t„{p‚€Š‚ƒw~u†‚{q~v}t~‰{ˆ~wŠx…x€w{€‡‰Šy|‚t‡€†„€|{{†Š}†v…‚ƒ†~Š„‚ƒƒˆ‚……„†y}~uƒ}„sƒy‚p|‰yƒ„ˆ€}‰t|†jw‰w…‡}{{tˆ€~uv†{ƒ|vŒ~w„x‚„ƒˆ„‰z‰ŠyŠ€|‚{†y}ƒ{wx~‡„yƒ|‡‚€ƒ{ƒ‡€|‡x€…‰yzyyš|yŠƒ}ƒ„zwŒ€‚~ŒvzŠw}ywz‚Š…r…ƒpv{‚}~ƒ€|}zvƒ„€€…x…}v†ƒƒŠŠ†yuƒz‚t~u|wƒˆv{Š„€z…}ƒyq}…€|ysxƒm}w||•y{‹xˆ……‹†Šƒ|~…|‚„„€rwƒ—€ˆz{~„z{{rŽŒz‰†}“z|{v}yorŒ|z|ƒ‡…yyŠ„‹u…zŠ„ˆƒ“„‚ƒ}„€’z|“ˆ‚y†s‰{yƒ…ys‚|‰‚…‰‚j„s{„}Ž|Š…r€x‰…y~zƒoy…ˆ†vvyuxy„|†wztyz…€‚}vƒ‚~{~w„„—o}xzs}€„‘ƒw‹s{„xv‹‹‰€„v€„~{uz{|…{{yƒˆx†xtx‹y}}‰yˆx„€‰‰ˆ€ˆyw{u€„|}{yŒƒ€ƒ…€…†puvv~„†…vy|x…}‡„†‡‚w{u{†r~~ƒaŠ~{j€…e}{ˆww„{ŠŽk€„‚…{m‡‰„ˆ„}€{„{ƒqt~€|‹…yˆyz‰†‡€~„‡††m}„ˆ}{€|‰~}}}„w}‚‚}x„†t€n‡‰‡‚w…„‚x}~ux{z‰€€‚‡yv€x{kƒ~ƒƒ{|||€vˆŽy„‚zŠ€q|~‚ˆŽs‡xx‹†…Š‹‰†‚{{Œ~|w€~‚…‚~‚†‰‚{ƒzvztƒ‚wyx~ˆ’{}‡~}w‚„r||z~ˆzˆ„zƒƒƒ„y…x‚zƒ„€„††…‹…€}tz~~|ƒ€v…‰~‡…z†|zˆ{p{ƒzŠz{z|pvxŽ|{€}~wtzq‡}‚‡zv|‚~ˆ‚w~v‚~wy}|‡o…y„yw‹…}Švy…‚‚Œˆx‹vw|~‡{†‚„…†yx†zƒ„‚w|~s€ƒv‚ƒ†„u‡{xzt€‰}|y‚„~ˆw€yƒ‚w}Šr‹€{†‚‡|}pƒ…„~…x}ˆ}vq……z€†y…tƒ‚{{„ƒ…€|}ŠyŽp‚{†yz|uy€„{ˆ‹}Œ}ŠyvƒŽ‚ˆr‡‰€„w{xŠvŠŠ…‚‚xyƒwƒ‚~pˆ}~z€~€|zˆŽ‚„zqƒŠv‘…~†xvƒ‹}~x~{r‚|‡zz|Š~}w}vyx€ƒƒ…€‚…“‚}‚ƒzv‡x‹}wˆ€r~}z€„p~—‡{|~zˆx{s€}z…„€‚‚owƒ~xƒ|ˆz†„w‰|{†‚‡}€z†}{|}Œu|}†‚{|…|‚yr„}xŒ{xˆw~xz„zƒwuyu~ˆ|tŠx~y‚€‚‚ƒ„{’~|…€~}lxŒŠ”ˆw~}u~|ˆƒ€{z‚…‰‘}z†yv~~ƒ€—t„~…~ux‡–Ž‹{~tŠ}x{x‚‚r€~~’x}†||€}u‚vz†z}…ƒƒ…w‚†}ƒvm€…z}†~€{€…ƒ†ƒ{€~nŒyˆƒ€zŠ|v‚y‹‰z}…ƒƒ„~y‹u€}}|}zzr€t|Œzx~{p}|{y|u€‚~|Š‹€‡m€„~~ˆt~z{‘”x€xy…|‚q{sw|}ƒ~}…€…zzˆŠ†}{‡uvxzwv€‡|~y‰}{ƒ|}ƒ|ˆvt€}„}|u{‡{‚‡rƒ„{|‚Š‹‘{ƒ…}m|wor…‰s„‡}}l{}z‚{€ux‡‚…‚~…†}qp€Šy€v~ƒ‰††wz€†r‚m‹{ˆ~x|}rv|„Œ„Š}„|z}~}…‚w‚~{†}~q‚yy„wx„‚|…}†~€„ˆ}{‹{Œzƒxt}’r…z}z|ˆ}k‚z€z†}‚zˆ‹ƒyj‚}x}t„p“‚}uwzƒzr|‰‡~w~€x~t}ysw’Š„~…}v}Šˆ„€‚j‚||‡€Œw‚‡zw~Œ~z„w|“vw|‚„‡{}|}y~w†…ƒ€ˆy„}~~€„~t}u‚‡vy„}‹l‹ˆ|~ty…q|ˆ~|€u„ŒŒ‡ƒ{}yz„‡y†v„‚€~~{zŠr„‰…|q|zƒš€~ƒz}v{}}q†ƒ‹€qu€…w‡zŠƒ„‚zq{zvxzˆ€y‰†v…~t„„‚„yrƒrtu†„†{…ƒ†|~{ƒ‡}y~u{„{ƒ„zyy|yˆ€x„xy|‡“ƒ}„{€}Žk{…ƒz…ƒ‚rzu‰|€}‚zi{vv€„Šƒˆ‚k„gƒ|yƒ|v~}“zŠ„w{wuy‡|Ž‡…w{~}‹|}‚„€w|nz|†’†‚x{s~‚}}~Œˆ|s{‡‹‰†€…ˆ€}‰‰€wƒ|qƒu~p|~ˆ€uv€’~v|w‡ƒ„zŽ‚Œx|}„{‰}‚‘sz‰€ƒˆ}€‚‰nŠr†‹~~ml{iŠ~Œ‚‰…v„†‰„ˆ„y}}r„{}ƒƒ€}…„w…}Œw‚‡€}z€†‚†z}y‚x€wv‹}ƒˆ‚t„‚tƒ‹y’Št…y}‡‚•†~†||}}€ku†‹|{‚}py{‡}}ƒs‹€u€u|…ƒ~q‹ƒŒˆ‡ˆ~{…ƒŠƒ‚‹yt†|}…||ˆuŒ}zwto|}|vƒ}x‚z}‚€z‹xw‡{u…†Š’txx‚‚t~|yl‚{w„„€|tr…†w{xŠ‚xŠt‡„ƒ…|{Œ€ˆ‚uŒst€|}€„ˆŠy„wxxy†tt{d‚„~}Šo†ƒ‡†zz‚Šv†€w|…r„€m~sŽˆu€‚zt~x…‡†…€‰v€z†y}{}„n~…wƒy‡zŒ‚‚}uƒ|€~x„q‡Ž~€Š}‚z‘|…‘}}€y†u‚r€|‰t‰}w…ƒ‚“xy‚€}{Œw‰†y„‚‚†„iˆŽ„~‚‚q‡‚ƒ“Šy~{y|‚u‚z…€}ˆ{…€u}ˆy€‰z€{}|ƒˆv…w}uz}}…”ˆ}…{†~‰y‚zƒ„{tƒ}u|f€|…z~u€’€„„}‹uŒu„Žƒr~…„}~€|€€}‚‚…|†ƒ‚{€…ƒ…‚}}{|†pƒz{}„„‚y‚|yz€}}…{…”‚…x†„w†€ˆ†|€{ˆ†€r‹‡t~y“†yvv…}zs‚…wx†Œ|‹y{‚ƒ‡‚ƒ‚z}w„Šƒ€€x€ˆ†~ƒt{ƒ{|‚t‚w|||‚uw~z‚|ƒ~w‚v€yz‚‹v…„‰‘{ƒy~|y‚€n‚zy}}ˆ“zr|r€‹…y€‚p{}‰€uzt{ƒ~Žq{†t{~z}ˆ|…„–€€z„‡xxˆw’z…€€Œˆˆ‚|ƒ€s‚~}ts~wy‚{‰xyuy{ˆ„‚‹n€wm‚}“†p|yo~~{yˆŒzƒoyz‡w€†ƒŒŒuyxzˆu€…Š‹‚y|ƒ€xˆ‡|y~t|u‚r{}ƒy€ƒ{~€€ƒ‰i„x‡ƒ|‡{qsfu~‚{}ƒ‰€}~€€~ƒ}„suƒ{yƒ„‰Šr€vzƒ|~Œ–”z||~‚Œ~€Œ€|xŒ|ŽŽ~||||{‚}}~€x~}wy~y€|}wzuss†…„ƒˆw{ˆx…†~}€‡pˆx‹‡w‰†w‡m‡„|„‡}„~yv~‡†y„„†Œˆ~€‡~{ƒto‚r{ƒzv}|lt€‡„}€wxtˆ€„‚†{r}…ƒ†q€y|{„u‚‡wˆ{xr‹{{‰{}x†yˆƒ‚‚‚‹‰…€‚‰x}…‹|vˆ„z~t€‚z€~€~x€x|††}Šƒ……y~v€{€z‰z‚ƒu}~u€†}ˆu‚†{„†˜……„w‚Š…||n~…€‚z†}€yŽr‘‚~zz€~xpqƒ†z‡qey{†z{„€˜‰|r|ˆx~z‹}xyz‚ˆuxjx††u€‡„‡‚‰quŽ}wpk€z„}~„y–†…t…o‡ˆuu}f……€{{~tuz†…{y€ˆ‘€|‚t‚€ƒƒxY…o~~‹~ƒvgvk~~u……}Œ‡w“wƒ…‚zz}„z\x€fu‡ybŒs}†x…‚…y~m„t~zww€ƒz€k„‡†{r‹~•[u}zzxˆu}žq‚‡|~Ž€~~…ˆ„~s€~ƒŠˆx‡„…~‡{}‰x~ƒ„†ƒ€o{x|ŽxŒ„s‡}{†”€u|}|…vr‰ƒ‚rpy…zyyx„„n‚pˆˆ‹t‹o€‚€“k‡z€}}„~¤{~‚twŠ„‰–mx‡ƒxŒ†|’x™€v|‚t{€Šp~{z€~~y…„„y|†xƒƒz‚zuˆls~…{zxwr’‡‹‡}~{ˆ†|y‡|}l„v}€yvˆ„ƒ‡tqmy†ƒ†ƒzfƒ}€€€zlxq}€‚fzxzs‚r~…€…|y€pe”ƒy†u„ˆ{Šh€{~yu„|gŒx†Šz|y|y~””zz…{ˆ‡xˆf‰ƒ‰uw}€zmk‡‹~}~}b…ƒ}…{s{s|”Œ„xŽ€|{‹|px~x€zy€x{}t„‡‰Œvu~{†~…ƒ{t†s„|’~uzrs‰lvŒ€€‰xg|x‰ru{}{p{qˆƒ…Žw‰‡h›kt‡€m}z†o”†uu{s˜•Š…y|‡|zo{v‚‚|€‰ztn€{{Œƒ€”z†v}~{z‡„€~„‚|su|{oƒ‰|‰twŠ~€xy‰ƒ‚ˆ‚}xˆs‡ƒnp}w‡z|iyˆt…Ž‹vb‚{„wy~~Œ€zcƒz…z}z}ksts…–{{€|“†”z}v}|ˆzz›x‚€Ž„}„‚k‰ƒwŠpŠˆ‚sƒdƒ‹z„t„vwm€wƒ|~Œ‚tww‚…‘‚yŠ{t~u~…o}Ž~‘r€‰‰x|x“y‡tt{…‰…my|ƒ€Š}o‹oŒ{y‰v€t–lx‚|Ž„’ƒu“bƒ†‚ˆ‰„‰{’huv{‚y‰‚†ds~€|†€y€dw~q‡x†xl”x„}…Š€‰”‰–z}ˆ~ƒr‰…™ƒ€{…}~z{†~ˆ‚muv‹~rŠywˆ}Šz}yy{gf|……xw€dl}€‚ƒmyw†e€t|vƒ}…Œ„€„‹†y‰’ƒp{~‡u~`yyvwŠ‡‚‰ŠŠƒz…‚Œ|ƒ_||vw‚z~|ht~w†wyw~„{ŒxŒŒp‰ˆˆn‚xxo€ŒŽ‚Œwqž|z{}~{woit{‡u†y‹on€ˆ‹}~…„g„cx‘ƒ{ŽxˆŒxvŽv‰„}{ž}Š~yt‡‹‡zwo†~‚€€€†‡z~huƒ~‡ƒŒx€}w~ŠwŠ|€~ƒu•„…‹‹{s~v™tyg‚kyxƒŽw¡qsbw|ƒ‡}wt‚†•i|€•uz‡ht~€‚‹su~r€zŠ{„„|„s~†||{vvvyy…|‚‰v‹sƒ{ƒ|‚ƒo|Š~r~}~Ž†{‹qv…t…Œˆ†gƒswˆ}‰’‡‚rvvƒz‚o•{‘„w‚wš‰‚‚Šƒ~†u‡p}}{“Ž|ˆ‰z‘|Šn€ƒ‚…{|xzsop…‹|…{n€†qŽ†Š‡ux}|tz|‡yz|ƒ‚ˆ€ƒ}‰~}~ƒ‰ƒ„~wlŽkˆ~}„ŠŒzw…vy~ztz†~z{|pu‡Štv}f{}xzŒ„…rwˆ„qyx~q‹ƒsŒ{xˆ‰j|‚vœ€€x}ˆy€x€Œ~wz…vh}w€“{„Šhy†u‹}€ˆ‡ƒu‚wqupyƒ|z‹~}}ƒy€‹~zwˆ}|‡~‚|‹…{z{ƒ}„ŒŽ‹|…rw{xžy~„x€ˆy{pqŒ‹}zu}†Ž”yxŒql€xoŠx‹}k˜m‘Ÿvƒwx~sŠ‹t~hƒkx‰r|„‚v€w…xy†‚vz‡„}l‚‚“‡~†~y{Žr{€„~Š„ws{n}w~‡~}ws„~…€x„zƒx‰u‚x‰vŒ‚‹šx|„}u‘}{|~sp~|Šq|fx…|‚u€’‚Šxu€ƒ{“‚€’}{{vtŽ{}ƒ‹t„€v{u†‹€…sx„xŽ{z‰t…wyˆs‰|Œ~unp‹xƒ~vƒw‚€oz|…ƒ‡‡{xv|vx“‚„{yvƒ€vv{r~}|‡‡u}€“ŠŒ~‚z•}glŽ†v{}ƒyv}—v‡‚v|{~~w}|‰„sƒtmƒ{{‡‡}€Œ‹‚qq„{}~‡vzw‡‚vw‚zˆo„‚qˆ…x}†uƒzz‚zyƒq‹†€zu~‚sqy†|~sm…~‡ˆ‚~zs†ƒz|’zw}q‡ƒz‚~…~„†–Š‚‚†‚in”…ˆ‡}‰…ƒ‰˜zzŒk}yvxl~ƒ›‡‹||}„Š…hu{‚z€ip~†yŽt|†x€z{t‚m‚‚~…z‡{ww€{o„ƒ|Žvu…{…pn…t}„}€vx|u|‰Š‡n}|~}tp|ŒŽy{v{‡‚|€‡‡}{‚zqq{zŒ‹|‡~„yˆn‡x…†{v€nntly…y€‡‚t|j€}z|li|…€p~qtx‰{…xvƒy…ƒ‡x}zrr~~Œ{€€ˆ„€{€†Œ‚ƒx…sw€ˆx‡u„s~q…wŠ~„ƒx…„u„€~‹†wzu‡„x‡ƒxŒ}ˆst~w„‹„‚{yƒzƒ„~Šˆz‚~Œ}‡‰Š‚„vsv{~ˆ‚xŒ€‘n~zz‡Ž‡‰Œ†~hp‰~ƒ„zxi|‰kŠ|n}ƒzyjz‚u„‡yˆu…‚{t‚‹}„‚€€{†ƒˆ}wˆ‚†y}‹…vzq{‚‡y~ˆ|ˆ|sŠ‚|r…}v€{s‰}y‰ux†~†z{‚y€„ƒt€Œƒ}|wxtvŠ„|‡xƒ†zw€ˆ††p…Œyw…tŒ{ƒ†‡‰x‹Œ„ƒ†‰„{y}ŽŒ†€„z{y||Šˆ…‡y€€|~…‹Š{€u„ƒŠ||†‡{wx~„„|…qxtv{‚„‚{„sƒyfn€‚‡{p}n‰y‰x’}x‰‚m€zy‰„‰€~Š|‘|€z„ƒ‡ˆ‚€{šzƒvyŠ…}€€z|…€~…zŒ„…~x…~wy†‰•‰s|Š{xxo}‘ƒ‡qo€Šy‡t‚~o~|xy†{vŽvvtz~v||‚}‚iuxƒ€‚ˆ˜pƒx‰x…rˆt†w€v|}y”ƒŠ~‡|zs~„‡ƒy|p|u{}zw‰~~‚w„}ƒx~}…|~{ƒ|}…†{€twgwˆŒq|†wŒ~|}ƒ|x‚st„o‡pz{}‹|~{~}x~sˆ|‚‰‚vo„|ˆ„~yv‚~z‹q†‚Ž}ƒv…ƒz€{pv‚u€Œ…z€†}„{z€|yxyƒ€~€|yz€o–yyvƒ‚€ƒq‰„|ƒ}p„†m˜nwŒx}t‚zr…u}‰i„€tˆ}ƒ‡|z‡‡~Š~†yx‚•~„zr‡Šu}}x‹~Š}‹xƒˆw~w‚v‚”lƒt†…„}”oˆ„}y‰|€ˆyŠ}Šz|…w†yx‹o•‡…ˆ…|…„y›zxy‰tv~xiu„~uyŠw€ˆzx{ixx„ˆ…ƒ‚‡w‹|ƒ€‡ˆuƒ‚lzvo}w…~~{†„†“p‰€w…x„u…~}€€ˆs”Žƒ†z…oŒ‚†x{•ƒ‚€{}wvq|™ƒ‹€†z…}†n‡p}„~{x~‡t…|}‚‹„Œoƒ|€‚~|z~}ˆ€~ƒ{wƒŠ€}|~rŠ‰‚‰~‚zmzt–‡|v|€hwv}…}„q{€zrˆ~Š…ƒ€}w‚}…‡|ƒx„……xƒ}ˆ†‰‰|‰…o‡Œ„€‰ƒtvyzŒ‚q|oy†z‚p…Š‘‚~}€l‚n‹y€”†t†}m{pzƒ†}q‚q„wvzŒy’w~‡ˆ‘€€€‰{}‘‹{‚v~~w‚’‚}z‚‚Š‡€t‚}…o|‚ŽŒxu€ƒn~…r…{…~†ˆu‚u}{y{„l~€s‚l…ƒ~€{x„†x‚t{qz}z‚~z{}{zyy……y†~~€r‚w„‡zvwƒ{’ƒ|‹wy‡pwuŠ…}gƒp†…qysv„š„…†s|€†r„{•z‚|~r}qvv…Ž‡†|‚yo€€}€„q‹€||p‚‡Šˆ~‡‰ury€„z‡€q‡mrq|ƒ„~|{zyv~Š‰w‡x†‰ny„zŽ‡{…xv|ƒwƒ{uur{zv†y†„†€‰zƒvoƒ„~„‰{x†it~•‚~{z‰…†ˆ†‰sqxn„„‰‰~z‡t‰ƒŒ…r{†n|kzˆ{†{~‚wƒŽ‡z~x–u‚vf€…v}„u‡‹„€‡u~€z|ƒuƒ‡z|vquvŽv~fx„€†~‚‰|s†Š}†|€‰qox~ˆ‚q|}‰ƒwŒv‡†w~p{ƒ„x‚ƒto}€wŠƒ~}„†‹rw‚z„ytv{{ƒ…}‰xr€€zzŠ…‡†~‚x‚ƒƒt}u„~}ƒ~‚rzx}|v€‡wpw…Œyqo|ˆp†w~}v~t}“‚Œ~v„t€lo€wv‡‡yyhx|ow€|‚v|tŒ‹|t{‹r„w~v…zp„~‡‘…ˆ‹„xz‚rw†„„}€w~z‡„…†€u…n‚|us†„Šƒ‹€q€ƒ~‡Š€n…}†‚xyw…mŒv†~}q„‰Š—}‚nz€‡†Žz™zxz€}ˆ„uw…v‡|vz}„Žs‚}‰y|„€‚Š„šƒ‰u‡z|t}‹†‹~mvztx{~„‹ƒˆuzs……„…t‡z‹s}€rƒ|€y~sˆtzpp€y†‡‹‰„†}}z‡‘„ƒ‚izƒ„~}„zz‰‡oz|~t†l†˜†‹}v|x{“n|t€~ˆ{xqw„rxxw€|‰stƒ€ƒnq‡qŠv‡ˆ……x…€…ˆ„„~Š‚~ƒz{s€{ŒŽƒ|p€x‚„{ˆqp}tˆ}{x€„k{‡y€{pxyn”€‡xv‹‹‘‹€‚‚~{‡y|‚tz€q~€~jŠŽ„†…{„…Žˆwˆ„Œ}z{y{z€„ƒ€‹~vŠ~||Šx{Œ‘w‡v‚w‹u~‘|ˆƒqs}…ˆv|‚w†yyŠi†„r~y‚ƒ’„‡ƒƒ~„‚w|„{Œw€wz‚‹wŒr…‚q{†}ƒi‰†o„wuŠ|ry‚~Œ’qsy‚z„‚{rvvƒtƒ{rx|~|ŠŠ€„‚}‰|m{€ˆ‚……•ˆ†‡€s~~n–‚|~|…~ƒ†}‹…xzˆŒ’‰{†Ž‹zyƒˆ‚ˆƒnŽxyy~„…‡‰•}‹|vƒ~€€ˆ„€sxuˆŒ†x‹…‚Ž…x~ˆyŒƒ}‹€…ƒx{p†x€†wy‚†yxxƒ|{|}ƒ‚vz{ˆz–‚}Žy|‚}y|‡Œym}‡rk‡Œv“€y||ˆˆ‹‡xwz{€oˆx`ˆ{v€€x{yw…Šq–{€}u†ƒ||~m}†u‹~uˆ€‡Šˆ€ƒ€‚z{~z…|{‡nz„„…w{rr‡|†wv}o}†rzƒwz„{}‚uyŒŒ{…ˆ‡…`‡w}‰€z‹‡Š‘‘}ƒsƒ†‚•t{„r{†y‡Š{|x|‡w†ˆzŽ‚y{‚z‚ƒ{~„z‚~y…‹„‡‚ˆzzz|‘‡zŽ|{nxw|~†…s|‰€‚|x€ˆƒƒwyu„~‚z†~ŽŠx†y€y|…€x|z€‚}„‚„~Ž„Œ€~|‡Ž…‚€‹‡{x…yˆ|…„xŠ†~x~x€ym~v{…v…}‹‡}Ž†|‚…z~ˆ~ƒv…}ˆq~€‰zˆ€o~}ƒ~}…ˆƒwuuy‰‚ƒ†p†€~~‚vŽ‘w€{w†„t€†Œˆyzv|‰|~†s‹zwpv{|lˆ~ˆ~‚‚~}ƒl…uvŠ†~€{Ž„€…z}‹xxŠo†}zƒ…}Š†‡~Š}w}{†xwŠ~…‚ssˆ…~ƒ‚‡‡yŒ€}‚{††sxs‹‚ˆy„x}}‰‡~x††‚~…„…•€}ƒˆzw|ˆƒu„~u†Š|r~v…‡‚}~Œz‰{|{ˆwuˆ†|‰xy}ˆ}‚ƒƒxˆ†ƒ}}Žzv|wx‚€x…‚|{Œxƒ|s{‚€{€~ƒn‚‚ˆ‡‚Šx}u‚{„~‚€‚Šzqxq‚‹xv~xxxq„…}ƒ}ƒˆm‡v~~ƒ€v‹}r‰||€€{‹vu}nˆ‚†z~}x|‰Š„{zŠ{~wztˆ†~†…w|ˆv~z‚„‰ƒtwu€u€r~vzzƒƒƒx‰}}‚yw€€„’}{|wy~‡o…ƒ€~x}|o{‡t~€p~w‰lq…Š‚x}m€ˆx„yƒyŠt{w‚‰‡‰{‡}Š†mw~…ƒ~}t„‡ˆv{‚”~{ˆx„ŠŒ|ƒ„…xy‡n‚‚xƒyy‰u|‡mŽŒˆ|y~„z…–‚z€„uqw~Ž’{…r‚‡t‹Ž‡’‚€Ž„sux”{w‚Žt‡jk†|ƒz|„|ˆ{ˆw‰xŒ~u„~~‡}„}€‚ps|y€}~wƒtƒŒw|s‡v|‚ˆ…‚ƒ€„Œx{ƒy€zz}‚x}p|tŠ}†ˆ€‹’|{ziƒ‰Œ…y†{{€}|‚‚“y‚m{xv|{r~u}ƒs€x€~y~Žv„zw€z{~„€v†€€w†u|…yq~u€uŽ|t€ƒ~v‚pƒwv…„||z…€}Œvw|oˆ{„|Žp|—w‹‡t{’t}†q„{€‚ƒx‚‚rxˆx{Š’~”ƒpx~sƒw~„t~Œv‚q|„zl€yq~ˆ…~t~ƒlzus{„…†„„„|‹‹‡†z‚{…ˆ€sƒ{„…y†s}Œ‚…ru‚x‰Šu}ˆ~€ˆƒ†‰‡x|~‡uoxlwƒ‚Œ‡{s„l‚€}ƒ„|lŠt„x|„so‹}{o€}s„„„…u‰Œƒƒ„ƒu‡€utz~†t}„Ž‚†ƒ‡‡…zvyoy†‡Š…ƒz‚Œƒty||ˆzyƒp„ƒr…{}wŠ{oxroz‚‰‚}‡}~|mˆxz|„y~s‡o~vŠo~z€‘~|yv†xy„~Œ~oŠyƒuƒw‰ƒ}ˆ€yƒsxƒ~‚…uŽv~~€qŠ|~~{|‡~‚y…y†vv„†‰†z|†qy†pƒqv|‚ƒƒ€||˜‰sz|xunˆ„‘}‡{…uy‡€{umz…{}xŠo}t€„t‡u~w|m…‚“€{{x‚z„ty€„}„„u|xtw}†{vpsrƒ~†„y|}tw~{v‰yy‰‰‡~{…|‚†ˆ|‚|…tzxtŠ‡ƒ‡}xwsŽ‡‘ut‡ƒpŠy‚{tox†‹†„ˆ„}„kƒŠ…‚wy‚{{„|tƒ}v‡y}xˆˆ€|„{uˆ‚€ƒ‰|…Œˆˆ‡w†ƒ~x}|‚‹”x|xz~|y€yz‹o…‰t†x}ƒ~x~yzszˆ‰xy€‹…yd€{€wy€‚tvŠz}r…‰ˆ…ˆ{€~xƒ‹w|v†ƒsŽvl…~x‡z„|ƒv{ŒŠ~xz{–|nŠt‡‰w„‘ƒ€ˆ‚Œ‚|ˆo„}}ƒ}|ˆs‡‹vˆ‚s…€‚…€‘t€‚Œypˆ€|„vw‡r„ˆx†…}y†s|o~b…‰zyor‰ƒ‡}{€x}yps‚{}€s|€ƒko€z‰€ƒnwŠ€†{~zwlu„x|€€‚|ˆ{ƒ|~{„‚‰~Ž}}€xv‹yx†q‡{€ƒ…yŠy}|{~~~s…}}€yŠŠƒ~€zƒ‚€‡|w„‚‰€~{‡z…}ˆˆ}€ˆu‰uzƒxw†sˆyv‚€Š‡ƒ{qy€„…ˆŠ…‹{}€‹†t}v…v{uyŒ€v‚„…zz{†‹‹}{t‰ƒzz€tz}{†ˆyƒt…„„‚|{xzry†‚…ƒy‚ƒ‚vozuwˆˆ}~Š}‚~xw{‹„uˆ{u‰„}€‡€~r{ƒ€‚}Š}ˆ{‹‰‡|ˆv“w‰€…x~svŒ|ˆ…~ˆz|yq…yx†}|‚~‡n‡„‡y€~ryt€…†~yi}†…{}‡o‡‹„{ƒ„ƒ‹sw|sv‚ˆŠƒƒ|w‰u}yˆ{wˆzwŒ‰‡~|vƒx~€‡ˆz…x~wwƒo{ˆƒ……{…z€}uŒ„wˆ†t‡~n£zˆƒ|w„y|oy}Š|…j}…vqtƒ‚Š{yu~h€€‚€„r‰s„€ˆˆz€†ƒxƒ„~~ƒxt…x„swwzssƒ‚‚‡wƒ€‡€†ƒƒ†€tx|‘Œ‚‚}€ww}…}…€y†|z}‚w{pwŠ‡…v~€vx€‚„€z‚|„xƒ€†‰}r~~‚‚~~zy~€€ˆ‹zŠ€~Œwƒ…{ŠŠz‡{„‹}ƒp‡ƒƒ‰m‚~~{‰q{‚z„€}†Žx{w…|‚’Žt‰oz„{†Žoxƒr’{uƒ‹„wƒy{ˆs|~{‘~k€ƒz‚ƒx‹|„xŽwwƒ‡m}ˆ‚…zx‚†yn€u†„}}„€~†~„€ux€|ƒ„sƒ‰w†zx{w‡u„ƒ‰‰…yˆ}|wŽ{yxzz€€Š†‡„vˆj‚„wt…Šmt†z~‡~}€w~‚~ƒ‰„y…€t€…€ˆ”us|…ƒv„ˆ‰|…w}w„|„‚ƒ~ƒ„~€„tŒ…ƒ{€‡pz‡yŒ}v‚y}~~}”~{„‘‡ƒ‚m}z~‡u{swr|ƒzŠ†€t‰Œv~‡v†ƒv†„…~Œnmx‘z~u€…{Œ„|y“tˆty{‹€‹‚tu…wˆ~~Œt‚s{~y|…v|z†xŠ|€†„‚‚‚|}ˆ„ˆ}~‡ƒ‡€‹„~~yuxxtxz{ovzt†x|‚Žƒ…ƒ~z~yqxzppo~w{yŽo{ˆr—€xu€y‚w„‹px†{…qŒx{p€ov~y€‘wƒ~€‡wvqƒ|ƒiƒŒxƒ‹uŒ|uˆ{wƒ||„xŠˆuŽ}z†{„~‚z‹{{‡Œv‚‚}‚†‚‹‰‚vx…ŠzŠ‡‰‡ƒ{~y‡{‡{ˆyvŠ‚~…d‰|„tpsu~yw~}s{x~”{uƒx„†€uˆjv€k~ƒzuuly|‘{}‚{ps‡{€y‹ˆ€„{ŒtuŽ{u…||‚g~sŽ‡„p”…€–{ƒŽ”yŽ{mxqx†}…“„~‹zr‚‚q„|q†{{‰~wzy†w{”…‡„}‡zt…y‡‘z‰~{yvyn|{ƒr…„zr‚x…ƒƒ‹vx~x€|yys‰w‚‚{qwi~sm‚~ss€y…xˆ‹{€‰yysvs}‚‡stnr~€xs€~{Š|vr†~’ŽŠ‚~{‚„}v‰||„wx{o}‡tŽz~ryp€Šy€ŒyŠv~|„…„€}t|~u†ƒ{“ˆz€}~z€„‰„z€‚fu€r…t{ƒzy€†tnŽpŠ|sz‹zo}{x‚‡ˆ€†~w”ˆ€xƒyzmyqˆ„s‘x€‰{š€r„rxˆ€yqz„xw}r„Š}ƒƒ}zy†„ƒ‹ˆ}‡rww~‚xsx}†{yƒ~•p}†€vy~os†wƒoszq‡“ƒ‚xˆ|p~Œ‚“…z€‰}zŒx„}sw€‹sƒ{€‚€v“my|{p{wurzz„p}Ž†Œ|ux„‡‡{x‚‰y{}‡…‚{{}u{€ˆˆt‰z€‚…ƒ„p†„‰u~{|~ƒŠt†|{r‚~lokuˆ|„„~„’ƒŽ‰~yy‚v|†z~†jŠ~Š€yt…ƒ„y~r}„wt€vƒsmuƒry…€z‡~Š€|Œƒ‚}†{v€Š‚€Œv‚Š„x{ˆw{uƒ~‚z{nru‰uy…€zux„…„…~„vz…~ˆr|ƒˆy……|‚us€ˆƒ€„x‹ŠŒs{‡‚ƒ}|‹}†~x~‚|m€‡…ƒ{‚{ipvz†„ƒ†{rys|~‚…ytu‰zz‹‚}yrxˆ}„€ˆy€„x‚ŒŒ„}„‡t{|€›“z‡€~…|r‚‹…Š{xzˆruˆt„‚wŒ‚ˆv{t‡›|…x…zƒj{„~~{xw~ˆm~w‚~r|oy|pw„‚‚„yl}{…‡|‡}˜…Ž}v…‡u†‹‹‹urƒ}€z“qˆ…}€‹x‡‰†xƒ{‡}‚’}‰‚Š}qƒ…ƒ„y‰|zxukŒ}|r|}€i‡}{‰z~†ˆu{zz}†‡ttƒz†xƒxxprz‹†‹zƒ~‡szŠsuxxƒ†t|svfƒ‡€…y€„€„ƒz†ƒ€Žƒ}…xŒz{zˆƒ‰}~z‡€…„~x‚z|ˆƒŠw“†{|…|{ˆ}…~u†ƒ‚zm‰x˜ƒ‚…|ƒs}“~Š„x‰{|}‚vq„…ƒ’„~zxhw„|ztz~€vbp†yq~ŽŽˆ~qƒ~x‚‚{tŒwƒx…}Œzƒj{}ƒ}…~„‡y}{x‚€{tƒ„}ˆ{‹t{‰†€†zŒ€Ž|€€|ƒ{v†‚†z†ƒ…„r‹xˆ‰‚„{‡‰wh}„~€s‡€Œm‚t€‚„|€Ž|r€w„…€€{}Œ‡‡’r~}zvz|…€qƒs~yv…‚††€‡{nu‚‚~„uv‹{„y‚yˆx‡zyhsv}~}…~€z†|‚|v|ƒ}tt‰Œ~„qŒƒw†…t†{y‰rwyˆy~‡v‚Œ|Šyz~|€ƒ|}{}yx…ƒŽv„…|z|x{†~p|€uˆ}v{rŽŒ……oz{n~Š†|†t{nƒzˆsy‹ƒ}|uz‚{ƒ~ry}zw„ƒ~ƒ|wv„{†r~yqˆƒ~xy‹Œw‚xx}u‚~€wmst}}‡v…ƒuŒyz„ƒ~~{~‹‹ƒ‚„‚ƒƒvˆ{ˆ{{{}‡q‡x~t€yy‡€…t€z~wƒn…svu}z†}yx‚v€‰x…„€~ƒ|ƒ€‚w|Št‰z…Œ{‚}„y}w~s„†„{w~„ˆ{ˆx‰ox„†‘}y|‡|…„}†vs„_‚x{„…wzŒ~„‹}‰~yŠ|€}†||ƒw…ˆrƒƒ}‹‡…w€w}y“{xtr‰Š…Š~…„‹u†€„~†qx€„ˆ„|~{w‘|‚‚w…‚‚Šƒ|ƒq†}…k‹ˆ|}~{~vw’|€†~†ˆŒx€„…vz‡v‡l€ƒwiwm‹…ƒ‡zx{z‡}qvw}‰~€wwpj€o‡…„„†q{€†‡…„†ƒy~†wuyˆp†Ž{‡uvwsƒxƒŒm}…ƒq~‚{vu}~†v‚{‚€u„„ƒ€y‚~€~„u„v{…~~ƒ‰w†xwˆ†€…~‹††‚|q‰†nuv~„{yƒ††’€ƒ{ƒ‡{z†tƒ€†ƒmy}Š…y‡€||vˆtzƒ}“…„‚‚s€y’u~~p€r‡w•zƒ…|€y}v‚~€|~u{‚€ƒ†wˆ~„||Š{Ž…zƒ}ƒv}q‡‰Š||Š‚x“†u‰w|wƒƒ‰ˆxs}|~~€~yw€{x~{}zx}~€ƒzƒ‡‚„y†ƒ……}„x}rwuƒ}zƒ{z…}‚†tŠ{‰}|yx|‚|‘z}|||‡x„€s€qtx{‰ƒ|y‚{y„|rmy„~Šsz‚}s‰‚ww}vvx}€}v‚~€‡|zŒˆ‚uxŽ}ƒyy„„…€~ƒ†ƒ‡wz†…|€{zˆ}|…~„|‚€ŠŽ}€szy{‚sv{|†t‰z‡ˆ|‚€|z|pˆ€†{†„z‚}‡Š†Š|„}x{x}…v€„{}‚wx€{€‰‚xy€v‚vz„~‰€‚€|…ƒƒ‹…†€x†~|y‰‚„†„vxvv…o‡†}†‚wƒ|‰w‘„„„zyˆw…x~„|ƒ‡‚„„}‚‚†€|vp‚y€ƒ~uˆ}„quvtuy„€}u€ƒv}„{‰…„wv{„€€ƒzy‹€‰x€x€znƒ‹€€zv„‹„|€zu}…{~|†|…x„~„zu|‹‚Ž…n}s„spzx‹†|xrr‰€„€„rnpw‰†Ž‡‚ƒv€z}z‚…†…yz€}}ƒzyutr~s‰{xu{x}ˆ‚…€Œ„i’„{ƒƒ‚ˆƒx‘ƒ„y|~}‚j„Œƒ€‡t„…ƒ{‘€…tzx†mqxvx|w„€rƒy„m‰ƒ‚š„z{u|‘w†~Šƒ‹}‰|ƒ…‰y‚b„ƒƒ…r‚ˆ—|tŽz‡†~zlyws|~„Š‚}ƒƒŽyzƒ‚vŒƒwxp}m„|€“Šq‡•}‚€s}†Š‡uwŒƒƒpy•‰„hƒ€€z€w…pˆˆy{~x…‚„€„z€wv†„{†{v†‚r‰s|yzw€ŠŒ„{w|‚|”ˆ{q„~„ƒ}xŒx…ywy€ˆz€x„uqƒdwŒ}€‡€}€wœvƒƒŒn‡uhŠ|…ˆŠŠ‰m‚m~~{vƒuw‚joŠ{…}‰}zur{{wƒ}{Ž†a‹x…ƒyjŠ{~‚ywˆ~ƒ†~„y’q|~‡r‰…‡‚weˆ‰…†‚rƒl€}y‚w’‰€††ˆ‘|}Ÿ‚‚yz}‡•usun~~y‚o•w|z|ƒ€Œ…t‚~o‘|‚{uŒt†£}y|y~cpsyi|z†w‚tx„•r‹zŒ††xwŒ•„y|„‚sfr~…‚}z‚‡€„qx‡y~‚r‚ƒ|~{z|gƒ‚†Š|}|k…xnˆ‰{zŠ„mm~Œ||„‘„}d}{zƒyps}Žoˆƒuˆ‰ˆ‡‚nŒvŒƒu…„†{†•v~€‚{‚~…˜`s{}‘y|Žž…ˆ†|‰}„ƒruo‚‹€}s~†t˜~tv†y…†u|›€„†v|ˆw‡†qymv†……|{…‡’vo‰„z~z€“Œ„x‡~z…ƒ‘zŠz‘€‹tx}rqw|}zqu€€‚Š~}€b‚…{‚zx}…ƒgry‚~€‚ƒ‚Žl€h{ƒ}|†||…o˜ˆ„…ˆŽ†b{w|~}‚†ˆjtt}‹tŠ‚jƒh{}nz‚t‰‰^uŠ€„}š~…~‚€Œ…uu“tœ~o†u„‰}ˆz’{w‰—{„†…‚rsvj{|yux~q‰ƒ•ƒˆz~€„‚w_t~‚|uˆ‡~˜_t‹z€}ozaot€†‚zlhw‰z…†‚}yžvn……€‡‡|’–Š‡q€z‚zƒozbux‹†’y…fxtxƒr{‡ž€|†…‰…„†‚|†wysw‡—w{o„‘‚{€†~’t|zhl~uˆ„}||—n|tt}…‚~’rjqw}‚y~†}}€Zr‡‰u†€{†x†’‚€u…zw{†|hˆvy{‚x†–Œz{m|„‚…€s{|}‹w‹s|ŠdtƒsŽ~o„r„ƒs€w‡‚…zˆˆy†k~Š{’tq…|„v{rxz“~p|‹}ƒqk™p‡‘zzoxˆ~ž‚s~~|€vˆzœ„v{‚‡…—yˆ€yz‡€lˆ]w‘|w~€†…z–q†ƒ‡xv‚ˆ„xw€ƒyv…‡Œ…{‡{hzwƒœ|‚sv€uu’s‹‡f‚‚—”wˆpy—r‘}…~Šwt|izŒoxnzsz]sxw‰s|}{g~t‹‚…€†~szlˆ~‚s†€‡‹‘†ƒ€ˆz}{„ƒxˆ‚…„‡ns‚‚ŠŠƒ{‚uky„|tšƒ€zŠ‚yuq™Ž€„|go†ƒ‹k|y€’{v{’~}…z’—v„€…r}ƒ–v{‚†nwˆy‰{…|zu|‚††z„rt‚„ƒ|{x„skzy‡y~‚‰ƒyy‹€{Š‚y…x}‚yrx|ƒt‹v~~t|ƒzs†wz~„wŒj}s…ƒ…ƒyyt‰ƒ’‹„x…|Œ~‡{dvx…}€}wqwhzƒˆ~}y„iwŠz†|}Žhxzo—|{|x‚‡o~yŒƒŠˆ‚{‡Žwt…|„ƒˆ~…o†wŠ}}‡…‚…„…z‡{swƒ|‚xˆzzyw}‚€v€„~|€x…z}}r~|{€t‹„b|{y†~x‚xwtpŒ‚}‡x…‹nvv‚ƒ†u~‚€‚„o‚„„}ƒ~…„ˆ|‰~}€x|ƒz{‹}€{|„t‚‚s{…~‰ƒ~~wƒ‡‚|‚{‚|{‰{|}‰}€x|Šr‹sx‡|~wz{„s„}‚‡||z†{r|w|Š‰y‡„……„‚‚w…‚€{}‚mw…zˆƒ}„{q|vˆ{{…ys‰t„zwh€…‰~{‰‹z|f„€‰|‹{k‹|†€|}sy‹vw{z€†ƒ{„„Ž{ˆŠ‚|…zƒ|„~‚ˆ‡Ž‚‡„Ž…u‡ƒy‡ˆ…~{‹|yt†„‚†{z}€y†w…}ƒ€„e‰ƒw…€‡ƒ|oŒ|…x‚~€†{„jyƒ}€|‹—{‚s€ˆ†‚…‰t†|‡~€‹‰xy„z~zvŠ|†sw|wtˆŽ‚|}{‚‡w€}†‚…€o‚…†y‚‹w|vv}v‡‚…‡‡…‡|s‰„€}„Œy€g~†v‚‚Œ{–v…t‰‰Š{…Ž‡n‚uxt‘~w{‹”‚|˜€v}{r|Šƒˆ‰~‚p„{ƒ‰Ž‹‡‡|~x|…}‹‰wyn€}‚€Ž„}…suyovƒ{‰Š†~†„v‰ƒ{ˆ„ƒ~„{m}vƒvˆ|ƒy‡rŽwx•…„€Z…}•yuw|˜~~„r{†y„ynx{n‰ƒt|y‚Š‰…~rzx…|ˆ}ˆy|ƒ€„ƒ€}y‘u€ƒsn~~z€{~€‹w{„yƒˆv|‚s{z|‡x€y~wqƒqu}‚zvz|~}t}€xy€v‰xn{q…†v€„xŠf‚w„yŠu|•ƒ|ƒ}x‚‡wˆwˆuu‚x|zz}}x‰~€€‡Œ‚ƒu„€ŠŒ~vu€h~…pt~p’xx‡€~ƒy†‹…|„{‚ƒ†€‘‚€•…v†€y{x‚„‰‚v‹r‚u{Žy‡v‡p“yˆ|v…€Š‰n„z‚„~…xr‰|‡vzwf}–~Ž‚‚~}„oqˆhˆ}un…€Žd}w}‚}~~tƒŽ‚Šz€}t„…Š‰z‚}„Œ|€ut„‰x‹…wwsƒwz†}ƒ~}ƒ}‚„‚~z…|‚q‹}yƒ{‚t|ƒ…|†zx}€‰p|}w„‡xn…y”‚q‡}szo„‘ƒu{‰xŽxj…vv~ƒ{s‰‘Š„ow~{ƒ”}…w|~…ƒƒŠ}€~m„††wrty›z}|r}qry‚z†…„{o|ŠŽ‰„ƒ|…‰yz}oŽ|~ww|}t†‚xƒuyp‚†…Œ‡v†…}v{|z‰}}v‹k~~…€„ovˆ{z€~Œs…~vv‘Žn“ƒ{~vo„€v“wƒxv„z„˜ƒzŽk~†t™{|Žy–‹v|€l||˜}zˆ~wŠt}~Št‡{~Š~n|j…†z}xy‡€}|{„‚…~zƒ~yŠw‚Œz…y†~„€}{{…~xrtpw}€€|Šz|w{yx|wŒ…|€uzuˆ”…wv~s‡€}rƒ}}€|st‰s‰†…ƒp‡o‹z„‚vxrt€o‡w‡px„{…Œƒƒ|{}Šr…Œx{ˆ‚„}~t{{r{€€„Šxy€u}„~„‚‚}wt|w}˜|ˆŠ}|‚s†‚t†|t€€x€‡~}nx|z}€†po~}†}{…owŸˆ}ƒ}x}„‹ŒˆŸ‡‚}|…{ŠŒ‡yv‹vnqyu•”€‡‡}q€††„}‚‚‰“‡‚||‹q‚€ŒŽ|}w‡ywŠwwƒ{{~t|{‰ˆˆ}††‚y…v„y‹‚}”w{ƒ€zˆy†ƒ‘‚‹kxzxyƒ†„Šs†|‡v€‰…‹ˆ‹yz~|€{~ym‹ƒ†{|}~…pnv‚€‚vŒv~u„x…Ž‰}wy†v‡o{ˆŒu—xzxo|†Š‡{}…tt‰x}ˆ€‹‚{€‘ˆƒ„†ƒyq}…ˆy„‡‚ˆ}‚}ƒvw…~z}}s~{†‚s„|…€~€…†q‘n†z|s…–x‹‹w…|r…ŠŒƒƒ}zŠ‚Žw{…‡}†‘…{cy‚|}†Ž}qo|~‡~|Œƒˆ…‹zz}|z•ƒvuvxŠƒt€Œw‚~‡‹y„wƒw~€|„‰€€~xŒ}zƒ€~Štw||…}~†‚s†z€‚r†}‚„Šxzw~…Šzn€†‡v‰Œ€‰’n„z‡v†y‡oq„„w‹v}‰y‘x{…ƒ†‡‰‰~‚‚…zw}‚‰vƒˆ‚ƒ‚‰Š}{€…p}x}…r|~~†zx‰ƒwyw‰~‹vr’{‹q€‡…s~‹‹ˆ€|Š}Œ…‡zoƒyx}rŠd‚Šz€…q‹‚…„Œ‚|u{xxƒ‚}ƒ~…}‚|€yƒ|~‡†ƒ|o‰vxƒƒ‚zz‰ƒ~…ƒ…€|z…zƒz}yŒƒ~Œ||ƒ„‚’w‹|†Š}…‡qqz‰o•~x‡ƒ{u‚spq„€~}†‡x†ŽŠ‹z„€€…„wŠp‚€€€‹w~…€ytwsƒ}ƒ}‰†|w~y†xvy~…xyu‡t‡o„|ƒx|v|ˆŽvz‚ƒŒ‚|syq‚~zvw}}xn†‚~z‚Œ‚€ul†qˆ}†t•u…vyˆ‚nyuŽ{~~xyly‹ˆŒˆ}‹†…ƒ…€|†~|ˆŒ€‹€r…€xz‹r{……„wx‚rx‡vŽ€y{€‡~‚€{‰ˆt{qw€€~v€€‡r{~‰…yt€bz|{€‚€wvŽ}†{}‚‚}—‡w‹r~ƒŠ‰†v€~|‡yyzs{}…{„~y…|p„yx}~Ž}my}‚{x‚{€|l|‚y‹|†„xŠ†ƒn|yuxxsˆ~~‚›~‰Œ{‚€„–ˆ~„v„y…‰‡xr€ut†y’‚‹zvnpw|Œ™z„|z…xy‹v–†€~}yyŒ}z~y~{wt~}‚zw‚‡~xzv„ƒ~xvx}~„†ˆ‹‹}†|y‡€‚~„tl€}|w}…ˆz“Œ†zyŠƒ‡Œ‡…}zƒ}‹„‚ˆ†u~€ƒvzz„‰~u}’t„}„†vrƒz„–u†ƒ‹€z†ƒ|‚…†‰……tu€||{y{|‘}‰}‚uŒ{oƒ}‡}|w{}˜ƒ‰}|||||x{Šw|zƒ†‰tz‡…‰v~ty~}}}~~|Š‰y~Œ‰|}Œ…|{r†}vˆxy„uz}„“~†z€…y‚z…wz|u„u†‚e~‚€xz„n‘…‡ƒˆw{}‚wŠ†€Œ{xwwƒŒƒ~ƒzt„…sƒƒ€w†z{~x}‡~y…€{wtw‰x|}€w€l€Š„z}|‰‡‚Šˆ‡‚„•…•zˆ„…|‰wŠ}…„y|~u‹Šrw|€†}|}‚rƒ€‚…p{r}†x{‡}u‹lm~~x}€‚s~{{„w‚ˆ|‚xx†€„†ˆuŒy„€o€y|˜}|‰‚y„z‹…fww„vv€~‡†n„t|Œ}~‚~Žsƒ€u}ƒyuk{‰„wwnzƒuw|€„ynxgƒ~~€‚‡t…€~‰u~|o‡w|…qƒ„†rˆu~„|„‹xƒ‚‹~‚tyˆ~‹vrˆ…n‰{}‡{p‹l‡y€}„vptos{„{’ƒv†o‹‚|}}}q|~•y‡„‹{ƒ‡–u{}‚pxk{‚i|lƒ‰†{z{€‹yŠ|}z{„~‚wˆzy…|z†„t|„„‰|~~r‚‚|xuz†x‡†}zxwx…‚…z}Š‰~…q|}ƒ~wƒŒ{q‰…u€ur™ˆŒƒoƒ‚oŠuˆƒ€vx{y‹…}ƒ…†~nƒ€}–|ƒ‚v“…w‘‰€Šxy€s~v‹~z{qˆ‹†…wy…{|{wytty‰ƒ}‡‡wyr~Œ‚|yv€r‰‚‚†v{…{o…ˆ …‚€|~o~wu–‰€pzs}}sŠzˆ|€ƒbo„‰’€wr|luˆŽ…zxƒ‚”x|‡…‘‹‚ˆŒ‰{ˆrxt„†ƒy…y~†yˆ|ˆvo€s{Š|…~~xz~r‚„‚ŒŠ~y~„z€‰‚}€†{€zkx}~{w†€‚~y‚|xv{uƒ”q~}‡z{{„œ|ƒŠyxvxpy€zˆ‚x„|‰{€u€|‡~z{y€t—xzƒ„…€ˆr‰ˆ}†m€€zp†r„y‡o‚‰rŽ|}ƒ}…v‡s€~‚xˆ|}l„v~†|Š}y}ƒ~Š~up~Š„‚zz………“…uˆw{‹€g„w„‡}ƒ€€‹ˆo‚y|…}vvy}im|}uv‘|†v}}}†€|ziy†‚‡yr|uu}nƒrxw‡‚‹Ž”‚z„}zˆ‚v~j‡€Šzx{q~w‚{‡‹|†‡‚~‡t€s{s|Š|zŠ}}’{ˆ‰‚‚{{ˆw„†}}ˆvvw‚|rzwvxˆ{†‚{–‚‡‚tˆˆx†z†w‡|{ƒ„~ƒ{Œs‘syy‡~{{~„or„z{ƒ‹•{ru|ƒ}{~||}q{}nu…ƒ€~u}yƒ†‹‚ƒƒ|†|zy{r‚zŠ~yƒyzox‡‰Žs{s{py{‡…{{yk}uy€zwyvwmpt†ƒ~|€Žv”|ƒ†ƒp’‹‚Žuzy‚…u~rŽ„€‡vwŠ‡“z‡uy‡xo}o’‰‚|ƒ{~}r‚|y~ƒw}z{{ˆ…ƒ~v|‚y€om}~†~„|„||y|‹~w…r‰—rz‹{z‰pj‹pz€‚‹‰ˆ‡yztzŽ†vrytƒ|‚ƒŽ‚ƒ{Œƒ„}Š€€sp~~v„ƒyq‚~y‚v}|}Œ€‡zƒ}yt€††Œz}ƒyqw}’„~„|€}}{…j…†‚…„sˆ{oiw{‹ƒ‚‚|„†yns‚‘‡‰xŠ~…‚|‚{Š„„€wwpjˆ††xt‰yx‚|~Œ‚|€‚‚z†t‰‡‡„ˆvw‚yy“„Œ‡~„{‚”†‹x€{z‹tx|†{€ˆ’“o‡‚‡„„†p‚}ˆˆ‚~}|x{}u„€}€ƒz………u}„††‡u‹‰u|yy~ƒ†Ž€’n†}…s~ƒ~z‹†‰v{‚}ƒ€yrx}yz€€†l€€ƒ|}|…y~‰€{w}}‰…„‡…~|y†w€|‡{y{€{…{~‚x}‚|}w†|{ƒx‰€hˆ‚yw{ƒ{ruty€}{ztt‡z…‰xƒ‰{†„~|€zs‚s†{’}ˆ{sŠ€v}r‹…‚x|}€}i†‚oz„‚w‚pŒyzo|~‡~ƒy|†x{„vŽyv{{„€ƒ†‚†€ˆy†w€u„{ƒt}€†’…•qzs{{‚€‰|x~€|~‡€}‡‰‹„€yzqƒsz†„€‚‚yv{y~…~‰‡…u‚x…ƒvˆ‚y„rwvr|‰Œ‰†Šz…|}„|y†s†€}€Š}†tƒ‚ƒ‚‰ˆ‹|€{ƒv|…zƒ„~}„{tmut€€ˆ‚{‰t{|z{‚ƒƒƒŒyy{u‚„Š€€utx|~u…|y~up€u~€{‡~~ytxƒ|€”{|j|z€z‚}ˆtuˆ‚z~~{…‰ˆ€tvˆ~†ŽŒxw~|’y‚’€…{j{‚}ˆ‰‡‚yyuxv‰‚‚uƒ‰ƒƒxyz„ou‚ƒ‡„‚lˆrw‹vŠŠuŒ‚nˆp{~ƒu‡„ƒ„‰~z‡‚ƒ}„{ƒ„|~wzx€yq€ƒ„~s{ywwx‡~~}w„w„ƒzƒvˆ|‚Œ†‚‚Š|€}‚}xƒu‚‡|z||{zl‰z„‡ˆ…r‡‚‡~xƒ~Šp~„xy{{‚~{‰vxwu‚o}ƒ{‚‹‰‰ƒu~„zŠ„{„|zry…vƒw†{‚{ƒŠƒ„~wƒx…„y~†v{„|ƒ†}ƒzwˆ…‚‡{‹~z€u†‰|wy€{…z„|‚ˆ€~‰‚ƒxƒ~ƒ‡zƒy|~}‡…{uzrx‡‚†{‚…{‚„€|z‰†ˆ{~t†{y„ƒƒˆ|tyyw††‡…‚|y~}„~…ˆuƒv€ƒ…|ƒˆ}q}‰wŠŠƒ††ŽzuƒyƒƒtŒ‚…ƒ‚‚}…v{u~v||€rƒix~‰n~y~€x…„’‡‚€ˆ~x‰rŽ˜ƒ‚|y~„‹ˆx‚v‰~†…ˆ…ˆ‚{l‚Šzy‡ˆŒ†}‹vw~z‚q†‹yx„‚|‹o“wv‚‚ƒ~ˆwy„‡w‹€{yhz‚ƒ†z{‡„{Ž‡s‚ƒ„w€‡|zmx‚~†‡€}yyz„xŠ|{‡Œƒ„ƒy†s}††…‹‚w‚…|vy‚‡‚‚‡‚€x‚u„t|…}ˆ‡p‚ƒ}‰y||€€|s…zp‚syx†‚Š‚v†ƒxƒ‚{ƒƒ}†zŽ}ˆƒ}Œ‚k„|‹~…y‹}‰{…t}ƒxƒ|rlƒ~„{‰zxƒ|€„y|‡~€Œ}}…~„…}}€†ˆu…{ƒ‚w}tx{zyzw‹o‡x~ˆƒz†s„zƒ€zŠ}yƒvx~‚yŠ‚ƒ|uŽ„”‚ˆ{‚}||x‚†~€~y‡…ƒŽyu}‹}„€ƒ€xŠƒ…„|w€|||y‹~‚…~€…zƒ|w~~t…ƒz…‚€ˆ€ƒŽty}nŒt…†“zw~w|„…uxv|†}yŽw‹‚yz„|…v‡vzvƒ}‡‘sŽyx‚‡v—~~™z|„ws~u}~‚~ƒ|u…s€zŽ|€{r{€}†{„ˆs‚x{€}„~€€‚|}z‚~€„€wvv|„€Œ„wx}z‡‡Šƒq’yuytwƒˆ{†sw†sz€|ƒ‡„|„~xux…g{”„‚w~{xƒ‡|€ur‚ƒx†‰vˆ‡}Œ„t}‚}„‚s…Œ|‚}v~„‰~‚‰~||}‰†„‡Žvwvxˆy‘t~†€x‡z…‚ƒ‰ŒoqyzŠ‡r…s}‚€ƒ~€|‚‚†‚„x‡€‡vxy}~w€‡‡yvw|u†€|…‚s‘t„ˆ}s€†{‡p‰zx~‚ˆ†‰‚}{€z{zx‚„z„€t…Šy{~~~‚€„€ˆz…„sv‚y…~‡{‚|}xw}~u{€|}~€„‚|xŠ‚s„{uzˆ|w‹{Œ‚‰€‰{v‡xˆ~‚…~~‡tƒ‡‹‰{‚‚y}„m‡‰|uˆvv‰q‡†~y„|~„‡„€x‚‹u}{ŒŒ„€|s€~…Šylzy†„u~yzv|u|‚~y~zx}}||x€ƒ‚sy†Œ~wŽƒˆ‡€y„xu‚|w|€y{y~{w…yyyˆ†u{€€uz}}u…‡v‹i{|xŠ‡uŠp‰rt}~u…t€|ƒyŒz|‚{o~sz†|{}kw„x‚v€‹{~~~„ˆq}ƒ„‰lxƒz“„zƒ}~~y}„{}|}{ƒw€ƒv„{{ƒ‚‰‚‚{…w~…{€~~~„w€|„‚ˆ|~{{w|u†„ƒ}y‡‚|€wƒ}ƒx‚ƒw‚}‚„z‚~ƒ€{‚…~‚{…‡uƒ‚s€}w~€†’€‚|„„„wx€{Œy‚|„‚v|…y|~|t~…ƒ‡r€xwvwŠ|†Œ{Žty{€‡z€~t|…y~y{‰‡yy€z„ƒŒ~‚zv}|z„~€†…z„~†’€t‰€wŒ|s€z‚twƒ€ƒ~v~‹z‹xƒ‡sv~zy€~~w|~w†t~zx‰…zˆs{|p‚†‰ry€pu|‡…|‚x„‚}ˆˆy†€|{t‚sz{‡ˆ‰u„qƒ‡‰yŒ}†}||€}x…kw‚t‚Œ~v‚uzxt‰~‡‚{†{vŒƒ…}‚ƒƒ†t‹w„ƒvŠzyx€Šz|‚zz€wo{v€‚„}ƒz„w€~ƒt‘€Žx€œ‹‰q…‚‚…ptu‰~v|m„€†‚†qqq|zr~~y~Œt}}ƒ~x|vk~„‹ƒˆ€{€‹‡Ž‰}{…|…‡„rv}wˆ‚q}€†„‡ssŠˆŒ„|ƒ‚ˆy}‰x‡ˆ|‹ƒsz€€l{gy‰w…{†ƒƒ‹}‡„Š~vŽ‚‡‹€}€q‚zuw€ƒ„yzr€€~Œ€‚|„wxur‰Š„~ƒ}y~xlv~v…{qŠk‹ˆ{z…ˆ{j{‚y„|y|‚w~uwuƒ|~ƒx†‰}‡{ƒz|v{‡„zz‡‚‡{„{„…wŠ|ƒqq‚‡n„py€vwƒ™‚v“l„„‚qtvŽ‡†‚†{’ywyt‡ˆ{‰_u…†|€|†€|ƒ‡–†‰~}…j{{v|{ow}q„w…zq€zŽˆ|~{yˆ‚l|€t„‚…ƒ|‚v|s††u‰ru}€z{y|ƒ‰{|Œ‰Š€›w‹„ƒzuy€ŠyŠ€€z‹„Ž}y}z‰’|‹…ˆ~{tƒ†ht|}|„sm|„ˆ‚†}‚Ž…ƒ|‚w‚‰„€q‹s{‘hjwt†„|qu€ˆƒ}z†}yq~ƒ€{z~„{ˆ{qq|ƒ‰Š}ƒp‚‰ƒzz‰r†w|‚s€ƒvƒ‰u„‡j†ƒj€{i‹‡}“yu…ruvˆ{“Š~w}}xŠwusw|y…ŒŒ|„}}{|}~€p{w‚t‡ƒqxk„Š€‹zx{p}z}ƒŠƒyŠy„svx‡…yx€ƒw|~u…|ƒ~xrp€}†}u‘r‘m~{{|‰w‡n‡|…|w€|zytvo~Š„‡v€}~xt€x‡{„}w}s{~uu‚{€|o|z…’—†ˆz{…u}ƒ‰z†‚w‚|„ƒxzˆƒƒ}zzxs„Šwt€{‚s‡y„ˆ{Œ~‡‚„z…{ƒ‰‚†x‚…€‚o{z€„‡qsw~„vu}“}‚‡„v„yy~zut‡|wsx}‡pr…s‰zvƒqf„|„~xz~rz}x‚‰yˆ‚|“}€~‚wv‰}•n}„„{m†~|Š„ƒuˆ|vs†z‰x|„mx||„t{w…~u‚{z|xx~uƒw~‚€†}ˆw…}€r€ˆ‚’zx‚|y”ƒ‰}z„|yŽy‚u…Œ„}u‡‹}}uk‰ƒv~xy{‡€}”ˆs€†…ƒq—€‚z{yooŽ…‰w{…†{v}|Œ‚}Š}ƒwˆxtƒ……‰€xvs‰€{ˆ{ƒ†{‹~z}z}w~|}y{‚‹†~zn…ƒ„‚„sr†z“ƒwr‚q{~ˆ}m‚}y„t…y€‰ˆ…zzry‡s…q•…zƒ‚t–„‡‡ž~€…}ƒnq…™z‰z~‚‚}yŽŒ‹ƒ€x†‡y‰~}~wyh||vxŠy‡xqxy~‡‹yzz‚~v}ˆ~|z}v…w„„{„r‚i€…y{†z{‡’†…‚~}€v‹†zˆsŠˆy‚ll‰„…u}xt†x~’‹€…|w…€ˆj‚’ƒ†ƒ{}‚Œ†wz€yˆ”|y€xƒ}ƒ~ƒvƒ|zz~v|†—ƒ}xŠv…y}}|€y|x~y„}~}~h|v}…zw€€v„‡ƒ~}‰ˆ}ˆlv…z‡|z€yw…„~uƒ‚ŠŒ‰|€†qƒ€|w~…xˆu…z„|z†€‘y‚ƒv{ˆ}…oˆ€†wƒ„i†ll‹…€|Œ|…t}z‚{w–€vxu‡…wyyzy~‚‰z}uxx‚ˆƒ…‰vŒvw‡xy~{…†‚„~‡ˆ˜‹‡|‚‡€‡‚†ƒ€”z~ƒw€‘}ˆ~ƒ€„}}‚„l†~‰ƒs€w{‚‚z|…w|ˆy{w‰ƒ}€ŽˆŠ„x|‡~‚…s„‚jr‡‹…|z†x}ˆ’‚zƒz{{ˆŒ‚‚uz{qƒu‚~…y|‰||}}„z‚„zx…s‰„€x€€}Š||„}{zyƒƒ‡~‰ƒ„‚xy„……v}‚v…xŠ‹rŒ‰€zƒ}}‚u‹‡z„syƒ{x€q„‚}jƒ||Š‡|ƒƒ€‰uz„|‚}†‡‚vw‡~{s„ox{wƒ|~ou–~y{}€‡z‡‚vx~sŒ€y|wƒ‡|…{„Šyv”z}Š}~ƒ€q‹‡„‡v‡Œ}‡‡†|~~}z‚ŠxŠf€…€~x~Ž|~vyzŠ{z}‚x†‡‡x{†„|Š}x„{u‰~x~zx€ƒ‰ƒwz‡z‚}zy…~{zuw}†€‚|sw„o‹„y‡‚€ƒy€}‚z…ƒw‚„z†‚yzz…xx€wt†…‚€ˆ‚‚p‹{y}z‰|‚}u„‚„ƒŠ€x…z~€}m‰ƒ††}ˆ€‚|w{‚xvuz…‡†|~q}n€y|~…ƒz„ez…x„…n}€s€h|{|…}…ˆsnˆ„€ƒvŒ†‚‹}€€{jƒ‰}ˆˆ}Š~™‰ƒ„|‰‡ƒw}…ˆ‰~‚ˆ}‡’y…‰~Š‚}‚}‚u|y|}†xo‰ƒƒ‹z„ˆŠ†ƒ‚}zy‡‚„y|u‚}|€†Œ„‚z}†w‚}}tˆu‡„zˆ€Œˆqy}vˆŠ…’}wxoˆ€€ywu‰~Š~~{z‰~‡p~‘u…zyypƒ}}ƒ……Šzv}xwˆ…w|z…xo…r‰x~}{t{n~€‰~qƒˆnuŒn—}w~z‚}‹’—u„~‹~‹Œr‘Šp„‰t€†iŠ—r~py…y‚Ž€‰‚|z~z†}ŠŠˆ}x…pŠ‰€ˆŠ{{„…€|}ŠŠ}~ˆŠ‰vm|uy‚u‹s‰ŒŒƒ„|vykpz…szŒ†uqu{Šoˆ†{|‰{‡„‹zyvsny€zŽu{ƒ|vˆy†zxwt{~vj†vz…‚‹ry…„Œrƒ†x|ˆ}~‡ˆˆ„}y…€‚Š†{x„}z‚}’‰s‘v}|‹“|uz†€‰št~h˜‹{…zŽ€~œŠ‹zŠnuu~xp‡t€Šƒnur€~`zoxyr||€gsƒ‚~zˆuv}•‘…‚~{x‚pxs}ˆ‚{€vw|r…†}ƒŠ||||c‚~ƒ‡z~z{’x{w{‚w†~…{„‡v{xƒ…}~tiƒyxr‡~un{r‡qtn{ˆqv{ƒ‚†y“}j‚z‚˜ƒfpvtw†t‚‚smwm}qyz~Žwc€p|stˆˆ‚zšsrˆ‚{~ˆ~”Œ€w€z~Š{w—€€qsw‹…vŠŒ‰†v~z|ˆƒœ|}~‚}{w‹wk~lˆ{}…„}„ps‰zwyw†…€~|}yr}zy„|„Ÿ‘Œw{~xuu“u„„{t„s‡‡s”{Š{t{ven…‡}}†‡f€r|u|zŠu‡„‡‰{|Š}…ˆx›utx„z„…€…oy|}ƒsw…xu‚u…}z€„€yiq}z„t‹€ytŠ‰‰‡lz€vˆ…—ŽpxŠ‹|•’nt~m}}…€wx„aqˆ|‡…‡‹x™ˆ{„ƒƒŒzƒp…k}}„z{†x€‡Œ•g‡{……t‡z`yƒ‚y…u€—pzx‹„ˆ€|‚qˆ}~‰ŽƒwzŽz„ˆy…‰yz}}‹†–y{os†€‚‹Œ‚•„†wŽy}Šx…~‚‡ˆŽz}ˆvƒŽ‰Šˆ‰~€„Œ’tš…zw}t‰‘„vcŒs€wy€‰†xh||{ƒ‡zŠyyŠ†–†‰„Š„ƒ…msz€„„qx~x{~‰{t”‰zzpŠt€Œu‘€{~ƒx„}Š…h~toaz{€’j‡‡ˆŠ‰q‹€™–‚xsz’z‹š‚†‚~[r„€‰}Šƒxr›pŽ„}ˆ|€}ˆ’Ž‰r„z††ƒt¯w€}‡ˆ„vbrs…‰‡}im€ƒ}}{ˆ‚s’{–vƒ‚†st’…x~{uŽs“hwvv…}lm{~|zxsymy‰q”}rpŸ…w}z”†l—‹Š“d††~|ˆ•uy‰••Œ}wjh€ƒ‡‹w‚vs•w‚{‹|tŒjŠryŒz{ux„xpz{ƒxƒ}„~{~~y…vŒƒl“€{{ƒ‚‚‡uvg‡„ƒ{w}€m‚ˆ~wƒ}€†’Ž‘{dv~‰u˜ugˆr…‰‚‰‚Ž}¡‘lyq~…‡~¡}wr„y¡|ˆ~vy„w‚m†j„~ƒ}„ƒ€}shƒ~„…ƒ{}}”…‰vƒ|‡€~yŠt…uzzˆŒ|~œ‚‹„izxv‰Œyo{utŠˆ‚€|„~‡‡ƒyŽy€Œ€|‘zwg}‹|‚ŠlŠ~qas{|…Šx~„€nw€yŽˆ‘}sƒ}~†z†}x|€~Œ…‹Š…€ƒxuƒ{‡‡€x{z{}~}ˆ„wˆ}|…v€x}€€…p|‡zƒvŠ…Žx}ƒvƒ~ur€‡„{~zu‹€~|syt‚iv|‰y}vty‡z‡t€†yzƒuŽvƒ{~y}~|l‚†v}r‰~‚p„|…z„Šs…x„}€‚…}Šzv•€~xux}‡ˆ~‡x€Ž}ƒ}x‰ƒvz}xv{w„z€~{ƒ„ƒw|‚xˆx„Œƒ…ry‡‚‚y€‚ˆ~zˆuzvpyŠ{‡{w‡}w…†q„x„†x|†Œ‚}||n{{z„‚†}}ˆ}…~„w‚}}y‘…ƒ‡…‡~ˆs‹k‡…t…z|ƒ‚~‰~|y{…~xsŽuw}‚€~ƒŒ…ˆ„wwyuŽ€€Œtˆ‚…€o„x‰v|Œ|zŠx†ˆj~|Š‡x…|~}w…ybnˆ€“Štƒr„‹v€‚˜j‡w‹†z’…zk„k}y~{‹x‡€qv}y~ƒy{‚„}ypˆ}ƒu€ˆx‡|ˆŒyˆ|ƒ}yŠƒ„{y|syŠ„{„‰‡Œ„o‚yy}|€uq‹…†~n„x„Šƒm}t‡uƒrzzv’i}zx€w‰‹Œkwxytu‹x‡x„wŠ„†tŠi~Šzˆg„w~ƒ|„…yh~{zuŠ‰z…wˆuz~z†zzz‚|~‚spƒƒ|t‡~|ˆ~‡}sox…y…y„v…‰zƒ€mu||ˆ€Š||nry}u{ysp{xw~z„yzw‚zu‰qxŒx–„u€„ƒƒ…}|w†ƒv‡z’†Œ’€~y€|…o…‹“zz{‚„u‚q{Œ„u…}ƒ…Œƒzytsƒt†z{}„wt€|Ž}„ƒŠz{„zƒ‡w‹{ƒt€€~†zyyty€€€„‚†‰zx‰Šzƒƒ}€bz{w‚’vsoŒ~}z‚~xiˆoˆhw†jwo‰ƒ“}Œ‚k„qu{~}s~€{~roxt…„w‚}€†yƒ{†‰|}ˆ~xƒ{zyy{yry{‹|‚ˆxyrm~zz€v„‚€‚x†‚tv„”|zsxƒ{Œ‹p‹p‰ƒ„’t~zs‡ƒ{wk{‹y“Œ{€uŒwyu˜‚ƒ~~‹†‡Ž…„€zvy†‚u{uƒ‚€‚q‚~‘Ž…uw‡†p…si{yƒ~ws|—|…‚}}…n†ˆ{Žˆ‡„„x…„‡{‡€x€‚‹y‚u€‡}Œ}ƒux•‚~{vv†„€{{„ƒ|‚u|†‰‹Š~p…zx|}…{…€Ž…š~}xt’›yz…vivƒ‘„‚{|wƒyp}y{~t{w†ƒv‰u‰ƒy€||—ˆ•‹„€‹zr†‹†Šu‚xˆŒ€‚†€{‚uv……”„„|v‚}~}z‹‰ymq|}Œx”‚ƒƒlu„v†‚ˆ…„xy|„€„yq||y‡|‚€ƒy~uqws‹tƒ€ƒ…‚{|‹„œz€€‚†ywwv„•…v…ˆ|wx}|u~‡~€xv|m„z…ƒ‡ix…~ˆ~Šˆ‘o‡z|‹x~€‡ƒ‡‚…†q…{v†‹ƒ‡”v}Šzƒ„„ˆrywsŒƒzˆ…Šzuyv{†ˆŒ‡|}€x„~†s‡‰€„€y‡‰|„|{ƒ}s„z…„‡‚}„…t‡x}…{xˆu‚tŠ|€‚Š†~x„k†~~}††q€utv„yŒz‰‡}ˆyuˆyz€r}„‡}†yzxyxŽ~Š’‚†„yxz}}€Žƒx†z‚|{‡ƒt†{y}‚{„kƒ€€|vŒ}x“}s„v{Ž„wzl‚Žutv{ˆ†u}ˆ†€z”‡€y…ˆw…xˆ‘ƒˆw|}q€{€‚q‡ƒ{k~{z‚Š…‹†||„w’p{€‚z‹€{‹„z}”pryv…vz~n‰…|}…ˆ~xyk€‡xzz„ƒŠŒ‰‡|†zyzsuy‹‚{||}uˆz‰}{„vv€fƒ€…„ƒw€{„ƒr‡Žz†sz‘…†‰z~{…†„~‚zv„{}†q‰}w‡€…„{ƒ‰{~~v‚ƒjo„um‡e„„‚~|‡…s‚v€{ˆ|w‰|tŽ‹{ƒ„„‚p}lgs{z„zqu„ˆ…”{„ˆy€z~‡‡„…~ƒ€†‚‚ƒ„„{zy~{|z‚{„Œ‚|yzzƒ‡’|zq{{p‚y}}•‡‚p‚€z†}”‡}zˆoƒˆ„{„i{}‚vsk€}l”}ˆƒ{s„mwŒvŒ{‚~wƒŽ†‹~z†u€}€€v~~‚z~~Šz{‚|x…€ˆ‡{ƒ{ƒ„†Š‚€}~…„{ˆyŒ‚y‡†uq††‹‚ˆ€r……r‰—wŒ{~t~…ˆ—xrnwy~‚}‹ˆ€{i}q|‹†–†‰‚ˆz…Œ‡zƒ„‚€‡…x{†Œ‹zxŠtˆ‚s|~‡{z‡‚€„€‹u€~tmƒvyˆz’wƒƒˆ€~€q|„’„€€…ˆ‘ˆ†ˆ†Šx‚ˆ‚}ƒroˆ{}{v‚j‡‚v‰…‡ˆutun„xsv~…ƒŽ~zƒ~y„}~|wƒpwyƒ†€€€}~‰ƒ‡…}ƒyŒ}w}~€–{€„‹wˆŽzˆƒ€€—{wqŒy~€†‡‰ˆ|Š~‚„‹}‹vwn{†{|‡ˆsm„vv~„y‚~x{umŒƒ}‚t~€‹q‚ƒ„y…„~Šnpu{Š€ƒqhy€‰Œxˆ}~ƒ“‚tˆŠƒxy|Œ€}ƒ}z{„„‡w…‚…r{ƒ{yˆ‡ˆ‹os}wr~t‰q|{v„|~|vŽ{~Œw}†r€…yŽp€€|†zu|„ˆ†ˆ}…w‚€Œx‘{s†p{„‚k„t€~{{Œq‚“uƒyxs{}}†‚‡{~{€~t…||zxƒ€‰‚€}„z€}~ˆ||~„v…]”}„y„‰~~t—z…z‰z†”wŽ„}‡w~ƒu„yx~„~u€‘wx†ƒz}r|yp}yv}‹‚‚~{Œ{†‰u…}{…v}ƒ€…u~€y~„‡ƒˆ{ƒ‚w}ryn„†}~‚‚y{w~„z„‰€pm€wy†yrˆr|¢t‚‚~„€|…spvŠw}‘yx|tˆ‚yŠu…ƒit}}z‡ƒ†‡|w}†xy‹€~|v€‚‚Š}~yw„†{{x‚Œyƒzz~€z~z‡…v{vyŒ‚|…oŠt|}~r}‚Œˆ†{‹s†t|~v‡nunk‡r…ˆŒzsj„Š‚uŠ‚xtpp„Ž}q~{}yj†„‚twe{‚„q„’}‹nqu…}ƒyˆ„nts…ƒu€{‹…|}qyxz„|w€v‚„‚x…z†…ƒy€}{‚€v{ps}…†€‡xzt€‰€€u{„†‡z‡y|ƒy„ƒprvz„}w~xt‘‚Œ‡u{|€{wƒz‰w|x…}…„„‘ƒ|€|…}ˆ}etyx€€ˆŒˆŽ|{p{y€€ˆ…€ux|€€yv…{x}|}†…‚yŠ‡xw†{yˆŠ{„…wzy€m|tz{yi}t‡y‘†‚~{€‚„€„wˆƒr{{~„žy‹„zzy~€o|zƒy…ˆƒqnƒƒj~rƒ„‹‡|y}m‚€ˆ‰{…„~x‚‡w„}}Œy}s‘Œ€vŒuˆ†‚†€‚ƒ|vx€vs‹qŠ†y|zŠŒƒu‚|ytn‚Šsˆ‹†‰riƒ‰…‰qyy}zuyqˆ†u~xp‡~Žv}zlv}m{„z„‚Œ†y‚ƒvŽv†{‰„zyˆ}…x………{r„‹|…‚{‡„v|vw}‹|‡}‰}vyo}…x{w‚Žwl{‡ƒ‚‰‚}”…}|rƒtŒŠf€x‚‡~xtŒ‡’|r~|u}„|Œqz€‹€y…tƒxmƒ‘|…{‡‡†z„y|u€ƒ‡Š€†ƒt†z~€€yŽ‹~yˆ…qƒs…‚p†o‡vŽ{‚†„‰Ž|w}u™€‚~wyŠ†qt„ˆ‚t{~}‚{‡kƒ…‰‡u‡ŒŒ„„…‹…•Š~ŽƒŠ|t Š‹~‚r†zov{Žzn‚|~u~‡˜‡xƒ~ˆ‹‡ˆ‡ˆ„Šx‹„}…‹Œ‰~l~~{~‹†…‹o…x‚†x‡wvƒs‚w‡~v‡‹}|{{ŠyzŒzyw~|v{}vqoyƒ‰sx…p}w|ƒ…yuw€}|~r…€ˆ|z|‡~„}|‚€‡‡‡}}m‚w„Š~tz„‡~†ƒvz{…‡’|‰‡‚{xr€‹g‰vz|„wsƒz†|~‡|w€Šwšr{s††p‡jƒx€tjz€”zw{€‹}…uŠ†tƒy{y‡ƒq…w„ƒt{|…yŠƒƒ†{€‚†€}…x„…~‡{„{~z‡|…w€€’|x‚~rs}v{‚€Š|„ˆs†x}u‡‚‰–ˆ~’uˆˆwz‰{ayˆ‰…ƒ…ƒ~€g†……‡‹€‘‹xn}€~…xy‚s|…fw‡€ˆfƒv‚x„~ƒ†~}ˆp‰€r…ƒ{‚i{uy‡|‹‹Œyy…€x„z€ˆy}…zƒ‚zv‹}‘ˆ‰|ˆ~y}{‹w™u†vp†u€™‹~{tm‚qs›‡}~‚y“vˆ‹‰z~v€tŒ}Žn€†{y‡yŠtŠ‹}z‚vy‡~Œ‰„…ˆ|€‚v‚||xƒ‡Š‘vyzŠ…tŠz‚„„}~zwyŒ„‰w€„z‡†y†uw†ys{€‚nwy„xzwum”‚…‚v€x€ƒŠv’xz„{rsy}Šp„‰„„i‚z|~ˆzz}{w‹ƒ‚~}ƒr‡ƒƒzx‚~ˆ…|€…s‰x…y~w„y…‚…„zzvpyz†}Šn~…{~„tw…€wrv{…~pŽ…}}tk{~Š}wŠ…aŠ„o€~‚‰{„rq‰t…ƒ{zzx”}€ƒy‚{Š|‰Œ€…€x|†g‰yŽ‰sƒ}uv…y}‚€ƒzv‡uywy~xv|†wŒ~zu~„‚‰z}y…y…‚‚Žˆxy{ƒ„ƒ~|r‡„pƒrvƒ…z{l~os‡}r{q…~Œqvr‹yo†lmŽy†„ƒ…†„t‹p}}ˆ~voŽ|rƒŒ‚|‹Œ‰…pxƒ……‚‘}€‹|Šqƒy…†ylŒq‡ƒvˆ„ƒp{wxƒ‰Šzƒ{~Žn{zŠ…{u†ƒy}ls~„€o‚Š~w‚„‚Šx}Ÿp‹…z€}}‰u}yt‡€Ž‡Œ„tlhz„„}t‹tw’}}v€Œ…t–o…{t†‚~‹w‘‚Œw|x…„‡z‡vm}{z‡ŒvŠ†ƒ|~prywt„v|…‚wˆ~ƒ~‰ƒ~wz“{~‡h‚{…}~†zƒ{€‡{sƒp€†|…ˆ}qz~†‹€|„|v€}•z|…w}‚r‰nxz}€„‚y}~ssnzƒ{{u‘x|xm‡…‚ixy‚Œ†}}|‡††‚‡t‰{}xwqz||†~~‡wq|~y‚‘uv~v{xty‹{”ƒ|Žƒ‰~†ƒŒ‹yƒƒ|”€ˆzmt‚‰}z~vp‰x{‚}…ˆŒ‡ƒ~‚|Š„x~}p€„…‰„|€ƒ‰{}xvˆzz|ty‚p|…€‚†€{…yƒŠx‚z}…suvt~n~wŒ…vqq{€•p}rzqwks”{ƒ{ˆv€wy~h‚‚mŠ…x‚|}ƒƒs‡yƒ†…z|w†€r€ƒˆŒs‰|l{w{t„…‡‰wŽ‡vˆ…|‹ƒw…Œ|…†h‰„Švw‚xuƒv„~„u…‘x†t…r“sˆ~€ˆzˆŠr’|‡~yt{y{ƒo„zƒ{nzƒ‚„ˆƒ‚z„‚„{…~~”z|t€l€u~}†‡t†€k„xƒ†…w~„wŠttˆzj‚}uŠ„yƒwxƒŒw€{„{rr{|~v„…wtr‚‰‹‹{„}~€}‚wt…€ˆlpv…~‰xzzvŒu{ƒ{Œv~{€t…q‰x{~|~owˆ~o„€‡sz}…w€|…€{{~{„…ƒ†„x€u‰†{~ƒ€uy‡v}„…v‚{}{€x…€yƒyyxw„w‡xw€‹‰w~…€ulw~‡|z{}|qxuy{Šs‚„p‚„|†t€„qu~|yƒ„†„ŒŠ{‚ˆ€vƒsu€~u‰ƒ„Šzxƒ…y{Œz…„‚†‚…„|u||ƒ†}yz…s{v~„~„‘Š…†‡”ƒz~ƒŠ~‚|Šz‚~y|w}x|oyy‚~Šztvz~‰€y”y…w‰‚~|}“ƒ†Že{ˆ†~x{{}tq€yyƒzx~€w…up€†}yywuy‡‚w‡…†x}p|q~‚ˆŒtwj~j€‚}sxv„dŠy|xl‚ox‹vy}{o|jŽ„h‚r€…w{{Šv…vnˆ||}ˆ€ŠŽq‚~|~}~{‡|Œ}}u~|†{„„€€t€|w†„~€ƒx|…vy~r†‚„}st…u€Šz|‚š|zk‰}‡ƒr{|~“s|vqzŒn}‰{}j€‚‰Œ‹ˆ€‡Š}|€wy|}x~|ut}yƒy……ˆƒŒˆ‚zr†{ƒ}ˆˆ‡‚‘˜u|w‹ƒ|‡€…Š‹{‹uzv‡’†‚„…‹zw€t„…y„n†™ƒv{‹ˆ}ˆ†…{y{u~ƒzˆy€„…rwy{‘ƒ‚€wˆ‹‹x~|…‰‡’~ƒs‚~~{ƒƒ†r~t†n…y€†„ƒw€u}w‡z„xƒ}|€nu~{w„e|‚|{hmx•‡‰s‡€zsv…‚„v†€Œ}xorz†Œwz”…}x„x~‹„ƒm†|vw{†|…„s‡„u}{z‡}…zw|w}ˆ’{s…yv}qƒ~ƒ‰|}Œz…xw’{‚~t|‹‚|w‰}{‡yxrzˆ†…|y~z‰‹Š€y}x‡vx‡‹‡†…‡–y}ru~‚…‚z€rƒl‡…‚zx†z‚†ƒ~ƒy{„~q„st}z~}zy‚yŒt€‹…‡Šm{~€„„‚x||ˆ‚ƒzm•€€‡x‡‚}~€v‡~u{}~zvx~Œ€…z}}„{„zruƒ€†x{ƒŒ„‚‹„‰zwq~ƒ“{y€ˆ‹o~n•}Š~~{ˆƒ…}o€…yŒ|€mw€z‚ƒ…z‹‚x|~z„|ˆo„wsqwy…‰„†xxƒ‰…„}‚‰z‚}|}ƒ‹šuyuy|Žw†…’ˆzwu…ˆˆ~†zrŒ~~€‘ŠwƒŠu€vyŒ…†ƒ‚‡l€‘…‡€ˆ|€†q|‚v•x{†‚z}xxj|y“…rt€zywv€…‚}zu€{{wˆ‰ƒˆ~ƒzŠz€{ƒ’€€{†z‚y{zu‚‚‹~ywŠ‹~w}v~}„„‚‚ƒ‚ƒsƒu…ŠŒ|€ƒ„t…„€–Š‚€{†rywˆŠ‚s~€‹}‡•{ˆ€†„~lv’Š{{}‚gl{ƒŒr‚{‡…„ˆx„}{|„l‚y†€‚™xxtƒx~z‡}p‚hx~mw~€~‡u|€t}„„~s€~r‡|€Š|‰Œr{†}ƒ€vzˆ~‰‰€Œ~†‚‡€€Špx†u{~|„…€v‚w†„‚|Ž…€wuu€ˆŠ~‹ˆy‚}{„xu‡€„y…z……ƒƒ~ˆ€Œ~‚€‡…Šƒ{…‡p‡†ŠŒy~x~ˆ‡…ˆƒˆxy‹ˆŽwy‚‡†}Œp„‚w„|t‰Š…ˆy„xv‚…‹y|s}‚{…{€†wyƒ€‰x}€{‰‹…|ˆˆ}†tw‚vz}y~‡}‡‰~ˆƒ{{‹v{ˆ…ƒo}v‡‡s€z~’Š}‰Š‚‚}~„‹‚y€m€v€r}x„Š‰j‡~…Š|y‡vy‰~|p‹………v‹vj„‚~}x||‡|€~…€„x…€†x~z‚|y}y~ˆ‹‡ˆ‚‚y{‚„‡z}x„v{xw|…Š}†{q~‚v‡€Œƒjy}z‚€{„‡ˆƒƒ‡ƒƒ„ˆŒ}…s€‹„€}uk~|ˆƒusŠwv†|€ƒ‚qk„†zŒ€Žvz‚l‚†‡o”}~‚ny‹{†„‚yz‰„Š~†wzƒ}{‚y‡‹ˆˆˆˆ}yƒpsƒz€ˆƒx‚…‚ƒ€Šx{~ztn‡v~t}Œ…y“nz…ƒ‹w€zf‚r|ƒo„qxŠ|Š}zw…€‘wl‡y„{ƒuvx€•„v‰}yl~’{ˆy~mr€zƒ€t„y‹t‚z…~„Žx‰„…„}€€}}„……|w{~v{|z…v…qzw{v‚jvƒu|„wrwx}y€€‹‰‚rz‰|~}Šw|r†‹wŠ‚‚‚‰ˆ}ƒ‚Œˆ}€v‰…†uƒ„q‘}y}‚ˆ~~t{l‚‰‡n€|oŽq|{„‚|}yzzr…t€†„|‚‰yw|ˆ}’‹‹†ƒ{ƒx|Œz‡~|w~wnz~}w}~~{}€vzƒ‡t€tzŠŽƒŠ€}„‡zŠ}„}y~vpko€„|ƒ‡zy}h“|„ƒ’{zvon‡ƒ}{€r‹q|q{}ƒƒƒ•zuyu…Ž‚—n|yvx†‚w‚‰~Ž~tz€‰uƒzˆ€|~€ƒ}uˆ|t|„zƒtˆ…}‡‡}‘u“€ƒ~€~}ˆ~‚pw}{„x|ˆ†wwuu„†t„nr…‚{l}x†ˆwŠ{z’‡„ƒtŠ€qŽ|…~|ƒy|Ÿw|rxŽ}‚}ƒw‘g}~{‰Ž}|wsƒw‚‚p‚ƒvr~}xŒz„„Œs€v|{ˆ}Šuy~~v…e~{’‚”}xƒuŒ~t‘}‹{wƒu}™ŠŒ{|~…„sŽu…Š|†‚‚wl€x…~†y„o†ˆ‚„vwƒ‹mƒ~{ƒq†xŠ~p„wˆ…|„‡†zo{{‚}|ˆƒ‡ˆ„†|Šsx{Ž‡x‚…~Œzƒ€t‚z‚su~{€|yƒŒ‰„‹‡‹tyƒw€v{v|‚…“x~{‚vƒ•…Š{~}zˆ€sk|~€}†|vt€‚‚y€yx€•w€rƒˆ€‡ƒ‹‹z’s||}†z†xwm~‡…†€„}d„y|‰|ˆ}siŠ~€…zt†uƒz|…ƒ€n…vƒˆ~…„}†~~z}…u€‰‡tzƒ}|€‡}„~‹€~{|o‰„Š~}v‚~…ƒz…|{ƒ|Œ‚‚{„†ƒv‹p}‚|wzy‡{‚‚~……}}Ž„ƒ}†zˆu~uŽtƒ{{~‰z€s†z~‡z}ƒ~|x€}y~€p{z‡ƒ††}|~|‰Š‚v~v‚…n†|†‡xƒ}q‡t€ˆ{ƒ‡z‰~…z…ƒ†‰yŒˆ…s‡s„y„nw€‚€v†ˆlm~ˆ}qtƒ|uz€„‡‚Œrt‡t…tˆ…†~s‹w—€ƒ}s|{t†„ƒ†~„‚w†‚Œ†‰~‡{txruz‡n{qu‰Šƒ–|‚‚…‡†|’mƒ‚v‚‹x„xŠ‚~†z‚{|ƒ‡~~xƒz‡ƒp„ur‡y……‚xƒˆ†|…€‚‡|~p’‡{x‘zƒ‰{‚y€ƒyuyx…ƒƒxƒtwzy‚‹„‰{ˆŽyˆu~…„op…p„€…t„ˆnƒ…xƒt‡~wzyƒ}‚‡‹vp„~p‹s…‚~†~y‡}|ˆƒ€‰…w…v‚z„{~|ˆ€|†awxt†€sww}{~}…}•v’q„|}ƒn‰w‰n€zƒ‚vˆ}‡„}u€…€uƒo~‚z€zt‡|wz…€yƒ|‚„‚v{y{…†xˆ}nv|}‚ƒ{‚’}‰}ƒq~~z€yy{€‹…†|r~ƒ†~ƒ‰u…wv‚zuwv„~‰r€‚{…r‡yz‡w‚|y|z†ƒ{{u…t‚|{„||~oˆˆ}yomŠsˆ~}}ut‚ys‹Œ}yuŠ…}}ˆ„Œt•‡‚€„‚Žˆˆuy‚{‚‡‰~xwz}|y‡‡ƒ…€t||…ƒ†‹‚€ƒ~€o}v‚v…{y€ƒ€ƒ‚€ƒ}ƒyz‡‰x‹{‡z€‚z~‚{€~~n|}~†d{„y|~j€|wx—p‹zl€„€ƒ‡w{wˆw€v{x||{{…‰Œƒy€~ƒyw€…u}t|„y…}‹~}|uz…„ˆs‘†ƒzt{‰€„ƒ‹|€z}{‡ƒ~‚€‰mƒ~uŽ|‡uuu†€‚‡‡€ƒ€y}‚pm€~sˆ†s—Œu„o‚‹„{†jŒ†ˆ~}}~‚„|yx~u|{z‚swtƒ~„€xƒu†ˆ~ˆrsu‡€‰yˆ}€|y}z}zy…Š„|y…{Œ‚Š‚Œp„†zƒŒƒyu•~u†„„…x|jw†„}†uvŠxƒz„€}ƒ‰n‰kƒ~~‡}‡…rv|ƒƒ‚‚uwysrˆ{~‹{„†x…x|}zo‚…|}‚uy~w{…s‡~„„†r‚~}†ƒ…‰†€~{€qp~†€…€†ˆf{u…|x‰~Žsv|{‹x†{„zƒvˆ{t‰}y€my‚y€‹‹‹ƒŠ‡{ƒˆxzz‡{Œˆ|ƒ}†‚€†wr|z‡…„~~}|zƒ~~}w}„ƒƒˆ{Œ|zƒy|†z‚ƒqr‰…}~†n…uo‚x‰yˆ{{}t€|}xzŠ‹ƒk‰rp††vw‚l†~u‚†Š}ƒtŠ|uo}ƒˆ}t…|wwy}ƒŒ€ˆˆ…€ƒ‚l~zvy‰xˆs‚x€{~€o}z††‚z…v‚‰t~rx‚‡x}qƒ„zk|„xwz}‰{‹Œw…yx}Žro€w„}‚„†‡‚{q{†zz‡Š‚‡€‚}ypzxu€{w{“l„~ˆyƒr…}x™ˆ€’€y…iz„qƒp€}‰y†…z†rm}~|}{„wŸ††yƒ~~yvw“ƒ„ŒzŽ‡~†o‰f‘tƒ…{~€†‚‹o†€‹‰€ˆ›xƒ‡†ƒy…‚‡d{ƒ‹‹{‹r†z‡~zuˆ„t”zŒ†v}††€}y—hy‚~‚ˆŒrkvw~‹vƒŠx•{{yˆ‰‹„zy}œ‡|u…x}€Z||…o}zzŸ|vr}„{ˆ‡v†ne~€v†‚ŒŽ‰wˆhv…„o”yn†|yltz~ƒt|~q‚y‰jtz‹‚„…yz‹„{x‡‡k†‚ƒ‡~|}…}„†‡Œ„‹v~ƒ„…ƒ~”‚t~s}„‡sx{st‚|†‡n‡ŠŒ~x‰~”}kwseˆ~¢tsq†{c‘…{tpŒ}x‰we…~ˆ†€‰ƒ•…w|~{€x„‘‡s}p}€{x„}€}‚€„rv…~‹…y‚xˆ€w‘f†‹…x‚vu‰wx††|€vr–…†|wy€‡‹}†v~vvvmh‡ƒ€‹{r‚†Žn…w‹y~s˜Š‘Žˆ’Šzvrrztexˆ}j‡€›z}Œƒnwz‚ts}|zv‰}m†mˆŽ‰wz€‰…š‰m†zŒv~‰‡’‡‹‹Œx†€„‰Z‹}‚…‚’‰‰…w|‘†ƒz€Žnut‡{|jƒwvwv‡ŠŠˆ†“v‡ƒ˜x…~rg}uŠj~~yoƒz_{v{w€‹x—}rruf|ƒw}‚Œƒvkkyƒy|ƒ’x€¢€jŠl‹…€kŒ~…x‡ƒ˜v‡n„w}‡ˆ‚e’†yvx‚ƒ–f…h‰n€}y†m“~|wwyŽ{{w…}q|ˆ‡ŠtŠv|‘u€Š|}ˆjy†€ƒ}€ysg„z“€w{‚‡p‚}’wƒ€‚‚Œ…€rgt…’‹‰|z†“y—{o†ƒ…{w‹‹ˆ”zr€€|€{wf‘‚ƒ„vƒ{†si„vˆz‡wa}n|{{‡z‡†€Šuvzƒ€„nnƒ‘uƒz{ƒ†m€qiƒˆ‰…ƒ{{ˆvˆzxŒw}qwvŠ‘m‰}zx‡v…‹|”szŒ…p†{™‘w„…€{‹m‚›j‡€€‰t|€{q™{tkƒŠyu¡‚ŒŽ~‡Šnu~€Œ™|yx{‰~z|ut‹‡v~€y|{ƒsˆo€||vˆp‚yzz€€sur{ƒtsw‚xz|s…z|zm•Œ‚‹umq€ˆ‚ŠŠ€……zƒdmsxz‚~l€Œybƒn…ky’rŠ€ˆ‹o‚‹…‹‹}{‹f}z‚‚|~€}o†||z‰„ƒ‚j•ƒ‚€w|vŠ„’‡|s~~}lˆ€{}xo‡~g~{†ˆ~z}m‚t€…y{†…t„p”z}k‚}r‡”wylŠ|x}swv{’uŠov‚~nuxŠzŽf}}wwu}…œi—yŽ€}‘‚|šr~|Š{xƒu|{wu‰}Švxg€Š€~w„|m™~~’‡„€qˆ‹€~„wp{|—„s†|†€‰z‹~nxv‡ƒ}w„z—{lp}uq€„€ŠozŠzfˆž˜€}Œryw{–}ˆ‡o…|z}v‘x“vxvƒƒ~wy‚r›{‹{~Ž{‰ƒzz~ƒ‡}}‘vxˆsŠ|xw‚qr„|”s{{lq|z{ˆ‚…y”„”Šu}}yy•z{gˆ{{Ž…yŠ{oxy~„mzluƒq€vw‚„}ƒ“~€‚{’ˆ…‡{}{†tm…}t~†w~y{q|……~‡z‹|‹ƒƒzxv‚x†Œ€ƒ{~z~rz|„€ˆvˆrƒxx‡|}„{†u‚…ƒ|ƒyyy‹{x{€ƒx„‚€‰†r{†oyxz€„z~…sŒxx~†zv„v„€j„‚„‚y‡‡„q}z}€€‚|zv}|{~zz‡{‚xrƒv}}w€‡†}x‡|‚}…uu}y}‚t||ztx|v‚†‡…‚yŠŽ…~~~ˆsrvŽ}Š„„xƒsy~‚q}Šˆ}u„yo•{‡„r…oo~•|†}n€„†tˆy|…€|lx‰‚…xy‰nxyso…v}wŠ‚‹rx}ƒ€}vxm‚}‚~}z€~{€}|vz€‚s„{Žƒ‡}‡†}‡ƒu…w‹‡|y‡yw{ˆ„|„‡x†y‰€†‰~||~€}Š}ƒ„‡zŒuwz‚s‡{}{€‡ˆwy‡„†‚iq|‚Ž„„e†ˆq…zz„„}‹‰s|ir…ˆ„|x„nƒ|z‡†||vŒ‡y‡}Šƒs|}vƒ†‚‡Š‚‹„z{~rˆŽ„†~‡y„kz‡ƒ|~}t‚|…|z‡ƒ†•v‚}Šy…l~–z‰Œ€Œy‚‚~Ž€†zˆsp|Šw•|u†ƒ{mypq€|‚‚zˆ}u{ƒq‚Œ…~‘{pznw„}Š’{yzz‹uut‰|†y‰zp†{|„~€€|u‚†ƒzˆ„wx„x†~xƒ†r‰y…g…h‡}ˆwp…Ž}“ƒw…c€‹ˆ}x|Š’…‡jj~{…‹z„{|‹x‚‚Žv‡zvs‚‡~~{†v~‚k‰~…}{~‚‚y„†€wrŠ}†t{y‰~|„x}„„€„|‚ƒ|~~€v}„€ƒx~‡‡’†€†}ƒ}‚v}€ƒq}’}{t}‚|†xsp~ƒ}yy{n€n†„‚…x‰ve†~€y€~‚yf‡„x‹‚„ƒsp‚}‡z~†ƒ†Ž}~t‹ˆ…||†xxƒ{„ˆw†{w…‚|ƒ…y‚€{Š€l}‚‹|‚ˆsw„u…~ˆ„’t‰~Š€†~‚“‚…„z|}ƒ„‘Šƒ†xƒv†|ƒ…„Ž}wuŠ~‹wntwuxvvs€††|€Šƒ~ytrˆ€y~‹…‚€o}‚t…}u„wzŽ‹‚ƒxu‡„‡’†€„€~~ƒ}„x…~„„v†y‡}}‹††{zo‡q€ƒ†ƒ†‚ƒ{Ž‰{~Žrˆ~z|ly}†xŠ{Š†b„xz†‚’‹v†lyƒˆ‹‹w’qs€x…‰‚‡{~d‡€‚~y‡rŽ…v}swy€x‹x„qwv{‚†|‹v~ŒŒ‚†wt‰{„y‰}y…sw‡‚v…ƒ†y{t†j~…„‰|‡Œƒ}yt†}‡~‰l||‚}Œ‡{z‚u„q}†ˆƒc€qy‚{…x†xz€ˆŒ’‰|}‚|r{yy~g…y{€mz{v‘yw~ƒ}~–s‡”ƒ}‰zyxkŽu||‚|vv„Œ„z‰w€v„w†}~€{‡uxƒ‚„y†ƒ‚{ŠŒ‡ˆ{“{s€‚x†ˆ~Šznyy‡}~€y~xywˆ~vy‹qy|}y~y}ƒpy‡xu†y†Šs}t‚m„Œz„zztwzˆ•x{k€ƒ|~n~x‡qxƒy~|o„l~‹…ˆ…vƒw{‰†ƒ†‚ƒ}‡ˆ{‡{…zƒx~ƒ…v€|‚wŠ|…{Œv{{‹„†{tuf‡{„{‹‚zlŠx„‡ys„vŒ’pŽv‰wyx~‚Žh|…€n‡y‹†–|{‡{tom~v|y„w‡„j†m~ƒ†z}zn„y„p~ƒ„z„€ƒ‹||y‚txz}…|u~}ˆ}„|‡r~vzrƒ~ƒv„Žws}€w€€……ˆ„uŠw‚x{~ƒt‹~}„|’tk‚€{†ƒŒ‡y‰z…ƒ}„„€„ˆ{{~y~ƒzv“„u…qx“ywŠ“‰u†ˆv…}g}w{ƒ‹‚v‰ƒ†v„‡‡‚~eŠsz…{…Š…uŒyƒ}}‰~~Žx‹|vx†……‚‹}—}u}z~w‚Šƒ‰{{|l†~ˆq‹py~ƒ{~ˆn„p}€{v‚t‹Œq~y‚rj|q“ysƒ}‚„‚†~†€}p‹t†{|Œ|qr|uƒ}}~w‹{ƒyˆ€„†q…my‡w|~‹†ytmxuƒrƒƒ‰{szz{…y‡†”‹~„{†{€„Šuxuy|}~€€zx……u‚~‡~€ŠwŽ€vz~|q{ˆ{Œ}}xzƒ‡ƒ{‡l}‚€‚~x‡ˆ{z}y~†…y}vƒ}‚~v‰}œ|ƒ{v‚wgu‡y{{z‰†•‚yx{w‡€ywuyw|zt}u„„y€y|~r‰…„t~y€„ƒ…~…€|‹|wˆƒ~‰~~„†s€}„zŒtzyƒu~yu~|qu„u„zzpƒz|q€zz„„|}†z‡{‡~{‚w}ƒ‚}ƒ~}ƒ†w~„€ƒˆ€Št}y†ƒ}|y€ˆtˆz|Œz{vy„b€‰}z€wwˆŠ{†}u‡{‡{„~~‰{‚†syƒ‡{x|}„iz{t†…}ƒ|y–yˆ~|ˆ…‚†mxz†Š~{†„€‰k‚‡vuwqˆw‰t‚‚ƒx‡~‡|~q‰}‚„…“yz{y€†ˆ…}†uy„tqŽ‚ƒ…xw„Œz‹v…‹‡p„u™{ƒˆ}†z|ex|ƒ|s‰€†hgz‹„z‹i{‡‚~u†ˆ{ˆ„u„wsxz™…Œymzy}wˆ†‚ƒwiup|‡}{|ww…y„}z‰‡€ut‚}†}”„‰Šz}x…”…‡…u€„{€{yŠ•†wƒx…‹‚…z„n•nŒ‹|~ƒkw†‡‹ˆ‚~‚u„Žz€uˆŠ€‚t‚„…–…zq„‚„‚Œuo‡r|}vŒy‰ˆwv~~}nv€h‚xr‰|{…‚€ˆ~p…{z}€||€‡Ž}‚†€‚t…‚€€{}‚„x†~{yŽ…|u…}‰|€z„†}…ƒyx{€‚lx‰p{r‡ƒ€zwt–Ž}Šw{ƒ~z…hl…z‡|z‹Ž„–†€{}…wy‚v…€w~‘rk~yƒ}~xˆ‚{t…z‚‹{€ƒu…}rty{‡}}ƒ}z†u}†wy…~€†‡}‡~zŽ†rŠ„xƒzzpƒ|‚z„wƒqnŠ‰†|…y”~{{|sŽ‹wx„vpœ€y‹i‹ŽyxŠ|‰“…uz‹~}qŒ‡mƒƒˆ€yr‚nƒut‚xˆ‚|}ˆ‚ˆ|}Šsƒy~{}wxz}‚~„€‡…‰‰|~†w€rq~s€€}y{…zqu}w~Œt|~{|†n‚}|„s„†z›|u…€‚q…v‘s‚‡|…„€‹zl„tƒ‚w~sx‰yŒo~†…uw~v‚„|x†€~‰ˆ‚„}wˆx„~€Š{€†Žƒww‚€tysst‰z…vy€v~ƒ‹…t‚|s‘vuvy|‡|pƒ€z™~rƒƒ‰xŽi~}~y~z€|‚“p}tw‰vy’‰Š~zzvuŒrƒ‰†xƒ{‹ty|€Š}Žwzˆz{~z~‹u|x{‡}v„ˆ~„s{ƒ„Šw‚yƒ|€z˜u~{‹}Šo„~x…m|r{…ˆ€‡zzw{nh~v‡„„z‚|˜{zˆƒƒw‹|‚†t†ƒ~}}…~w…€ƒ……|y€…Œ{†vz{…€xƒ‡~w‡†‚ƒ|yrpƒk…€†‡‡wt‹|uŠl‹†„yvyl{ƒ{ƒ|qxt~lŠ†v……j‹zŠ‡–‚ƒw|qw‚tˆ}‡„{nƒvwŽˆ{„‚‰u‚‡vyŒ…‘…x|†s‚z„„z‡xˆ†‹„€‚ƒx€~ƒ‹ˆ€s|p‚vƒ}zŒ‰ˆ‰‚rxuuƒƒq€~~|ƒ…tŒ…vk‰y‡‚n…ps‚ŠŠ…w}„Œn{ŠvŒ}„r{‚Š{jy~Šn†~€tyw|zƒzzuƒ‡y|‡…|}ƒ…v‚†ƒ…y€}…~~zv|ƒ‹}‚}‹{’}„{…‰qx‹cŒ…‚†ˆyŒˆze’pxr€onlŽ‹„~Š‚Œ|“‡|†~Šot„|†sxyvˆv{’r~ˆs‚|}|‡}ƒƒt„xŠ‚x{Šˆ{‚ny|…t€€„†}ut†uzz|„}wp{‚|„€‰o„€u‡€Žvf~j|}|‰~}unzt‚yƒ†‰{}sdzˆv~pv~€|”Šw}…ƒzŠh‹„…s|xƒŽs|{…†‹sˆ”{…v„z{€w{‡|„~yux‚vˆ…{……m{su†‚~‰wƒŠq’€††vz|‰yste‚€€‰ƒvlvp}‹z„ƒ€{y~€‹ƒƒ||nv~q„ŒŠ„„yzƒ…sŒƒ~sŒ‰|€…ˆt€xyx{zƒ~zƒ‡l‚y}‚v…‹‚…|‚uƒ€‡‚ˆ€€€f~xƒ‚Šƒ†ow~|}~‚{‰ƒ‡p‚oˆ‚Œ{…†~g“~~}€ƒx‚ˆ‹‘z{€…„wxœs‚oy{ˆ~‹w{zp{ƒŠ…y{Œx||‚Œ‡€v€uyz„Š‹}|Žt…Œƒ|‡’~r…rˆ‹w€zplhˆ‰€‰vŒ|p„u}ˆ}y|‚x„‘Š~yƒ‡Šl‰€‡xuƒƒu}‰†{o|x€}}ˆ†ˆ‡††Š€u‰‡ƒ‡Œ}€yuƒ}~|‚wyxyv€}€z„pŠsˆ{†~tu‡m•~‡Šˆ‡pnpnŠŽ€ˆr†xˆpynv€‚}†s€v}b}}‰s|†„„‘|z€y‹w‚}¡{‡pt~rxxv„Œv€‡ˆ}z‹€}‚o‡p}k~~z†‚{Œ€…‹pz|ux‹ƒz{{}~v|Œ€‚ƒz…}qs„pƒ{w{yvŽ‚}‚ƒmvx~rŠ„}zˆt†ˆft„€Œ‹y…r™‡‚€‰v†|x|‚}m|x{x‚q{Œ‚}ƒ„ŠŠq~ql}‡|xw~Š}l€}}†…|„t‹{……~n…„w‡†}~vwxu…€€{{x~p‡w}}{w‹ƒw„{e~Š†v‚qxƒy|{ƒ„‰~r‘‹~ˆzo}„˜{„i„~ƒ~ud‚‡p‹n€}}}{u}„…„m…}‹ˆy†€w‚‡~‚†‚}}Š|ƒz‚‚…}‚‰‚u‚twzŠƒ€‰x€…‰Œ…„xwtƒ~„‚vzypˆ}qƒ†ˆ‡Š~ƒ~}wŽy|zrŠ„‚~Žwˆzƒ€x†yŒ}‹‚}‡‚†Œ‚wŠzz…~„‚lm‚x‰~{ƒr}ƒˆo|ƒ†yzxoƒ}|wy~‹x“…v‡ox…ƒŠ‰‚Žz€„{‰~‰~ywvŒy€~‘~’ƒ~‘yr†p…vzx~‡†’u„l„‚‚ˆuu}€Žl~„‰‹‡xv~ˆtˆ†€ƒ„ytttƒ}€{x{s‚rrz‰}~…}„xvˆ†ou}s~|~…„‚}~ƒzvƒ~y”r‚‚ƒ|Šv‚}‚…~~†y„‚‹~y|z~xy‡juywy}…u…b…zzyl‚{{Œ†ƒpƒtƒƒŽp…‚ls}w}Œ~y‡t‡ƒq„ƒ€}‚Œˆ{…~|{‚‰r–vˆ†‰…ƒs‚y€€†‚‡{‰|€ˆŒ††yxs|yz„u…‰„œx~~}z€…z|“„†~y}}‹€€€xŠw}‘|ƒŒ‚†~}|€‡x‰t€‰vs‚~}|‚ƒ€}x‚~…Š‰ƒ{}ƒ}{s‰‘rl‰u‡€…uƒ{xiˆ€~ƒy‰€ooyŽ€ƒ†ƒyƒwŒ€y€~”zx–~‡|‡z‚t‚’‹‡€pzxy~‘~ƒk€zƒ~{{ˆŠ€|{v|x{ƒt…}s|ukƒ{”ƒ†€wwŠ|ƒ‹}ˆ‰€tyx‰zˆ‡€{ƒƒ{†wq‰|ƒ}r„z„‡‡„sv†w€ƒ…€ƒmtynŒz~…{†v}†wsx||€z‡’w…w†yƒ|ƒ|‡m„Š€{zs„{†h}|txz|……ˆ…|€{€‡yy}€„zv„pƒŠ|†…myr‹ˆ{‰vˆˆ‚ƒ€€xˆ}q…„‚{}†ov}‡u„†}”†x‰x~„€~yxx{su{‚mŽƒ…‚–€‚~‚i}pt‡vt|n{xƒzƒzƒxn{wˆz}‚‹{wˆzŠ€ƒt…‚}w‘w„‰s€‰ƒy~x‹s~‡wƒ‡‚}ˆum‚wzƒv~tˆ{r~uƒ‡Ž€q‡qtzvˆs……„nz†vlxtƒŠwˆ…|‚~‡qx‘‚~„}yuy{yn{Œ„y‰}zw€}w„…z‘zŠ†€q…}€„|{‡|………‡ƒw~v€‹ƒuŒu†”ƒ‹€~‡zw‡ˆtt~Šƒu”‚ˆst…yz~l|Š„|…|}y€vxy|…kŠ€ƒ‚uww€‡Œ}y‚l†Œƒ€~yƒ|€|||Š}tnqy|ˆ~‚o~‰~‚{{‰‰‡|xwƒ|‚|†šm…zxƒyywm‘†‰|w‚„‹xu|€€t}‚—|r}uxw‡~Ž†…‡|z}z‹…‹’‹ts}‚‹€–zz~{z’€‹‡…zy}ƒ}†ˆŠ‹€{yˆ‚y…w|‡|nr~yŠ}}Žy|„vy~uw~„{‚†kŽy„~xx‰v|~‡‡vˆx}‰†{–upƒ}~†~{„y{y€{Œ}uŠp€w}u€n}‚{†‰}wŠŠ~p‡|€u‹ƒ†~{„€†||Œv“y}xy{q‰~|†zz|~‰lyzq‰†„ƒƒ†Šxˆ‘|„‰‰•–{{€u…~w˜€y…yƒƒ{~„Ž†~‚|zŒvz‹uƒ~€}‡~…€€|~ƒuˆ‡q–woy‚ƒ€z{€y|p|‹y‚}p}}‚xz€{†z„z‰{|…r{‚Šˆz€‡yƒƒƒ|w€‚€†‚xˆz„„w‚ƒ‹za†|Šƒƒ‹z‰„w€|{ŽŒ€uv†s‡n“~~||ƒpy€}ˆtƒ€{„ŒƒŒƒ~ƒˆvŠ}y‹ƒ†|—|‹l}xv”‚tƒzrzp†u‘y…snq‚t|Šx‚Šm‡€qƒ{‰|}„}rŽ‹‘y„…‡jŒ}vyp~‹ƒ{‚Ž|ƒgvƒ|‡ƒ€tˆ|nw‚ˆzjuwq‡}zˆˆ|Švsv„ˆnƒƒm€{x||wƒ‡‚}u|w}‰l‹„‚|„}|ƒ•{Šyuy„pzŽz}ˆyop‹‚‡ƒ}{zx†iw‰d‹…~z…}suqz“…ws„qŒqq‚|ƒŒsƒk‚„‡Š†„|y‰‚vxvw‚’€‰‹wx|}ˆ‚x…t~†|f‚„Œxƒ€{w†“yˆ{•€}„’‰Œ{m†mt‚‘i‰„xsk„vttŠ†n‡‹z~in‡‚€wqmv„ƒƒŒŒvƒ…q}yux|€y€w{ˆ}‡{|„{„‚”v‚zi‡~ˆx‘‹r~ŽŒ†‡dt‡zˆ†~…ƒwuuri†u}…r~k|€wus~†…€ƒƒy~}r‘€‡~ƒ‰}ˆ}{z~€€ztz„~†}€{‚‡z}„~ŒŠzuwuƒ†~‰y‚~‹‹ˆŒ{‚Œy‡€|z{ƒx‰p}~Š‹‚t|~‡„~~ˆ„‹„y†ƒ”†w|„…x€s€…ˆxwvŒw~‰m‚‹…{€t€oˆ‡ˆ„{}{{pŽt†Šsxƒy‚{}„z‰ƒn„zxy~€†r•z……q}ƒyrpˆxzs|~}j}y‡€~s|’ƒ…}€|†‡‡„p‹oŠ„y~x€y€†{}|zw‹y†…yŠvwŽ}‚‡t{vr~~€††ypx}‡€yƒ{‡€†~z„|~€ƒ‚~}‚~zˆƒvŒs{€ƒ…†’ˆ{…{x†ym|ˆy~†q}vy‚zzw…Œ…f…~‚{Œ€‡Š‘}€…„„msz…{‚~yƒt‰zƒƒ‚ƒ‰y‚ˆxyŒx€w‡€†}yt{‚‡zƒyƒ„}|z|€{f}s‰‰€€‹y„‰w}|…||l|{|z‚‚oƒryˆwwvˆwx{t„}„|‚~‡oxƒxw{Œyƒ{|yƒ~‚Šy€ŽŠu‚{•†x†t|Œ†|p~qz‚‡€~€z‰—‚„‰s|yp†‰…{‚„†‚ˆp}…„~‚vy‰ˆ}€Žw‹|~x‡ƒzx‚‚zŽ}‚vq†‚z†p†}v„‘z}}‚‹w„}px‚w|‹‹s„lwˆ|w€}‚ˆh„t{‹|‡pƒpŽ|„‚„~„t€yv†ƒzzp„ŠxŒƒtzwwz€„…tzxv‚Œ€z{tv‰wˆ}’€}„uxƒ€€†‰„}xn}qwyx†sƒx€„w|†z‰||}q|€……‡‚ƒrwyxzz€~„Ž‚|~Œ{†m…’€†wyxy|„ƒ™z€z~„{~‹nƒ…~xu€yƒyp‚„‰s~ƒs”xyz{‚„vz„xnŽ€zƒn|}|…ƒnwpu‡rv…„ƒpnv‡zƒƒuyŽƒv…qŽy|‰…ƒzyz…€…z€t{}{„yƒ€…‡zx~~w…}x›xu„ˆ…uw“„‚ˆ|†„‹|Œ‚‹|ƒ„„}€{Œzwxƒƒ„zj}Œz€‚{|ˆŒ{‚y€}{†rƒ…}‰†r„x‰‰Š‚…~„‚‚xyƒ|‰y€€yŠƒz€~…€y|„y‡€€‚Œ…‚…{Š}}†vv|~Œ„„‚€s‡t‰|{‡†„ŒzŽiy‡~~„Šmƒ†s„†|~zr“v~ts‡‡yƒ‹~|sˆ†y‚…qƒphˆ€|‡zŒ~yu}~}tu…„Žz……‹wt~‚†‚{w~‹|„{zƒw}yƒn}z€~|uw…ˆo€qz……~€‹ƒ€oyz‡zx‘‡ƒ„~„ypxu}…w„€~}……‚~l„zw‡‚’†ƒ|~“u†v‚{}}‡jƒ‚„‚|‚vo†ŠŠ{{ˆ€o€ƒ‚x}|z„~‰{{Š|–€{{|™‡{€x‡ƒz…„ˆxyƒq~‚‰z………u~„v‚‡„†|{„ƒpx€wŽŠ}ˆzˆ…yw‹sƒw{Š„…€skzt‚ˆƒƒ€o…–x€z‰‰p€Œ‰u‹vw…ˆ‚u}‚€w}~ŒqŠx~|’…†‡ƒ~€vz‚€}€vx„ˆ…“{‹s€‚x|†ƒ‹{€zŽ~……„y}z}Šoz‰x{}y„p}|}vvz}†l|}„‚xu€~|x†‰z~ˆ€‰‹’|y~|€†z€u’|z|||vŒ†x|w€„|{uyus{~‡…yz‰vƒw~„†ˆ…‚Š…w‚‡„ƒ{~€{…‡€{‚ƒ|}€xx|„€|ŠŒ„€u„‚…‚……ˆ…}~„‡ƒ}–{€z|vw‡br€m‡|w‡|p…x{~uŠ…‡x“y„†v‚Œ‘l{‚‚ƒsƒ…y€xŒ€Œv…sˆ„|y€r}sŠ………y€‡€€zŠ}…}vzvˆŽ~†szƒ€‡Œz}rvx€}„{w‹v|ƒuy†–…‚t{~uˆ„„…}†}Œƒ€˜~‹‡u‚‚…s‡†ˆ|y€{szz•ƒŠ}rƒs…p{p†€qktƒˆv‚ƒto€u~ƒuxj{xˆh‰‡~ƒ}’u†qƒ†‡€†v††‡}…{Šƒ~†‚‡yy~y‹‡†y}uw€w}~‡Š‹{x€‹€•„|yx‚{~‚‡…‹‰vu‚z|s}”„‚tv€kw„†{ƒz~€tƒ‰y~rx„xƒw‡€ƒƒ|Šz{zˆ~‰‡ƒx€wƒ‚{€r„ˆ{ƒ††w‚ƒy}~„x‚x€zƒ€}†‚€}}p…z†}Ž€‚ztxƒz€„sz{‰x€…q{‚u‰ƒ|€†}{{†„ƒ€}‘‡„rt„~z„}…Š„t‚|‚~z‚‚xƒˆ}‹€w‚…ƒ|†o}z†uzŠw„l{‚sy‚y€€{~}s†€…‚|z{‚~…ƒ{r|~~o||zˆyƒ€Š‡€ˆs‡~z~{~‚€€{…z‹}€zr|€„‡~€xˆz…v~€ˆ|€zŠz‚ƒz||}‚z|ƒ{€{}|u„…~|z~€…ƒ…{€ƒuŒu}}~}‚~††‰„z‚}‚‹~~~„|~ˆy‚|p||t€wz††…„‚}{|}}†‰ƒ€‡{uz…~‡€w~q„{yˆ†€xvsz{ˆƒuŠ‚ˆ{Œ‚…~‚vwsr€yzŽƒˆyx€zƒƒv~y}t‰|}}ˆo“v‡{ww{~{‹zy„nƒz„…‹€„‚u‚‹t~uƒ}€yŽh“ƒ…‹{‰ˆv€„–†„yŠtˆx…ˆ‡y…†n…wŒv{Œ€wŠw}ƒ~‹‡{yŠzv{~„€‰vŠ~‚‹rnƒs|ƒwo€zƒƒ†u‡v„€~……w~r}†|z€}zr„{€„ƒy„{‡„}{…ˆ‡yxƒ„Šn†„}ƒƒyyxŽ~Ž~‚yx|zŽ}~Œ„wp}}}„‚€‚r~|ƒƒ~z}„zˆƒƒ„z„zŽ…‚…ŠŠˆ‰ztyv‡€|‚uv‰v‰~}}ƒ~Ž‚ˆv’~„q}„szz~…‡†yŒ„ˆ‰~}}x‰Œ|”p…€€u{~z†y}r€€~}}wz‚}zƒ‚z…nz„}zx{ˆ€‡‡€~ƒ{uzzsŒ}‰~qƒx†…q~uz†zw~ys}xw‰|€†‡‚z€x“‹~}ƒ{‘…™|Œ|w‚x}ƒŠ|€ˆuw~y~yoz~†sz~t{}p†€~xp†s‰ƒ‹ƒ‰‚—…|{™‰…}t~}u}h‰s‰€‚k‰wŒ|‹g…|}‡‚‰o|yv‡|…xjv{|lˆiv‡ŒŠŠŠynwn““†…|‚…pwzq‚{‹€|jšo€}‹z‚‡‰ldsdq~s‹}{‹šˆ…ey–v„ˆ„—wu{Š€„pxy€x‡u„u–„t†u†y{ˆˆwztv…}†||Š—ˆ|€xu…tx‚‚u“{|…€‡tŠ~ˆƒ†‚‡woz}ˆ‚~y}\€†‰ypvrt…€‹‚|†z~‘ƒrv}„†[y‡v|Š{oap|y…€|s|p—€„ƒxq‚}€l‡l~Žk|‡ŒŠi‚~|}€}„y™’k~ŠŽƒy{€ˆ}‚t€}†‰y‚rtŠt‹z€ŽƒnŠ{†ƒyƒo€~}€|qvv‚ƒ€‹‰w}„{|s|s‚Š‡{•‹w|z‚…}‚ŠŽŒˆ†z‚Ž~†‰n”r‚sƒ}‹xt‡cƒx„u‚‚ƒ“¤’‹{{†~‰{v–y…‡ztƒw|w†ƒ|xƒ…~u\€…„‚~†ƒ“…ƒ}…€‘‡gt…o‹mr~ˆsvt‡‰“|ttŠˆŠŠ‡xŠz‚yŽpŠhƒ~ŒqˆrŒx‚yvm‰‚„‘s{~ˆo‡„cŠx‡|z„‰„Žƒzts|‰†€‚„}p~ˆ„—€‡Œ‰…€yyjvy„u|y‡inxr}€wƒŒƒƒpr|{‰}u‡}}}wu‡‰y|~u•…„y€Š…zˆ|x‡t†‡‚“Žxl…rn„z“ƒ‘w‚{l{{‚svŒ‚x‹ƒrlpf’€}v„†™‡zŒu†x€y‚]~}xŒƒŠ|v‘—‹‡z€ŽƒŽ†c“aw€~†~}’}|{ƒftƒyƒ‡|x„—‚lƒhw€€„u}z|˜Š‚‰|‡t‡zƒ‚}tƒ‡“‚y—}ƒ‚‰‡|u{|~z~x{f„n€‚‡…~}Ž”€†‡†u}€†Œ\xvg‚pyp’|nzc†‰~x~n‡”{Ÿƒ}‚Š~{¤„‡…{ƒ‡„y~Ž™„{u|nq}’{‚vv~Œk|‰™…†|‚y†…v„Š”yt…xˆ~ˆzu„‰l‰x‡‹l“ƒ€‹€y‡„r„s{›}‚kvy‰|z’l…zƒw‚o~tƒpz„sŠŒx‡km‚w}w|‡€…q‚…v€||ˆj˜{x†zwx}y‰Ÿ”…vƒp…}ƒt’s~†|{‘{|‡•ˆ†wzsu‹~•‰„ƒ}xy}tq~˜tw|w~uŒi|”~‘‰pƒ€ˆk…Š‰‰€„˜•|–šxj€p‚……Šyfv}‚}†x™€„w€v„p|n{xx…ˆ†‚~‰Š‚}Œ}Œ{{w~zƒƒ}Ž|t‡y…~š†wy…~~š€ujw‰v‘‘€|†‘vh|ƒ’„s}Vvx‰†…‚‹‚|}|zt”ƒ‹†w|{…ƒ|~~x‡xƒ‚y|z‚xzƒ|„oƒwŠ…x{~xƒy„ˆ~ˆ„{……zˆ‰x‡m}{€v~u…{m‹t‚zd‡‡w€q‰}vi‹|„–zŒ„†zyqy›‚……}€…Š†€Š{„x†„vy|{|}‡Œzxvƒsv€xƒˆ{€t‚’€†Š{|€uyz€}~€‰wˆ|z|„Š‚|~|yƒxƒ„v}ƒ„†„|wy~„~†{€†‹zŠ}xŽ‚ƒ‡zjjp“xr€‰nŒ}€†ƒ€z‹„{ym€z‡ƒ‚ˆ~k€‚z†’‚†xr€x~€„{†zqv{v‡Šzˆ†p…ƒ}…‚{ƒ…‰|y}€uy‰|wƒ|‰Šy†{…{‹‘w†u}‘€u‰yz|i~Žy‹‚‘~sŠp}rwq„~ƒˆpo‡{•q|…ƒ‹k|w…—ƒ{‚yp{}}sv‡ƒ‰o‚u‹‹x…~rxv†{‚}tƒ{‡ƒ}„ƒ€€‚‚…‰y~„…y{}w„z|Š…€th†…€{u~|„tˆwx„‹{qf†˜†~ƒƒ|‚‰€€vh†„|†{s{v™vy‚|}xsŒ}Œ~ˆ‘‰ˆŒ„~}…‚f…ŒŒ‚‚€ƒ˜|‚tŒzˆ„|}~xˆ‰|‹y‚†y‚u‹yŒ‚…p|zƒ{{|x…Šzƒyz„€t}„v‚~qƒ~„zynz|‚|s‰x€tŒt}…p{w}Šk||ƒˆs{v|j„o€ƒ…„“vv}s}‡Š…k}h€u}|‡‘jtx„„ƒyv‹…~Œ‰zy‡€|nz{†lˆŒp{‚~}{x{†t{‡t|ˆ€†~…{x}{…v~v†xw…o€{z€„{€‰Špo‡t’€y‚ƒˆ‹l}j|Š‚{…Š…€]~}„ˆxt†‘qyyw€‚€u†~†…{{‰Šv†lƒ‰‰~gŽwzu…ˆŠt†tˆxq…oszyqƒ||ƒw’w}sw|}ƒ~€‡y~~t}”wy}„„‚|„€{z}‰ƒu€€‡y…}ƒ‚Œ†‚…~~Œnƒly|‡‡„ƒ†t{ƒz‚€ƒ}pt{ˆ‰€ƒ{kƒxw…ƒ†€sw€~‚x†q‡‰‚rv†~ž‹}…r|„~†Žy€‰€k…q{s|…v„uƒ‚zŠo~ƒwƒxp~„„‡st†ozt~…‘„‰~}zn†z‚„…†‚}ƒz€‚„‡sl}‚yvŽ}|‚‘‚ƒ}sxvm‹Ž€‚q€}…~€}†‡™‡†s…ƒhw~Ÿ{yŽ~„‰–wts€}‰ˆŠ‹€ƒ|„l†„„–„ƒv‰v}„u~Œv„“{|s|u†stuq„|‚|v€yw„}…‚|ˆyxv{ƒuy‚€‚‡}€|€Ž{€‚yyy}Œt†q}‚wz€|‚z‰ƒ‚}|uŠ€~v{s€”‡Œzzƒo‚‚ŽŒƒ}|…~ˆ|”mt„pˆmv—u„…}}ˆŽv~r‡ƒ‚|Š’†‡‡x‚€~……€zp~x…s{vw{y†|„{ws~{…{ˆ‡ƒ~{t‹„„||{€tŠ€z}x‚l|wz‡{†x~€lx|†|‚z‚‚w€wz|„xtw‚h€v}†Œ€{{„|x€}}xˆŒŠ„‘|}uŒ~t•ƒ‚w†Š‹s‡}€‡~ˆ†x}x…~xt††wƒxxˆxxŠw‰„y~v{„‚{z‚{Š€{ƒsz‚ƒls„€„y€wƒr‚y{ŠŠl‰}o‡{}‡zxˆz{˜yŠ…u‡…g†}„y‹‚v‹p}ˆvƒ„~‚~Œm}u}u†~|„tw‰oŠ†}~Ž}‚†‚y|…v„‚}~wz„{‚{‡Šzx{††„xu…y††t{ƒ‹„{„~Šu{‚|†€€~‡|{pozt€~|‚yxu„„z†‰t‡‘}ƒ„€‰€ˆ…€–yŽwv|‰€t‚s|ƒ‰vu€wkp‚u‡yzˆyuuv…~}rw‰m„y{‚‹}z‰z}w|‚}}xy€‰‰uŠv†€~‡v}Š{ƒuƒ||…‚„€Ž€‹ys…vrv}‘ƒq~~€‚o…yŒt}rn|Œ‰—Œ…yw…Œ‰nšƒ|†|gzvuv–‚„Š‡y‡mz}„x}}p~ƒl’‰{yustzƒt†y~x}t‚r‚~s‰€Šzq€x†ƒ‰„{yrz}h‰…‚{|uƒwqxŽ‹{…m~€‚•„…†ypz†xx{zŒŠ€ˆ†}Š€Œ€†’ƒ’„z}}Œ‹…Š}|…‰|Šw’vx~€}‡vx€qd……{}€}ˆ”…‡‚}ƒ{‡m~†}†‘yz‡|›|w~u€‰}z„gˆ|…wƒt~†|†‚‚~†€ƒ„|†„‡ux~‚}ƒ”y~‡ˆ‡‰‚wxr‰v‡kŽ‰w‹€y…vw~zyn‰‚o~{{†˜ƒŠ|‡~Š‹r„ƒ||Š~€‰}vu~€}y‚ˆvˆ€~‡w{ˆzƒ|……z‡ƒx}„…~|‡xˆ€…z…~~„tsr|‰}{|‰‡‘|~„…y‹qƒ‚Š…|ƒ‚ƒstkŠx€~ˆ‡|Œj{‹|†Š‚•‡y‡~|‹|„}’mŠz|‡‡ƒ~ˆƒ|†z‹„{{‚‡}‡†€vxw|ƒxŠ{„„‚…‚zyq˜z‚…{‡{~†„ƒ~‰Œ}|xokxƒ~‰t‹v}y}Žw|wŽ‰s~veŠ…|Š†Š€qzx‚~ŠŠ‡{lxvx‚y|€‹‡}Œs|ˆ~‰„Œ{…z‰xz‚n†x{€‚zx‚x„‰o~€u„‰Š‚ƒƒƒzk~Š‡‡‚~ƒ‰z…t‡z€„x‚Š}~„m†‰ƒ…}{v•Šwˆ‡†„„vŽk|zŠ„{‚Œov€r‚€z‡yƒzƒw~€ˆˆ}„y|ƒo|~ƒƒŠ…ƒ†}…‰t{…wƒ‚‡€z€wvyŽŽ{|~|lsy}†}w~„p~{|‰ƒƒƒƒ|z|‹ˆˆ}ƒ„v‚|‚v€„w€yl€w|‚Š„…‚ƒ†m|e‚y„„†ˆ~tz~}~„‰Š~‚u‰€‡€ˆŠ|u‡€y||x…‚x€vˆ|y|“rŠˆz‰usms†€€~„v~nptp|ˆŠ‚wy{Šg‰€‚~‡‘„€x˜€„Špz}hŒ~„{‹†ˆslxq€‹~‡Ž{…v}mw„ˆ‹~}}|{‚q|r…~…{‚ŠuŒ}{…Žx„‰€xƒ„†™€|ˆ}ƒ‰z‡v‹w‚„|y{Œ‰‹|„zth‚ˆ…›{{€„‡w}|—}|{qƒy€}€€ƒˆx~‡z„Œƒ|†xzz‹y‚…ƒ|zzˆw}{qƒƒ~qxmˆ€„‚z„…|Œ€n~w~~‡v}‹~}~…u~€€q‡€z„•y‘†x„ƒw„qvztx‰”…ˆ„l‰}€~~s~rvw~x{€‰Ž‡zw„u†„yxv{yqy€qzw|…„}{z…xrw}ˆ{Œ{Šk‚}r‹}~‰v†‚~„ƒuˆ}~‰ŠƒzˆŽqpwsww„”wxuu}‚‹l‹||vxw€m€~€t~…Ž‘q€t…Šƒxu‡xŠ}y‚u|Š~€xs‚|ƒvuwu€q~ypz‡w{rqƒ{pxy{†„|~”v‹ƒ…vŠrŠt…zn†{}y~x‹vŒ€xˆvzz{v„{}‰x}ˆs~{x~}‡ƒ‡ˆ‡vz…Š€w‰r}~~„sƒ‹r‰r~€|…}’‚zƒkƒyv|‰x{mx|‚|”z˜…Š„~y†z{‹‘„‰w‚z…t€uv{}vƒ{zwƒt‡ƒ{|Žz†z}‘…ˆŠ|wy‚…}‚{}tv‚xw~{†z’fux…}‡|‰Ž€~„€‚„x}q~u„‚‚€€|uƒd€~v‡ˆwƒyo€{{}z|jˆq…€y‰‰|vƒr†ˆ†‚|‹y‹ˆ|~€~€‚~ˆxˆ€ƒƒ~Œ~‚€||z|‹|x†ƒ‚{„†„†‚oˆ…Šyƒƒ€ƒ~|m„q†„vƒiz|‡k‡…Ši{zu‰j}…yu‚€‚€Œuƒ{vxu~uˆŽyˆ~}~„zz}|s{s{}‡pˆuzzz‚ƒ…{wsŠw€w{‡zˆ€†‚x€wrqw~~Œr‚zo{~rz…œn{€jƒ}wˆ‹u|tˆhvy}w—uˆƒ‰‚~|xm{{{v|q€{€~…m‡x†z€…t}‰w‰„z‹„‰‹t‡‰‚ˆ„™|…yzpŠx‡…€|…~y~ˆx{ƒjƒƒx|{yˆ„ˆuƒ‚„…‚|t…Ž‡„t‚‹„’}…||~y|‡ƒ•~~|~„„}}…ƒ‡‡}ox‚Šy†{wxx‰„€„y}€‚r„Šx‹sw„~~€y‚qx~‚†Œv‡~jƒw{~twyo‹qŠvx€ƒ†“Œmˆt…ˆv|rr‡}{ly{ƒ†vtvs{‘|ƒ~y}†‚rr{ˆ~w{ƒ€…~‚w|‡€yŽ€‚Ž‰zzu~yˆz|pˆyuƒ€{…z€Œ}ƒ|q€ln„{|ƒtr‡n}w‚|x–†qˆz…wŒ˜‚y{€ƒ‰j…€|tƒvŠ~‹w‡|x€y}Š{‰~€ƒ€wŠwu„z~‚„…ˆ„v~ƒ{€†ƒ|z…‚{|…|„}wƒˆz…z~~x~u…x{ƒtƒ|pv€‚}v~r‘}ˆt}…~}Šˆ‹‹Š{†ˆ~|zqw„}…yŒŠŠ‡‰…{‡~x’~|…u~}…€†}y‰Šz‡v„„vtŠuw}†ƒˆ}pyƒ}ou…y†ƒ†‰„‚pp„‚…{z‡r‡{z„t{v†…{wvt{‹…ttƒ~~|{€•{„€v}~vz€~}…sˆzyw€€†}…‚p€ƒ}y†€}ƒ„{‡€z†…„|„}|ƒxz…‰‚€|wxˆz~}~ƒ†Œjv„}sˆm€ƒvu”‚|t~‹}~‰ƒwz‚~m‚~ˆŒƒztz„pŒ……„yw|€ˆƒ~y|{v‚|ƒ}€|€{}v{q‚‚Š~y}vŒuy|‡„Š‚y‚xƒ{‚|zzmr~bƒ{vŒ…yŠ~Œvvy„y€€…‚“q‚qwz…yv„ŠvŒp{‚†vˆ}‹~€…~yˆ|u~t„‚z‡}{€trˆ|ƒ‚€x…„ƒ‚€z…uŒy…ƒƒy„}ƒqy…|‚ˆ‚€Œm„{…‡…„†zxt„{{~p{‘€…|{……}xp„‚‚„ƒ~~}{‹ƒƒyw‰Œ}†„€Œ|€ˆ{n€‰ƒ‚Šu‰€ƒŠ€‚|€}s€x‚y†|…‚†|{„„{|‡}†y~‚|„}„‚…ˆvw~|wŠ€~‚t~‹||{‚~}~Žˆw†ˆƒ‚€qyy|…„wƒkp€}{uŒ|vƒ„||„€ƒxzzzƒ‚z†zv‡}ƒƒ~€†‡†t||ysƒ…‚||„~u€~‡z~sŠ€ˆˆ‰‡~z}ˆz}v“†€x{†„{v}‚{y‚†}v{‚‚…Šyƒ‚}}|wˆwˆ‰{wuv}{…{ƒy‡‡‚€t~…‰}z{w‡‚{y|†…‚„ƒ~ƒu}†z{}„€ƒ|ƒ…Š{{ƒƒ…y†‡ƒx~Œ|yz†Œ‚wƒy‰r€xp‚…ƒu{|’‚yŠvw‚}Š„q”‡~zs„~‰tkys‰ƒr|ƒ‰rrˆyy€u~„}ˆs…~‚‡}€zx„‡}{‚x…‚y„ƒ„–~{‚ƒ†‰‚ƒzvx{yŽ||{y|Š}ƒ„…y~w}Žo€v€ƒwy{‡hwx{†‚†ˆtvŠ†…‚€l‹}‹}vƒ|†t}…sypx‡zww†||nz‚Šzu~suy|q}‰‚‚uw„vt„„w}t‚o„x‡|ƒ~|†~‘y†‡€syry…„…~…zƒƒ‚ˆk€t„‚~yzo’g‹„{ƒz~qyun†yŠ‡s|pi†w…rŠoj~v†…„y†‹r{|…z~ˆwt‰msŒ{ˆ‡v…}ysv|~w‰ƒ…ƒutx…x‡Œu…‚x~}ytˆ‚…“y‚x‚{|w||wŽ|„os||‰vtƒ…€v|d†~}~ˆ~‘~wŠwsyo|k~†yˆ…t}ms‹x†zz„‡{‚~t„Šuz{„~……ƒŠ{‡„Š|‚ŒryƒˆŠˆ~{‰€‹Š€{yƒ|s}{z€w€…r~v}„v„|v‰|‰’z‚‹†Œ‹zxy‡~v‰x„—tt|z~…†qˆ…l†€~‡x‚}zˆ…Œq‰‰xy‚z¢u€x|u—‡ˆƒ…†‚ˆ|uˆt|ˆw„}‰ˆ†wƒwŽ}„„€r…~w}ˆƒ…w‘}Š}zƒ|Œ†x}ƒ†t‡~}‡‡w|xŠ{„}†‚†vyƒ„~w†|€un~‚ˆ€v~€ˆˆˆŠv}‡‡~Œ|Œƒ~…uŽ|ˆpt‡}wz{‰t†z~Œzt…}~x‡y‘…|Œyƒ‹{‚Š‚†…€|}w‹r‡‡}‡‡€€}y‹}‡‹y€Œz€€uˆ„„„{Šv~‚‡‰ƒ‚€q{ƒ|Š€€‚…zzzwv~‡‰ˆ}z~{‚€{ƒyz|yq~‚„z„qu†t{zy€€v€…sƒ~€~ˆŠ„|znrvwŒ…Ž|~~vŒvwz‚Š{z€t|yrz‚‹„w|Œ{{yuz‡}‚‰}ˆŠw„€{~‚„sv„„ˆtv|xxƒz|t„{z}{‚‰}{†}†€{~vƒ€~ˆ~~€}wqxƒ‚}y{ƒ‚v„x€y‡{|wxˆŠ|ƒ~xŠzu~w„‡‡}y{t‚q‚{€ƒ€{€wƒ‚€z‰‚|…Ž{x‚s‚x}…{u€€t}{†‡}w|y„…„v…x|z€‚€wŠzw|‚ˆ~……}yƒ€|‡†qy‹zƒ‰v€€‚‰{zrƒz{y}„Žwzy„x‚…{…y†ƒvtx„‹zr‚€Š„‰v|‰u“‰wŽw~y‚„}|xy†xy‹}Š“‰‡{g}€t„‚Œ‚tz~u‚…€†Œ…‡u}wz‹|xƒz‚€zƒ|{z}Žz…z{†…y~}{‡„‚„w‚{‡€ƒy~„qw~zr~‰‚„t{ƒ‚v‰„‡‚y„{|}|‡u‚}€vv„…Œ„‡}}‡}ˆ~‰z‹†‡xˆn}y‚‡ˆzƒˆ~€‘ƒ‡x{‚Šzw‰‚}ƒ‚uƒz‡‡}v||z|}‚…ƒ~|z…u„w|€fxƒw†wxw‚}|x€„}ƒxy}ƒ}uŒ„yyzxrˆ}~…ƒˆu€}{}ƒˆtŠt†}|wrt~ƒ‘†|…Ž„‚‡x……wx{ƒŠ}‰ƒ…u}zƒ|Šƒ‡Œz…|xyzƒ‹‹t…y{{„u~}€x…r‡€w„zˆyŠx‹}{y…‰€‚„u‚~~‚tŽ„‚{|s}~n‹uzŠs„xt…‰‡–}‰‡mzqrŽy€Œ‰swxo„n}‚‰‚uzv~yyv|†‚ˆ†ƒŠw‚xˆ‚}‚ƒyŠs…ujz{ƒzuwir}x‡{’mŒƒ€yy€Šu}xˆs€ˆ|Œƒxƒ†{€w„Š~…|z|v|q‡‘…ƒzoz„s{‚‡Ž|vxwƒx|ƒƒ~Š‚tq’†‡xqŒqz|pz‡‚„m~–‚{‚z‡w€ˆn{„|—~ƒŽ„{€my‰x{†~qm~v‹Ž}uz|Œ€ˆ}u}‹ƒz‡‚vvz||~q…„ƒ‚wxŠr€Šw„‡…‹ty~z{‹€|†w„†ˆ„w}†€o~xz{‰yˆ||~†qŠs~z†|‰€Œƒz…Š…~~‡sŽ}‚}Œ€…{‚~†‚…su||r‰|sŠ}~{„€‚€ƒ‚w{~‚‹v„|wˆz„{‡†‹‚}ozv|‡v|y‡{t|‚€uŠzƒww†‡~ysˆr…ŠŒ„}ƒr~z……€|Š{–}†s€†|Ž}w‰~tŒw„}†|~yoŒm~}z}t€‚{{t…y|…–x…xz{~z†zv€~x‹y‚x{zy‰rŠƒ{‹€v„y}}‹~Šƒ‚|sgw€ˆŽ|{‚}‡}€‰{Œ‚w|v{{y~†…z~wx~„~‰wˆy|†zz„€‚‹zv|~x„r„Šƒ‰y}}{‚wy†~”{}€}†€y‡v„}u€u‚…‚~„yˆ{~…€‚y€w}wx†ƒxz†€{~{~„ƒ‡‚}}…€xƒn€†zy€…zŠ{€ƒ†wˆ‹sƒ„z|Œ~‡{Šu}{{w…‚€‹sw€sy‰‡~xuqŠ{€|y‡y†Œwˆ„~|‚||tˆ‡†}ƒ“y‰‰€~‚s‚vl‡{ˆx‚sŠuwuŠrz…ƒ}s‘s{€‡x|ˆ„uxzˆ}zƒyˆ~zu‡y†€tlx{{‡‚€†|vyx€ƒ‰…x‚~„tƒ}zs€ˆŒw……u‚ˆw‡†ˆrŠ€|Œtv||€ˆz{~b†p†xz€€‡s{|vˆ€€„†€ˆ~…ˆs…y~y†wzŒ‚‚‹u|~…›z‚„{zƒ€u}sƒs{r‚„Œy|r„~|‡x}…‰…wŒq}€ˆƒ~†{z‚€…}swz‚‚y„|~€v|ƒƒ}~}v„~€}‚‚nŠ„ƒƒyzv•v˜wƒz~t{vˆ|{†y~w’‚‚„~|~„z~zy{‚€|~ˆzpp„x€wrm‰~ˆ€‚y}ˆpqŠ|„†€~ƒo‰z…||†‡|}}~s{z‚€{„~s…‡}Šz„|‚v‚‡z…‰x‹…u~…{Œƒ~~‚n{x}€‡x{‚‰y}ƒ€‡‡‡…x~ƒxƒ{x|y…wzx{|‚‡t}„‹„|ƒ{‹‡{„ƒu„‰ƒ‹}|‹vŒ„m„…{‚|{ƒy€ƒ~…†u…|x…yˆ„†‚‡†yzŠ}zyz„„|Ž‚„yy’…l{|v†€Š‰…v~~ow€|z~xs}z{‚|…€Šy‡}r~„}ˆ‰Š}vƒ{c€w‹}€zŠ}…vŽ~q~v‚Ž{…wƒ‚{€kw€€}ƒxvyy{xuƒ{v‡~€|u~y~|Š€‹‚ƒvy€„{…{†~‚z…€|~}v€z|…„ˆ|}vs~|}ƒˆw‰yyƒ|z}‡x€ƒt‚v|ˆv‚‚y|ŠqŠx‹u{|{vx†‹v‚x€}„ˆ}{†€rqƒy~y}‚€z~uv‹}xŒxˆ„pw‰{„…†Œˆ||y—ƒ~€{ˆ{‡zx|~„z‚|z~yŠtv„|y„y‡~€}sˆx{{r€}y{ƒ…‚tƒˆ€sv{„…ƒ}y†q†€„~ƒxi~€ƒ€}€€„xuz‡‰‰€}zvxzz{|‰…uzƒ‚|z‚~lw{ƒy~~…€…xyƒ{‹{|w„‰}„†{}…‚|€‰Œw‚}xƒ€}{~‰|‰„{Šx„‰v‡wŒ€z{|p‡€|{{…‰q€}Š„~Šx{|~ƒu|ƒ~ˆ~|suv{}{€‘{~…ˆ‚y{Œ}ˆt}€’}|z‚ˆ…z{zl{…†‹ls|m{{ƒ€‚ŠŒ‡qy{€‚o€z‚kŠƒw€…’ƒ€‡„uzy~‹w„Š|~ƒt|‚„|zwvs†|„…}wyv{vk€„ˆ…z€}Žy…ˆƒ{‹xˆ|‰zuŠ}yˆzzh€Œƒt‡g…€j„„{x~uzum{ƒx’~ˆu…w‹~z”uuws~xn|„h}y‹…}ƒz{y‡oƒvx††vŒ~z‹sviy„‚„ƒ‚…„x„Ž‚†|z{pˆ‚Œ”{Œ†{~†€oŠsƒ‰€Šqƒ~czu†‰|„€xzlqqˆ{|q‰rpŽsƒ‰‡€~†n{€mxv|ƒ†~Œ†‚€~‰‚Œ{†€~~|||…r„~vuwnŠ†ˆ€y‰mˆŒ{€y††€†ƒ~‘ƒ…‡z~‰Œ}|u|‡’€€€}yywz~~~z‰„xyyy‚}‡n|€€t‡v„€yv‰„z”ˆ‰Œuzyz„{w‚…{€lp{€”‡|‚Šwyo~ƒt€}y„tx‰{ˆƒx‰os|z„†jw}yšh‚z~€ƒ|€€‰ywy”’††}||…‚nŠ€„~m||n‰zŠŠx|slu€ƒ”Œmˆ}~|…‰„‚{€pm}{yˆz–xv|p€Œƒ€€‚{|…~}†|ˆƒ~y†qƒv’{y||~~‚|w€vz„z{ˆx†„Œ–|‰uŠ|‡‚Œu{|uslyƒw|…‚~}|pwƒ‰{x}ƒ€Œ|‡Ž„{r~||~…}‡‚„~|‚zˆ{|ƒy{€€mp„ƒ†z€Œƒkƒ{|ˆz‹€qŠ…„‚zs€‹xƒy‚p}vtƒ‚t|ƒ†€w|‡w{xuˆ|y€yzx}s…zw}y‰„ˆ„……|Š{€€y}ƒzy„v~ƒz†}|‚|‡…z€‰vŽ€o‡sƒƒ}xxxy‘r‚~z{w|z„}vŠ†|ˆ†x‡gŠ}v€r‹|€luq…ˆ}x„~‡ƒ‘~{puŒ‡‰|}€z€‚~Ž‚|‚‚ˆ~|su€|Šƒƒz‡‰uqr„Š†v€ƒxšu~„€Š™‚‡|~{u…q~xz‚yrxypu‡…€}—‡ƒˆ‡x„u~†…ƒˆzˆ€’y„|~~…„w‰‚‚v~t€|y~t}}†|}}uk‡v€~€{}qƒx~ƒˆ€w~ŽŠŒ}{€yˆˆ„„tu|z€‚‰‹‡…s}|{{Šurƒƒ|~…ˆ€sˆ„}€€ty~utyy~‡s}v~~}…€}ƒ‚{x{r‹‹„|€Š|ƒpŒ||‹…xˆ}{yƒu…€…{|w~“†‚{|~}Žn‹yƒuy…€„tŠ‡u…}p~‚€–ƒ‰qqzz‚…v„‹oz~†u‰q……‘u…r„}vy‡Œ‚†u|rxo””€Šusxyivƒ{ˆnumu“z~„nŽ‚}‹lu„v}ŒŠ…‚wrsu}ŒyŠ~Zwsky…}“„o~x‰††{…Š„Žxvzo|‚…„z€}~~…ƒ‡ŠŠm~‚o‚x‡|„||wuxz~y€}ƒ{voy‚‡Œ‚}srr„‚u„{‡zunrŠpˆ}†jyt‰m‰rzŠ‚z{ƒ|‹Ž˜e€|‚mržf{vƒmr|—Ž}~z{†Šrm•–xŠ|yp‰u’zƒ~|†vv_€…’z~…{{†h}|~ƒƒ‚|r}ˆˆŒ‡ˆq~oxƒ…ˆ€y‚t€}‰}qv„wˆp}~}~s€zvu€j€ŒŒrŽ‰nƒ}p‘—|€~mmŒq|z‘qŠ{‰{u“~yƒa‹„xp|‡‚‘Š}rŽŠ‚y‹_Š‡|’z|‚m{‰yˆ–†~‡~yxu‰}‹€{…–{yŠ„‘„ztvw†y…~{|~ƒh“„|„}~yar„‹€vqŽ‘‚€Š„}„€y†jt|Œ‡”}hƒ{”ss~¡|s„urtzŒ^‡|z‰y†nq’ru…v}~ryŠq†ƒ‰qz€|h^€‰|†lo|zlƒu€„{gwzŒm•y‹t€r›‰zv‡‡†™‡‡ˆ|€€vkxƒƒ~‡‰v{x“~}‚y€y„ŸyŠwŠˆ‚{„tjƒŽs‰t}|v~‰€k}j€Œ‚a†ƒ€Œ{…}oxt†m‡‹tŠƒk€o~†‡{yxzd{ƒ‰wy‡ƒ{k‰ƒ|}‚|u{•˜’Ž~„‚‚xŽt{{ƒ€Œ…†vƒpuv€…~Ž€zw€†‰t~€}†‚c‚~y“zuƒy{†‚v‚q{†‚wp‹pŠŠ†~‚}“ui}g‡„€v‚}~Šžpyx}‹’y€az„v„w{}y“}‡‰sˆ†‡ty‹}}„yƒ~Ž‰t”pz–v…„‚‹mƒ|€yŠŠsow†s‡‘wˆvŽ|…r‚xŒpƒŒz€i‡y‹|…˜w€t|w~}xzzu}‡€™|{ƒyŒ‡~uvŸ|†‰~„ovœ‡†wŽ€u|vjzey|‚ƒŠ€€{‚—{o†‡qz|qŠfy‹yzƒƒƒns„‡yw~€Švy„„„ƒ~…}c}~‹‡x}€j‡‚ŽŠx|l{xn‚ˆ‘v€{{‡tte{z~Ž‘…‡‚}…‘Š’w‹}sx…†„ƒŒ‰q’y‚}~wwlw”€}yˆ„{`€}u~wsˆy†mˆ{„„ˆopŒr–twx„ƒ|p€y•~ƒwz{tƒˆzxzxuŒt€ŽˆŽ€€††„~rnŠ‡z{v‚„‹xšy}Ž‚{r}“‚‘}j…hvƒv…y…x‡k’uzwƒ”~ƒupƒx€€ˆ€‚s^}~ƒzzz€q’r{‡ƒ~w|Š¤ysxvŠ„y„„qz€€{u…„ˆ›xˆ€o€‡†Ž‘Š†||Šutw“~‡€…ƒtnvƒs„t„|tš‰‰Žys`Šˆ„z~‘ŒŒŒwˆ„q‘|ƒv|‚€n{mw‰‰‚‡„y…oƒ‡„ƒw„{z|x‡y‚r{|sy‰‹Š‚}wz…w|ƒƒ…‚„€~{„y€ƒŽŽ…|‚„}†‰‰}|„~v|‹†…w~|q{|wz‡{‡pwztm†ƒƒ…~y€‚p{‹|•‚z‚xzv}‹‹Š|ƒ~y{’|~txp|txˆvŠ’ƒxˆ{|~z|}{…}u€„o{~…€}‡zŒvƒx{Šu„}u‡x{„r}zx€w’n|‡v„w{€„uŒ|~…‰„‹‡ƒ‡ƒƒ„uƒwwˆ…{Š~ŒŠ“uyxv†{uƒ†Ž„‚w‡ˆ…Œr|„ŠŽq†~…um‡r}ƒxt†‡‡zp‡‚x€t|{~€†~‡‚yƒ‚€{|…z‡w€‚~}‚ƒƒˆ}{„||wq{~{…‚ˆ€‹Œ€…‚}…„z„~y‡~~…‡v{v‚{ƒy†…„}}}tƒ‡„‹†‹zŽ{„‡‘~…Š‡‰w{}„‚}€‡ƒŒ}oˆ{zˆ††}rŽ‡ysz~‰w€ƒ„Ž~‰ƒƒ}w{{uŒ…}}‚…z{„~t…~{{}}yˆ}‹‰‚y{}‰‘€Ž}‰…Šyuz…„|uqŒ‡–xw~€{……„~‚ƒmzurŽ‰‡|}‡xhj}ƒ‡ˆ„‡xwr„€Šw~{{{}o‚Šƒƒ}‚xŠp…{ƒ…}}€i{€€~~s|‰{{}ƒ‡Š}€}{{‡tƒ{†ƒ~}|z‹~Œ€€w}‰e€x{q€„Š‡|‰ly†{xu€x…“tˆˆ‰y’‡‰‹‡q†|€–„z||‚oz€l„€v‡}||€Šƒ|||‹†…vŠˆƒv}„{w~‰v‚ƒ‚”|l‰…~„r|‰„„w…r|yw“}‚€‹…„hp€{€~w|”{Œtw€~uw~‰Š…wx€n}†}‰ˆ~•x|€s–{wvqw€‡†xd†}y€vzw’|~{Œ‡ˆu~n|oˆ|l’€€}l‚„‚„q€vq|w€ˆ}€zp…z|t‚Œ‚|„t}ƒ„}‰y|†r|w‹z€y‹„ƒ|†xˆ{‹Œ„zn€€‚y‚rq†mw}„wtxtv~rvi{Šsˆ}{}„w~uz~’‘„~pƒ|||†ng’{|Šƒ‹~‚o{uvtwxw{z|€ˆnu~€ˆ‡Žw~‚x…|w‚”Švyƒwˆƒ„‘„‡zy‚{…ˆvˆ~u|~v~€š‰‹|}|u{ƒ{}v}{€w€|…‰—~p|€zˆ|‹„ˆ†w~z‡n†‹{~…q„{Ž‚›€‘ƒ|r‰‡xy‚tux…||€}u…¡Š{w‰|uyxt˜‚€pw‚t€ƒˆ‚q‹sx–€~•z‚Œ|u‰z|†‡xŒuƒ‚}szy|t…v‡Š|z€ƒ„y|p…zv†y‚‡{‚“t|€vƒp…‡‚Œtz†~w†zm~…€}„|~‚g‡}‚‰yrŠ—ƒ}~‰†{~nŽpz„ƒ}„‚‚„‘‚‹w‡‚……‡}‰}‡}zˆ}‚~}{ˆ~ƒƒ|‚Š‰vz…~}Œyƒ{ty‚‡„{„yzƒ~~€xy‡}{qp~…x‘i‚~uˆg„‚vwƒs‡€…†{ƒ|†m{‘|ˆm}‰Œis~†~y}}‹|‚cpƒ………z}…xq‘z~…qmt‚w{ƒ~…}‹xwƒo}‚€„{„‘m~s}‰ˆ†{xrƒwƒ…{‚‡vˆ‚…p€{y}u„†€oˆ}€ˆyŽ}~Š‚Œ“~|‚|ŒŽ…’„ƒx{„„Š†mtˆƒ…z~Šiwxˆ‹ƒ„wƒx„ƒu€‰}…}s…|xŠƒy‰‰†q{zˆ{z€†}„zy†‡zx}||€ˆz}‹ƒ‡vz~‰~wƒ}…Š€€~rs}Œ…€|€€|}…l‡Žum}t“‰~ˆz„€~zyƒˆ‚€wzƒ|ƒt‘€€Ž†y‚|~‹ŒvŽuˆ‚xz…|ˆ‡‚”Šƒ‚r‚~vy‡tŽt‡y{‰‡›€†‰ƒs€~‘qn…yƒˆpx‹pt~js~‹uuƒ~‘y~}s‚~u†on|z„wxƒrƒywˆuywiˆ~ˆty‰|ƒ„wƒz‚ƒxƒ†…‚|{}…ˆx{z„‘v€…—|u…rˆwŠ‡sˆzƒ€„|~‘zƒ|€y}„€‡”~•x{†y‰w…ƒ‹—‚~wypw~€r’xw‰y†y|‘ˆ{||ztw€ˆ~€‰ƒ|s”‡‰†u}|ƒ…xw‹x„‹ts|€ƒˆxx|x…„zy‚rŽ~}ƒ‹t…€ˆ„w…‚q„sƒy{—Šwwpw…€w‰‡~‡w‡…||o„|~zmy}w~|{„€tˆ|‚{‚y‰‚†‹zŠ~z‹y‰„xƒx“tw}‚~~v|…~w‚t{Œ|~„ƒwxiswƒ†}{{x‚uo‡ƒ†xwyvwsxw…~‚yx{w{|Œy~Šv……~…}€o‡‚|ˆ€~‹~…Š{zx~x‰y˜„x~ƒ{‡{ˆ•„„t…w‚{‰ƒˆo‰‹{‰ˆyu|v‘ƒ‚jh}†z}x†‚ti~r…ƒtv†tvˆxy}†{|€€Šu}zŒƒ†~~„|…‡y|€„‡Šƒ†w‰„u|ƒ†€…g‚€€†xƒ~sjmt~v|w{‡yvxj{…†‚nŒx}‘us—„‡~‡z{x…ˆ„~uƒwy†}Š{†€„y…vr„ƒ|…}€„‚ƒj‚rƒ‡†Žux‹{v}~€xw‹‰˜‚{x–z‹…„q…~~€ty„w}ƒ~u~y|‡‡t„uƒx‹sƒ‰q}|ƒ{~x„}ƒ‹}Œ‚‚zz€Œt…kn‰‡{ƒy|…†oywŽƒxxsv“uƒy‚‹x„‹zo‰i†tx‚Žspj€„„’‡ƒmŠw{ˆyƒu{xr{}t{Š|{œw‚mvˆz‰‚‹†ƒ|}•}ƒ†y…|„†}‚z|‚Œ…|w|ƒ†{„ƒx‹††}|u€q{w~Ž}y‚…ƒ‡wz„l€~~•„uˆƒ}‹}Š‹b‚{€‚~~‰wkz~„yy†|{„{Œz‚„ˆ|ƒsox~}ƒ‹‚ˆ’ˆv{‹‚s‚zˆs~u{}‡z„}‡y‚{q‚vƒ}€uy…Žs‡…{Œ‚tysz†|…z}~z‚j‰€ˆ€p~~sŽ„†„‰}|…‡k€uv‹x‹rm„q‚‰}ˆzzoe€Šƒ„~yy€~€‚†||‚xŠ‡ƒ€„‘Œyvs„{~}–‡yxm}€…z‚ƒlˆw||tƒŒ{}u†tx„‡ƒ‚{ysŽ~‚€~€}sx‰}„|‡€zŠyŠ‰~{†|„w{zq€}‡†p|‹t€~ˆ}„{‰}q|x}€wŽ€†omzu}}‚{rrˆŽw’uvy|oˆy˜ˆ‚„‡|vˆw„w„xƒv}}nyŒ„‚‡{‰n•‚‚„{†ˆ†…z€…uƒx~~€‚|}‚€|vy‚„zŠ€wso{‡„Œ~„xud~{‚…}†ˆ{qƒjz‡{ˆŒw†}ƒswy}‰‚„yq}}|}‚€{{{‡€„‚}‚}r‚v€ˆ{††–„ˆpw…y|•|‰“zˆ~„ƒ„w|}…€†tu{ƒx‚}y†~v…Œ~ƒ„|€y|Œ|y…}†x|‘{„q‚‡„nšv•Œ€wx~~Œ…h…|ƒ}„{ˆ~‘‡{‰‡Šz”}z{†~Œ€r…„„ˆvŠ{n~u˜{ƒxv~sq‡…rwƒwz‚„‚…‰ƒ…|rx|ƒ†€…|~w{‚|ŠsŒ{†‡ˆz~ƒr“…†–i~xy{…‚un€‚‡€ryw{„u‰xtuxƒ€ŠnŠ€†ˆxu†np{Œq€n€—~|y…‹„zn„€tuyx|yz†y€„„€‚ƒ{y~|…~Š{~‚s}wˆ‡vvyp‚|ˆw|o‡z|‡‚|„xuˆ…}w~~‰‹gŒ}„€t‚yr„t€€zƒ{‚‡u‚tˆv‰†„tx€Ž…h‡w~…u‡~‚{uvr„}~€€us|}{†€w‡†€…yz€…v‚||…uŒ~y†}xz‚„Œ‹}}|’{ƒ€‰yp€x‡Œu†ˆ~t~††vˆƒ„l…qƒˆ{~y††~uo{|ˆwx„z’Šx|‚Œˆy‹x…„|†x‚}uƒq„zv„}†„|y‚z{†…~~‡}…|v‡m†zyvgƒŽ}‘‚„ƒ‰~Œ‰‚ˆru…{|{zzujzuŒ{‚}|w€}†€u‡zˆ~ˆ‰{‹|zŠ…„„€px€}‹ƒ†z†…zŠvoˆx~|v…vt~Š~‚r…~ˆŠqˆ{zŠƒt{‚yu„|€~~~w‹j{u€v˜ˆ†s„z}}‡…€x†y‹…t‰zŠwz–yˆ…ƒ€z|wˆo‡xltˆƒ}†€}‰uq„y†……‚‚|€y†{Œ‚…w|qv}……v†tz|”‡…u…€Š}~‡……s‚…}„…Š|~|†‡‡{w„‡x~r…}€{€…yƒ‚€{vƒ‹‚ƒz~wƒy}‚ˆ‹|‡…uƒ{‡s‡x~z{‹€Š‡„w‰‚„woumŠ„|y€~…o‡„xˆxƒ‡|n€‚„|‰ˆ{…Šz‡ˆ‡ƒ„Šwwi€†sˆ‚Šux€zy†€zzzhvzŠŒ‰‡s‘{Š‚m‚ƒs„|~‚uv†Œ‰uy„wz}sy†ƒy}€…ˆ{†|‹uŽ|€„€}r„|r‰ˆw{†‚ŒsŠŽz…}†‚‹†zz‚{v}‚fŒ„€Œ“€Š~y}€‚ŠwˆŠ~„tyu~{z|Ž{‚~yv|v|zzˆ‚‚xwƒ}ˆ„„|Šn†‡€yŒ€‚„€{‰t‡~}€t‚‚x‰}y|{Œ}‹‚€~z~v}||uurƒs|ƒŠƒ…{‚zv’|p‡qˆ€}l‚„k†t‡…xŸx‹“wŠƒ€€„t‚~††}Š†„~rˆzƒ€„}†pt‰xˆ~Žr‹{}zs‡y…„Žn{…~ˆyuƒ~‹‡r~y…x}x{‡z{|~ƒ‚|‰‚‚us€s„„v{y€vt†{ƒy“…‚…ƒwuy˜z{||{€†‡zl‡‰|pŠŠ€Š€}††ƒ•‚ˆ„€t|ƒ}twwzu{ŠzŒ€…„{ˆ„Œ„ƒ|‡xxƒh‚y}x€ƒˆ‡{†z†jŒ€‚„w„qz}y€€y}o—‡€ˆ€ˆ€vtŒ~z{ƒp|v‰…Š‰s€khŽ„‡…p„{wp}„k’€„€Š}wi}‹ƒ||„ƒŽzˆ–‡…ƒŠ”~uz~…~}ƒŠ~|Šz‚‰~‚u‚|xŠn€zyvxx†}~„v|‹os†‰u•„|‹~‡ƒm™y‰‡|‚‡|~‡‹‡t~…Š†€€mƒ’€|†ˆ†…r€uyƒwƒƒ‡}Œ‡x‹ˆ{|‚~‰‚l„zƒr{†gsŽ|…‚}‡‹z€{‚„x…wz‰z~‰‡|ƒ{‹‰†t}x€Œ‰‚†…w}|zŽŒ…Š”Šxz€Žy|~qŒˆv|vˆ‡tƒ|€„„wu‚‚‚v…|‚Š†r|ƒ…qt}†„ƒv‹t‰vz|}{†‰{Ž‰}|{‚}€f‚uz…}‚|~‚n€†x‡|~{‰‰{Š}qˆƒyx……lx‡xz‚ƒ‡q‡„€}yvŒ…ˆv…|xzv|…l{€‰‡~~–ƒ‚{}{rrsw…„}|nŒŒ†xsƒy…}‚ˆ|‚‚‹‚€€‡†Šry‚t‹x}‹o‡ƒwq~y{…ˆƒ€{{›||zt}{z|Œ„‚‚‚qv~‰{wk~‡ˆ{‡„ˆ‹tv~|z€j€~…w‚€€ˆƒqƒ}~ƒw€€‚ys‚€}’‚‰…{ˆ‰jŒ}†€ƒ‚Š~’†‡vz„‡ˆ‹ˆ‚“‡y~Œv|ƒ€Œh|‰x}xw‡„‡†’†‚zwwq‚w‚szx„‰†€›vy‡|ƒ~‰ƒŒ‹~}zwzz~††q~ty„Š}†ˆ„†ˆ~‚}o‹s„€t}€ˆƒtqxŠpˆ…ˆq{~Š•v…iŠ}~„†€”ƒ{|Šyq‡’o~pz€†ƒˆŠv‹}€Š‹{vp|…sƒ‹Œ|Šw•{z€wuv}tˆu€x~~…v†‡Œ}y‡‚z€{z€zˆ†ƒs…uˆ‚ˆŠmŒz†Š|y„{vx‰i~…s†}Œ{€a{ƒ‚|‘y‹ˆp„r}…|xxƒŠxyl}~|}zŠƒ†qƒ{{|‚w„…|‚x€vyz|‡‡‚€yy†y}~‡|ƒ~|tx†w†††}~wyŠ…|€~yvqkˆtŠƒvtll†‰„|ƒ‹xŠgƒ‡‚Šƒ„†‚‰…w€|„‡‚†y†xp‚wƒ‚„†n}n}…ƒ{Œr„}v}‚|Œx‡u||wyw…ƒƒytz~xŠ~‚ˆ}|g†ƒ‚ƒˆƒw‡†ju|rŒƒ€‹jŠ“‡{ƒ‚†ŒŠougy‚|‚|‚‚ar‚v…Žx‰te€otƒ‡€†Šƒ‹v„yŒ‰„r€wŒŽ~y}Œ†Žzx€~{~or‚w€…w}s{‘…}}†‚…’wŽ|„†|}‚zvxnu€{tŠt‚ƒ|•{z~†Žˆ‡„†}}uz}zx„Œ‰w‚€u{lw‘v‹€uŒ…z~}ŒzzŠ…u~x{ˆoqw~…}}t‡~|„ƒƒ…}ƒ†ˆ†uˆ|{‹p|‹x}u{}~Œww„{~w€€…‹€yox„}„‚xm}q˜w…ˆw’rŠˆk‚x|†ƒ}‰t‡{……w|yr|~iƒ‚†œ„‰oŽ|~}x{w”rŠy~}‡“†y‚„€†ƒ„ƒz{}s‰€†z„|‚…‚€ƒˆ…wŠ…}u}mŠqŠˆxz~ƒwv…s‰‚ƒƒ€†p‰w{‰}…yv‡‡„‚‰‚p|†|–‘p|€|ƒ‹}€ni„‡{„€}†w‡Ž‹zƒ„}ˆyxx|qƒ~€…~‡Šy~|‚{‡}ƒ}ƒŽxx€{x€y…‘‘z}~w‡„x†p‚}…†}ˆ‚w{~‚‚‚„zz„w€ƒˆŒ‡}y~‚|ˆ„‚†‚z…ƒ€xƒx–†z„†|}Š†g~…y‚…†zz…‡”‚x†em‰€|ˆ„”}{Št}~x€ƒ€Šsq…‚…h‡z‡{w†}~p‡‹„}ƒt……xˆ}yx…x‡€ƒz€ˆ…ƒ…uxxwwƒ‚Š—‚~„‡y‚rƒ…Š‚„xˆu†ƒsƒ|€†•‚‚„u‡‹{‹xzt‚i{muxt„‡tyx|pnƒ€x‡x‚}n{|„s††w‡z’|€€’ƒ{‘ƒ…•y…r”“Ž„„™yzƒzmu€ˆ‡z€~x‡‚w‡yˆsxszr‚|}}r„{‚‚vˆŒˆˆ†{}†‚z‚}}zwy„‡‹…’€w{o„|…‡z}ux‰uƒ€}€€‚‚|otqu~‰x‡s{r|r€p‰~s˜€z‚|‚€u€‰bˆ~y‰{‰ŒvqrtŠv|~n}„ŠŽƒvƒo{Œvwp€„|ƒ‰‰y{ƒ‚{‰yv†ˆo}{‰‹ƒ‚xˆƒ…ƒnˆ|}wŠ„y„“|‰‡€}…~‚ŠuŒzwƒ…vƒ|‰g‰‚z…‰}d{w…y€„yˆsx}„{|€Ž‰~t|‰lƒzf„‰‘‚j|zˆns{‰z‰ƒu–qp}t‚z‚t‚‘}‚{€„|Œ€{v{„yu{…q„ˆŠ{…~€z{wvx†qy€…w‹mƒ„‚uz†€yty†zƒ{w~z‰y…z…~ƒz|z|v…„ˆy|~–……}|y}…|Œˆw„z…€|ˆ{Ž}’ƒ‡sƒx]zv‡rŠ…w~uqy…{ŽŠ‡…xy|}”lƒw|‹€v…r~xy‚„{†kyz‡Œ‰€~v–mˆ‚ƒ†}„‰n{zy…‚‚†„ƒ„}x|„~|“‚…|‡yz~‚€~{~~~}‘o‰|„|t|~xuŽv{~†u†h†…{z…„…‚q³ˆzÿv•²©«£˜”‰ƒ|upgc\VPJD840)$#+.7;DJPV[`jms|…Ž•§¯±º¿ÆÊÐÔÚàåìó ûþÿÿ&ÿ,ÿ1ÿ6ÿ;ÿAÿEÿMÿSÿ\ÿbÿjÿvÿ|ÿ…ÿŽÿ•ÿœÿ ÿ¥ÿ«ÿ°ÿ·ÿ¾ÿÅÿÍÿÕÿÜÿãÿæùîôóïøêüæÿáÿÜÿÕÿÐÿÉÿÂÿºÿ´ÿªÿ ÿ˜ÿ’ÿÿˆÿÿ|ÿuÿoÿeÿ^ÿXÿRÿ¯™Šu‹ˆy…„|zyz{rqw}ƒ|‡ƒq€yƒŒ€xƒ‡„„||z„„‡|„‰|˜‡o‹|‹‰o‡„„~„{‡}c{†Š€Œ{‚Žƒ|}„v}~z|}„}v‡~wˆt„†‚|~}{w||‰ƒƒ†‚|…†m‰r‚z„Œ€~„ˆƒ€r{kv‰s|~|zuv‰zƒˆu}x†”‹tezy‡ˆ~‡€ytzrx‚{{…€q}ƒ„‹‡ˆj„{…~€†|x‚{|{urz„}~€}„€w{ƒ‚yo—}‚zŽƒ…s‰Š€Š‚…€t‡r}~ƒƒy~‚z€ƒ‹z—psv‚wn‘…{Š}x†“sv~„…}…‡…‚zo€v~ƒ‰vo‚€‚sŒ~‚~’~€xƒy‚‡‰…~„ƒƒy}yzxˆ†‚‡xyz~Š„…ƒƒ€rƒ{s„{„~~‡v…|‚†uxŒ|lv„x‚Œƒˆt}zŒ|‚|‚„~w€‹ŒŒw‡†zƒ€s„€€Šƒ†wr{zˆŠ…y‹~~{ozw{py~€ˆ€ŒŽ‚‚‘‹vƒ†€{…~‘}}Šw€np‰ˆ{z„Š}wuˆ…}yƒ‡”€‡|‹…u|€}€}~†€r‚~†‹‡us·¬Dì7¢±«§¡š”ˆƒztogd[RME=60*% ").5:>IPT[_ekqz‚Š‘š£¬°·¾ÄÉÎÑ×Þãçïöüÿÿ!ÿ%ÿ.ÿ2ÿ7ÿ>ÿBÿHÿOÿTÿ\ÿeÿmÿxÿ~ÿ†ÿÿ—ÿžÿ¤ÿ©ÿ¯ÿµÿºÿÂÿÇÿÏÿÒÿÜÿâüéöññöëûçÿâÿÞÿÙÿÕÿÎÿÉÿÃÿºÿ²ÿ©ÿ¡ÿŸÿ‘ÿ‰ÿ…ÿ~ÿxÿsÿpÿfÿ°œ‡–d…€}…x~‡xˆ‡€‡x‚t„o„}u…ƒ~ƒ…{|{‚z{xˆˆz{Š|‚€nz‚v…|{o~„Žz‚ˆƒ€ƒ‚‰„…ƒ}…„‹ˆ|€r}pŒŽvƒ‚}…Œv}g~€ƒ‡‚z…€‹ƒ„zƒ„q‡uvz‚~…}ƒ‚zxg{‚vƒ…vŠ€z}{|‚€‰w€qŠt‚pŽ}‡‰t€v~…‚n‚†|}wŠƒr{u€…„yv{tˆ€„~p~w€ˆ‡€{‡uŠ‡{…€{}„u…uxx~‹•…zvx‚x‚x}y{tvr„€l…‚†“†~~l{uo„~‰ƒ‰†}{wzr„|‚ˆƒ~‚zxzn‡y†…x~…‹~o„†~…ny~p{‹}ƒ†s„“|„ƒuz‘q„w}ww‰†t{„|€ƒ~|~†s~‹ƒ~…xŒz€s…‰y€|x€‰|€…uw|‚z~|ˆ{x„xyyŠ{Ž|‡zt|Žk‰~‚†zŠpxyŠ{}‰€n‹tƒy‹‰vxtƒƒˆ}€zyzqr}sz€’†„q~~‡t‚pw…w‚y†yxˆ|~}~{‰ˆz|€wwŠ‡‚y…y„ƒˆƒƒyv‹y~s}u—¨ p±Ø„‘›¡£«³¶ºÂÅËÓ×Þãëïô úüÿÿÿ$ÿ'ÿ.ÿ2ÿ8ÿ@ÿFÿNÿVÿaÿgÿoÿsÿzÿÿ‡ÿŽÿ“ÿ˜ÿžÿ£ÿ«ÿ³ÿ»ÿÄÿËÿÐÿÖÿÝÿâüêùîóôð÷ìúçÿâÿÞÿ×ÿÏÿÈÿÃÿ¹ÿ±ÿªÿ£ÿ™ÿ’ÿÿ†ÿ‚ÿ|ÿxÿpÿhÿaÿYÿSÿGÿAÿ8ÿ4ÿ,ÿ(ÿ!ÿÿÿû÷ ôíéãÛÔÌÅÀº°¬¦ ›•ˆyph^UMKB=>&.q^¢pY{~~x€‚wr|zy{~„~„‚Š|l|o€‰z„ui}„ƒƒ‹|qo…zŠ‡„ƒwƒu…oz„{krˆŠ‚‹|ˆ€†‡~‰~z“…†ˆr‚Šƒ~w„qv„r„…}ˆ…x‚y„{x‘‡y~„||uo~‚…}ˆ‡|ƒ†{v€|u…|}wx‡„|†}{r‡ˆ|„y{{~‰}rqz{~|‚qˆ€wyxƒŒˆƒ…y}}|d~Œƒ†t‡qvpƒ‡‚…Šw€ƒ|ˆ~u|y‘‚ƒŒŠ~…~„…€…x{uv}}€m~s‡ŠwŠ€‡‹|†}‚€|y{ƒ}‡‘|ƒ€}€„ƒ{‚v|€‡zŒ‚‹‹‚‡„z|{ƒy}t‚~ˆ€…wsw}€‰syuqwyyq‚“ƒ††ƒ…€w€‘ƒ|sz}†‡s€yv‹yuƒzŠsp|‚€{ƒwrzp‡‹~„xx‚}vˆƒn|z|†x{‚x|…~~suˆytx†„ƒu€‰{w}r„o‚y€y…‚pŠ„y~l|‡wŽz‡w‡p{„w‘t~}{oz‰}}‡n„}o‡ƒ|‚‚}|}ƒ†~~}}…}zŠv{y}‹‚|qƒiŠ~zxz„sŠ„Ÿy‹~yƒtl{_ùI–ÿ}ÿÙÿÊÿÇÿÁÿºÿ³ÿ­ÿ©ÿ ÿ›ÿ•ÿÿˆÿƒÿÿvÿpÿ]ÿcÿ\ÿUÿRÿKÿCÿ9ÿ5ÿ+ÿ&ÿ$ÿÿÿû õðïêæàÙÐÉù²¬¥Ÿš’ŽˆƒztnhaVNEC;0,$!  !(-:<AJPTZ`fjqz†Š”–›©±¹ÄÂÉÍÓÐÜãêíô ýüýÿ)ÿ,ÿ1ÿ7ÿ=ÿCÿFÿJÿSÿZÿdÿfÿqÐr_=•režvužm}‚r™ˆ…‚„’uypaŽ†ƒv{|{l[|‚‰ƒƒ‰we†i‚…sƒ…{st}|{„{{†Žu“ƒ|rŠ}‚lv~–‰€†sƒptv}~‚…‚†Žˆ{v‰€{Š‡~„…“}‡†mptmw}“zy€a†›q~zyŠnk€pf‹vzu€l‡Ž‡‡œz„x}p‚Œ}{b|y|„…|ˆŠu‡€uy|{rŒ~Žw†||Žˆ’tr…|y‡w|Šwz„w{yŒ–}r{}zw†q’x~€r{|qr–wˆ~jŽ{yƒ}’~ƒs„”‡‘}ƒˆ‚unys~wƒƒ|{†p”€}n„p|~z™‡y€u|†ƒƒŒe„t‚‚r{ˆŽ|Ž‰‚}yzzg‡t~~x{~‚‡g~„}ƒv~ƒ}{˜‰xŠym…}‚|€v†Žyxvw†z€sq|~|n‹}‡‚wq…w}…uˆ’px‚z‡‰xŒ‹}{}yo‡…oso…qˆv†‰zsopux}y‡yzsu€mtƒ~w|lcƒŽn‡~€Š|v||~xt„€w•~‘t…xw~…‡€{|{k|{z‹u~‚xyŒ€ƒxˆˆxŒy‚„„~‚wvŽ‹~uw~xn†tsflûn{ÿmÿÇÿ´ÿ³ÿ®ÿ©ÿ¥ÿ ÿ•ÿÿ‰ÿ…ÿÿuÿoÿhÿQÿ^ÿWÿSÿMÿGÿAÿ=ÿ1ÿ1ÿ+ÿ%ÿÿÿú ôíèäÞØâÏÈ¿À¹´­¦ —Ž„|unlb[WRG@B;2+" $+03:AHSQZjkv€Ž‹“˜§§°¶ºÄÍÔ×áåêñöùþÿ ÿÿ$ÿ*ÿ0ÿ2ÿ=ÿHÿMÿXÿZÿ`ÿiÿpÿyÿ}C©ˆržcƒ„‚x€p{œ‡‚Š{ug‡wƒu•p|t|zvm‰ˆ‚“wvŽ††|kv„ƒw‚€|†™‰~stt|oŠŒ’vp†…u{‹x{ˆ~‚€pˆ~‹{|z†v…vsf‰~{…‚n‡|lyˆnktty”‹{wˆ‰z‹pyqŒv„u‡gx„›†‹wu~„bw~u€€m€„qeqw†ŽŠ{w—‡}~ƒw„xƒŠr›ƒ‚x…€ƒ†‡d~u~ˆƒƒŠnmŠ}‹zx€„‰„z}rsŽmmyŠ~x‹zƒr‰{pŠjx{krˆm†qhœyvayˆŸzoŽ„…‰n†z{žƒ„‹‡q‚w{˜Š‹€zs}‰}‡}„|ˆ……{Š€v~uzx‘|…~ƒˆ‹v„~„€vy|x~„~‰‡‡}|rzmŠv{}n{zvƒw|xŠ‚r€ys‡|yˆvˆ™ywyyŽ}n…zw‚syxˆ|‡}xy„xw}pu„‹‘|€usƒ‹pq‰ƒwƒq€pw‚q‚~wzxolŠ†Œ|{xxq†Š‡„†x‡†tŠy}‡q‚‡ˆ€z~ƒq‚y†€‚y€uˆy|w…‡{†|u}…~€‡oƒ{vz‰€Œˆ‡t€„r‚z„‹u„n€sh›‚*ô†ÂÿÿÌÿÛÿÝÿáÿåûêöðñöíùçÿåÿÞÿ×ÿÒÿÏÿÊÿÅÿÀÿºÿ¶ÿ¯ÿ¨ÿ¢ÿšÿ“ÿŒÿ†ÿ~ÿvÿnÿfÿ^ÿXÿTÿMÿHÿBÿ=ÿ8ÿ2ÿ,ÿ)ÿ!ÿÿúö ðêâÞÚÓÏÉÅÀºµ­¦•‰‚}vng_XTOIE<71(# "&+/6<BFOV_fnw~€Š˜œ¢¨­³»ÅÉÏ×Þæìñ õ öüýi=—c˜†owƒˆ†~‚u~tw|~~€~|}|€„|‰{Švƒ|€~ˆ}tw‰vzyx{|z„v‚„}p…}‰ƒzv€vŽ‡‡ƒ~v}myv|}…Š~s{€ƒ‚…‰~„q„s‰zƒw€€}ƒt|‚y}~‡Š‚x}~~w…rŒ‚Œ€ux„{‰y}„‡|Ši{~y…y”‰u€p{Ž‰}‚…„€’‚…yƒˆ{|j…zŽƒy}“r|„€~zŽˆ†€zv‡‡‡x…x„xƒƒƒ{yurƒ|ˆ~ƒyw„ˆƒšŠƒ€€~t‚m‡Œ~€‚yy}xŠ€‹‰€yq|‚}Ž‚ˆz˜}t~dz€†~‚k{vfv{…ˆƒ‚‰{‡’o…ƒ~……v‚nk{oy|„rzx‡q‚}ƒz‹~{Œƒ‚…{ˆz‚wx€‡|u|q†€p‚u}‹…oŒysˆ~‚|yv}ƒ|xŠq}Œ…zƒ|€€u‰„…„}Šv‚„uŽˆy‚„uŽ„}‡•††€t€x€‹„„€~€t|…”‘x‚~€yt|Œ†zƒw„|‚~€„‚ƒ|~~ˆv~}‚|ˆ}z‚€{ˆ†…z~uŒt~~‚€‡}u‡}}†€z‹{…ƒ|~u{ƒpr“sŒâ¡PPKF@;62*$! #&+/6<@JSX]fov~†Œ“—ž¢¨°µ¾ÂÉÐØßæéîõ ùþÿÿÿ$ÿ'ÿ.ÿ4ÿ8ÿ@ÿFÿPÿXÿbÿgÿlÿvÿ}ÿƒÿ‰ÿŽÿ”ÿšÿžÿ¦ÿ°ÿµÿ½ÿÃÿËÿÔÿØÿßÿäûë÷ïôóð÷ëûçÿãÿÝÿÔÿÍÿÉÿÂÿ¼ÿ²ÿªÿ¡ÿšÿ“ÿŒÿ‡ÿ‚ÿ}ÿvÿrÿeÿ`ÿ[ÿTÿNÿEÿ>ÿ2ÿ,ÿ(ÿ!ÿ'ý ÿmЬ¤^šr‚‡|{|txzƒ‚y„rƒƒv~z|‚ƒ}xv€„€|‚w„ƒ||~~‚ˆ~|n~t†}|y–ukx}|†{‰‡v~…t‚z|“‹}‰s€zryˆˆˆnz‚€v{u€q}Œ€‰€v‡ˆ‰{kvƒy‚~Š…{‰|{{€‘†{wxvx~wƒ†x€€}y…‡x„†€‡|‡s‚‚yŒ„{…wƒ„}}……ƒ‹Ž„„r~rx†|‚r{tnq|‚r{so•wl€yyh‡‡ƒyz–~…‚€y”tuzu„|p„{’„€r|€|~y{{lw|‡Ž‰swz}{†|€…uv‰vyr}ƒ}€}Š|„p|}y{tz|vƒ~w{xw‚„y~€‚‚†x‰‚„ˆ€zo•„Šƒ{z…€~€|i{q‡}{Ž}viyz€†rtzxŽ}}vŠ~ˆ…|r…ƒ|†z~†j„‡~†„Œqztv…€~z}xˆ…{~‰|}|„|€…}zx‡u{r~€}Š{~v~‡ƒ…“}|ˆt€~„t€€„ƒ…Šx‚‹nz‚v‰uƒ~‚|{€}{n„zy|~ƒ…my~€†„{ƒ|‘z‹…v‚Œ„†‚~Š||zy|‚€~tŠ]¢ ñ½æîÿ¶ÿÉÿÆÿÌÿÐÿÖÿÛÿáÿåûë÷ïòôìúéüâÿßÿÙÿÔÿÎÿÉÿÄÿ¿ÿ¸ÿ´ÿ¯ÿ§ÿ¤ÿšÿ”ÿŽÿ…ÿzÿtÿmÿdÿ]ÿSÿOÿIÿDÿ?ÿ:ÿ4ÿ0ÿ(ÿ"ÿÿÿù óîèßÞ×ÏÌÆÀ»µ±«¡œ“Ž„zpnf_WRMHC=80)# "',15;BJQX`hpv†–›¡¦­²¶½ÅËÐÙáçå üÐ(U] c’…†yy†xy‹u}{y{‹~v…yu‰“|y…x|Š„i|y~„~s{}{‹{–Š}{†w‚}r‡zƒŠ‚}xwxƒ†y|…~{y{~w†z}†ƒxzw†€Š†{m{z…w€‰}€{|uy‚‚nz{u…~}€ƒ…|Šv—}wtwwy‡…‹‘}z~€m|x‚{}€yyzy|{€‚}}w{ƒv‰|„{€{€vŒwu~zyyz€€…lf†y}†rx~o‚v|~v‰ƒ…ˆ‡…Œ}y€x„‡‚~€~pw†w~„ˆt|Šo‚ƒw„€{ƒp†d~ˆz…ˆ~yms||…ƒvzw•z}„|~‡„†„v~ˆ{||Š{~~{w~}Ž{‚€…Š|}†„z}|€|†ƒw‡z€…s~w‹€‹r|‚ƒyƒuhvƒ‚{‰€p‡‰„}~yƒˆ{’|„…{t|zzŒ{€…€}|†t|ƒ}}‚‚{v‚{‘z„”‚Ž{{‚zƒ‚‚‡zƒ|…ƒ‡w}x|‡v~ˆƒk‚ˆz{}vˆw€|„†v‡€q{‚„‡|m|z€…€…|‡‚‡’rŽ~y…‡t€~†|–v‡€‡ppwq‚…x†~yŠt‰tvy€ˆv{ž IÙ ö¯ÂÄÈÌÒÖÝâåëðöúýÿÿ ÿ'ÿ,ÿ1ÿ6ÿ;ÿ?ÿEÿLÿSÿXÿ]ÿgÿmÿuÿ}ÿ†ÿÿ“ÿ˜ÿŸÿ¨ÿ­ÿ´ÿ¹ÿ¾ÿÃÿÈÿÎÿÕÿØÿÝÿåûêóóï÷åÿãÿÝÿÕÿÑÿËÿÇÿÀÿ¼ÿ´ÿ°ÿ©ÿ¥ÿ›ÿ’ÿˆÿƒÿsÿpÿlÿbÿ^ÿXÿRÿMÿGÿCÿ>ÿ6ÿ/ÿ'ÿ#ÿÿü ô òíçâÝ×ÑÏÊþ·­¨ž˜‘‰€ypkf`\UPHB:3,$ !$)08ADNVZdmv{‚‡“˜ £¬³ºÁÅÐÖÝãçíñ õ úþÿÿÿ%ÿ-ÿ1ÿ6ÿDÿHÿRÿXÿ`ÿfÿlÿsÿxÿ~ÿ„ÿŠÿ‘ÿ•ÿŸÿ¦ÿ­ÿ·ÿ¿ÿÆÿÌÿÒÿØÿßÿäýèúí÷ðòõíùæÿâÿÝÿÕÿÍÿÈÿ¿ÿ¹ÿ±ÿªÿ¢ÿŸÿ˜ÿ“ÿÿ†ÿÿyÿtÿlÿeÿ^ÿTÿMÿEÿ>ÿ6ÿ3ÿ+ÿ'ÿ"ÿÿÿýø +òëçàÚÒÌÃÀ¹²­¦¢š”ˆ€zmh`WRJC<61-'% #(16=BGLRY]dlsy‚‹”™¢©°¶»ÀÅÊÎÖÝáéëò +÷þÿÿ%ÿ)ÿ-ÿ5ÿ9ÿ?ÿDÿIÿOÿQÿYÿdÿiÿuÿ~ÿ‡ÿÿ“ÿžÿ£ÿªÿ¯ÿ´ÿ»ÿ¿ÿÂÿÊÿÑÿÙÿßþçþçôòïøëûåÿàÿÚÿÖÿÐÿÌÿÇÿÂÿºÿµÿ¬ÿ¦ÿÿ”ÿŽÿ…ÿÿ{ÿkÿvú¶‚u™fq€wŠ€€‡ly€„zƒx||„„rsu„‚†ƒ}x|€€Ž|€z}‰€…Š‰x€‚„‡}}‚m}ƒƒŠy†v|Œp…†€‡w„q€Š‚Œ…|yw†h‚ˆˆ…~{ˆvˆz„z~€z|ƒ…yw}w~~…r‚xv}p€‚ˆz|ƒw}vyƒ{x|u€yptŠ‰ƒ||‚ˆŽ„€ŠpŠ‚~„…z•x—{z{‰ŽŠoŠx~…ptƒsƒ†}‹k†„u‹uv†„yr…uq}x~{€€…‚|…ƒƒ…‹|„wy‚„zo~ƒ~{z€~}€„w„}{vwyw‰ˆ€†w}xyˆ„‰‡z{…}‚Œv‚j~€ƒ‰u~z„t}|t{‚}ˆƒsxqxŠx{–y„w‹‰€tŠ||{q…€}{~zuz„}ww€n„ˆ|Œ|t}|‚…~~‡{w€s~v‚|w€‰~Œ‚|‰ƒƒ††‡v‡|}Œ}hƒszhvvŠx}„|‚yx~{|||‡~prlƒ†x‹s‹ƒ„uŒ„syz}{py}}|qˆ‹ƒ|}}x}„{‰†ˆ‚yy‡~|Œ|Ž…z~ƒw„ƒ}€wˆxj†rŒ‹’xŒ€ƒ}„m‚t{~ƒ†ˆ~y˜‰~Š‚|txƒyŒtz~Z¦&ÿ)åÇØ×Ýáæëîó øüÿÿ!ÿ&ÿ,ÿ0ÿ5ÿ:ÿ=ÿDÿIÿPÿVÿYÿ_ÿfÿoÿwÿ{ÿ†ÿŒÿ“ÿ™ÿ¥ÿ­ÿ¯ÿ¸ÿ½ÿÃÿÈÿÏÿÓÿØÿÜÿáÿæùíõòíøæÿãÿÜÿÖÿÏÿÉÿÂÿÁÿ¹ÿ³ÿ®ÿ¨ÿ¤ÿšÿ•ÿ“ÿ…ÿ€ÿyÿpÿiÿaÿYÿQÿKÿDÿAÿ:ÿ6ÿ0ÿ,ÿ&ÿ ÿÿýöðêäßÚÒÌƽ¶²«¤”…~wpg^VPKEA<72-Ew^Œm]…{‚‚~‚Šƒn}u|x‡{vtyq}~tiw}}ƒŠ}†ƒuxr†}€†|t‚v}€~„ssƒ‡„~„x…Ž~ƒ||}ƒtz‘„~|u|xz…v˜t‚ˆz~Š‹ŒnŽ…t‚}u‰rz|Š‰yt~~po…ˆ€|zy‹~…ƒv‡ƒ{ul€{„‰~€ˆx}z„xƒ‡}uu‡†y‡y|…„…‡zz~ŒyyuŽƒˆyxy|„xŒ‹v}x~Š|{„„†{ƒƒ€|ƒx„vƒ}vzƒ|~Š‰‚{zxy‰‡ƒŒtˆ‚„|‰|„‡…y}v‚yˆ‘„{}zŠ€€~Š‡|…}„x€‚}‚„|z‚‹||„~Šƒ„†x‚zyv‡v†‹uˆw{x}|Š‰sƒf}~~„x†—†|„Œ~v‹zs”}€w‰uu†ƒ‚‹zy…‡™}‡yŠzu{‚‹ƒ„u~w€}w‚z|}|„}{u€~}{…ˆ’}†|xƒ~}ƒz†zƒ€‚†…†s‚z†‚z{ˆm~oxƒ~x}”x‡a{~…€}€„ˆ†cŒƒ€‡u„ro}}‰†|†j|„…€‘ƒ„ƒv{|{Š{ˆ~‹}‹yr„}‰†‚ƒ}y}‚‚yw~uƒ‰ppҍqÿŒäèâàÜÖÑÊÅÀ¹³¬§¡›–Šƒ}zrjd\[RKB;34)  #(,;<EKT\chmty€…Š‘˜£¤®·¾ÄÊÒÙßãéìðó ùýÿÿ ÿ$ÿ.ÿ7ÿ>ÿFÿLÿSÿ[ÿaÿhÿmÿsÿxÿ~ÿ„ÿŠÿ‘ÿ—ÿ ÿ§ÿ¬ÿ¶ÿÀÿÇÿÎÿÒÿÙÿÞÿâÿçûìøïôóîøéýãÿÜÿÖÿÏÿÆÿ¿ÿ¶ÿ°ÿ®ÿ¦ÿ¡ÿœÿ–ÿ‘ÿˆÿ€ÿ}ÿtÿmÿcÿ\ÿYÿUÿFÿAÿ8ÿ3ÿ.ÿ(ÿ%ÿ!ÿÿüø ôðèåÜÓÌþº²­©¡ž•’Š„}qjc[SNE?:4/+%! +$+18>CHNSX_hos}„Ž•œ¤¬²·¾ÁÇÌÑ×Üâéïöýÿÿ!ÿ'ÿ-ÿ2ÿ8ÿ=ÿCÿHÿMÿRÿVÿaÿhÿrÿxÿÿ†ÿ‘ÿ—ÿŸÿ¦ÿ«ÿ²ÿ¶ÿ¼ÿÁÿÅÿËÿÒÿ×ÿÝÿæúìöððöéýäÿßÿÚÿÕÿÏÿÊÿÆÿÀÿºÿµÿ¯ÿ§ÿÿ”ÿÿ…ÿ}ÿvÿoÿiÿfÿ]ÿWÿQÿKÿFÿ?ÿ;ÿ4ÿ-ÿ&ÿÿþù ôîéãàÚÕÑÌÆ·´ª£ ‹Š…|unhd]WSMF?:4/& !&*/4<CNT\fjrx€†‘˜œ¢©¯¸»Î° +CeŒa™{|…{|{yr€€‹†€†}~z{px‹z€tx{x„–~~{{‡{~ƒz„‰ƒ|ƒ{p…€}‡„†w„v„y‚‚€†‡pw{{…‹~Š‡ltx~„‚€„…‡ˆƒrs‚|y‡w‚}|‚‚|†€uˆx‰…y}Š‚|†|n€qr~€‹†pzu†™zw€ƒŠ}€zj}ˆ†uy„{mo|{‘|y…}‡ust{Š„{zƒ…yŒ€xˆz}{‚ov~€ˆzz†|ƒƒ}‡…ˆƒ‚†|}ƒ€}|‡‚…€€~€w}…}z„‰{xk„v}ƒz‚Šs†{z}t|‡|ˆ„…‡Žt€x‚‰pƒz}z…oy‚|xw‹†Šx‹ˆ‰ƒ‡y{~|…rywx}|{yŠ|~€~}Š€‡zxw}†}{ƒyƒ€}q‡~|z†ƒ~„†|yƒ}x…~…xu}su€€€†‚~ˆ|axwvŒ~‹yuuw~Šyƒytƒ}‚…‘‰…y€k‚~†‹}Œˆy~n~x{Œ†|w’‚’|uy|v„}q|{wŽ‹‹†‹|t}†}“Œ{{sqƒ{y…u‚„~ˆŠ‰y€qxŠ…†|…€}}z‚„‰Œ}|{€~x}|~Ž{…ƒttˆ„@÷z…ÿÞúãÿäÿßÿÚÿÔÿÐÿÌÿÃÿÃÿ½ÿ·ÿ°ÿ©ÿ£ÿžÿ˜ÿÿˆÿ„ÿ~ÿtÿoÿfÿ_ÿZÿSÿOÿIÿDÿ>ÿ9ÿ5ÿ/ÿ)ÿ#ÿÿÿø ô +ñêäÝÙÓÍÈľ·³­§¢™“ˆ€zoic]TNHD?:5.)$ $+15:AFJNV`dlv}†“œ£©¯´¹¾ÃÈÏÔÛáèìò +ùþÿÿ$ÿ'ÿ,ÿ2ÿ6ÿ<ÿBÿEÿPÿSÿ[ÿcÿjÿvÿÿƒÿŽÿ“ÿ˜ÿ ÿ¥ÿ«ÿ®ÿµÿ¹ÿÀÿÇÿÎÿÓÿÙÿâþæøíñõìúçþâÿÞÿØÿÔÿÎÿÉÿÄÿ¾ÿ·ÿ±ÿªÿ ÿšÿ“ÿŠÿ‚ÿzÿsÿmÿgÿaÿ[ÿVÿPÿKÿEÿ@ÿ:ÿ2ÿ*ÿ%ÿÿþù ôðêåàÜ×ÓÎÇú±¨¤œ•‹…{vrje`ZRMIA95+$ ",,18?GOV[eltz‡“™¤¬±º¾ÅÎÓÚâçíó +õ úýÿÿÿ#ÿ,ÿ/ÿ3ÿ:ÿEÿNÿUÿYÿdÿkÿqÿxÿ}ÿƒÿˆÿÿ•ÿšÿ¡ÿ©ÿ±ÿºÿ¾ÿÃÿÏÿÔÿÜÿâþèûìöñòõïøêýæÿàÿÝÿÔÿÉÿÇÿÂÿ·ÿ±ÿ§ÿŸÿšÿ•ÿŽÿ‰ÿƒÿ}ÿwÿoÿmÿfÿ_ÿWÿLÿEÿ@ÿ7ÿ3ÿ+ÿ%ÿ!ÿÿýúö òìéãÝ×ÎÉ»³ª¢›•Œˆ{umh`VMGE,bf«nh‚x‘|‚ƒvŠ~vyx€|}y‚‚z€„w†z†}v~{†~‘~‰{…z€~‚‹vx€‚‹|…†zƒy„u€}†uŽ{}‚ƒ{€ƒ{|‡wz„……m~y‚Šzw‡zxƒxx}y‡w…v‚w„~xƒzŠ}t…v‹‡…„|zwwy€Œ…„~‚}…}w€z}‰‚‰ƒ‡u‡yƒ{~~‹…†rwo„€‚ywz}uu~ƒ‰†z}ˆ~x„‡|Œ‹t‡‚zzs€„‹|{€}}€w…y|}‚‹yur‡rwro‡‚yy‚€‘y€vƒ„Œzy‡v~„…Š}‰„Ž~„x‡€xŠpˆv€}†‚yŠt€|oƒ…~„…|}v€~Š|}†~ƒƒ|†zz…Š|„‚zzyz„{„‰ƒƒs„uy|Šx~{}‡z”x†z‡‡…‡‚‚†€}|yv{w|x„‚ƒ~v‚€{Šu††„{„ƒz†ˆ{‚Št~w}’‡ƒ††{}sxv€u‡€y‚ƒ~Œ…‰~{‡y‚vw…r{…zr‚|‰~z}€€|Š|z€sy†wq}‚x{€}~z„‹ƒt‹…{x‚y‡~}q…z}vw~ˆ†‰†zlο9áƒßÔÙÑÍÆý¶²©¦¢š”’‡„{skgb[QIDA84.)%  &*3:AGLTZ`dknuz‚‡›£¨°»ÀÇÎÒ×Üàæéíò +øþÿÿ!ÿ(ÿ1ÿ7ÿ?ÿBÿKÿQÿXÿ]ÿbÿiÿnÿsÿzÿ‚ÿ‰ÿ‘ÿ–ÿÿ¨ÿ°ÿµÿ¾ÿÁÿÊÿÏÿÓÿÙÿÝÿâÿæýêöñóôíùäÿàÿ×ÿÒÿËÿÄÿ¿ÿ¸ÿ²ÿ¬ÿ§ÿ¡ÿÿ–ÿ‘ÿ‹ÿÿxÿtÿnÿgÿ[ÿRÿKÿCÿ<ÿ7ÿ1ÿ,ÿ)ÿ#ÿÿÿþ÷ ôíæáÜÕÍÇÀ¹³®©¤ž˜ŽŠ‚{ul_ZUNHB;51,(" +$*/6:@GLRW\ckt{Š’šŸ¡®¹½ÂÈËÒÔÞâçìñ öûÿÿ$ÿ*ÿ0ÿ6ÿ;ÿ@ÿFÿKÿPÿWÿZÿcÿiÿqÿyÿÿ‡ÿÿ•ÿžÿ¥ÿ­ÿ³ÿºÿ¾ÿÃÿÈÿÍÿÓÿ×ÿÞÿãþç÷ïñõëúåÿÞÿÙÿÓÿÎÿÈÿÃÿ¾ÿ¸ÿ³ÿ®ÿ§ÿ¡ÿ™ÿÿ‹ÿ‚ÿwÿoÿkÿbÿWÿZÿSÿEÿCÿ=ÿ8ÿ2ÿ.ÿ&ÿ#ÿÿüù +òëåÞØÕÐÊÅ¿¼µ°©£›‘Š„zsnf^XQKCB<61-$ #',16<@ENRWals|…Š‘— ¦¬±µ»¹ÑnN\`—aŠy‹{w}{u‡ƒu~wvzƒ€{{|€|z~|†zvxyxy€}ˆ‚…{zr{~‡xx‚‚€‘yƒ‡’~‡}yƒh€{‡wt‹x†ƒc€}t}ˆ…‘€—†…ˆƒroˆ€‹{ƒz„t{uz‰ˆ‚|~y„‚yu†‡„tŠvz‡ƒ}ƒ}„…‡z‰xŒ|qz||}…{y}zˆ}y…xŽŠ|Œ{„…‚xƒ|„‡†ƒxˆzŽps†z~{y~x‚ˆŠ‰zˆ…‚Œs||ww‚~‰Šxxry’|xxx€vˆx–‚~„u‰|~|ƒ}Š„†‚ƒxƒvƒ|€ƒ}„†xƒz~†ˆ€…‡|~~…}~‚†€€v†{w„t{†{€……‚‚}š~x~z~zƒvs†}|x{vƒŽprxm‚‚yˆ€~‹‰—‘t‹}ƒ|ƒ|t‚€qyŒ{Š„mŠ~‡ƒ~}Š„Š…ƒ‡{yrv…‹‚ˆ„s…||„ju†|Š‚}wƒyy{†€‰…Ž‡‰€r‡‚„„vŒy|{„€|w„u„†wy€ƒw…o}|uz‚}yz€x€„|„yy†{ƒ—‚|…uz€ŠfŽr{…z‡‡„x‰ˆ„s€|xx||m‘…ys}†‰y‚‡ˆwŠ‚„uŠwŠƒu‚”!JÈÿgëúüÿÿÿ#ÿ&ÿ,ÿ1ÿ7ÿ=ÿAÿHÿOÿTÿZÿbÿeÿlÿrÿwÿ}ÿ‚ÿˆÿŽÿ”ÿ›ÿŸÿªÿ¬ÿµÿ¼ÿÃÿËÿÏÿØÿÜÿáþèúìöñòõïøêüçÿáÿÛÿ×ÿÎÿÌÿÃÿºÿ²ÿ«ÿ¦ÿ ÿ—ÿÿ‹ÿˆÿ}ÿzÿrÿmÿgÿaÿZÿSÿNÿDÿ;ÿ6ÿ.ÿ'ÿ ÿÿýù ô ñìèåßÚÕÍÆĵ°¨¡š“Š…€zuojc^XRIA81,&! "'.5;AKQX`insy…‹“–ž¥©²¼ÄÉÑÕÜäéíò +ö úüÿÿÿ"ÿ-ÿ3ÿ<ÿAÿJÿQÿYÿ]ÿgÿlÿqÿxÿ}ÿƒÿˆÿÿ–ÿšÿ ÿ©ÿ¯ÿºÿÂÿÇÿÎÿ×ÿÚÿáÿåüêøïõòòöíúèþâÿÞÿÔÿÐÿÉÿÀÿ½ÿ³ÿ«ÿ£ÿŸÿ–ÿ“ÿ‹ÿ†ÿÿxÿvÿnÿgÿbÿXÿNÿIÿAÿ9ÿ1ÿ*ÿ&ÿ ÿÿþû÷ óíéáÜÖÑǼ²¬¨¢š”ˆƒ~vpjUZQLCB5.+$ %)1:@IQV\aflsy}‚‹“˜¢¨±º¿ÊÑÔÙååçëò +ñ öýÿÿ#ÿ*ÿ0ÿ:ÿ?ÿFÿOÿTÿYÿ^ÿbÿjÿmÿtÿÿ†ÿ‰ÿ‘ÿ’ÿ¡ÿ¡ÿ±ÿ·ÿ½ÿÄÿËÿÑÿÖÿÖÿßÿäþèúìõòñöíùìúÝÿÙÿÑÿÊÿÉÿºÿ¶ÿ²ÿ¨ÿ¤ÿÿ™ÿÿ‘ÿ|ÿvÿ}ÿsÿiÿ`ÿ\ÿPÿ¤¨–iƒ}iŒ‡Œz{€…v„zƒ‡yŒ‚†sy{rƒ|~v…{|…€Š|n„y€zŠ‰ƒ…‘„†wƒ‚|€‰}tv|„l††‹d{…zx€†movu€|‰‡uxƒŒ}‹†mz€‰…Œwxz‡|zŠwq„|z‚}w†ypnz|w{|†…r“s‘“xxƒ‰‘qp‚{}yyv‹ˆ…}yƒ}x…‰u}x~†z‚€z‰‡t†xr‰~ƒv„Š…€mt|…~Œ€Œ‡zŠƒ‡zŽƒ’ƒ}˜}‚ƒ‰‹„|q‘yzyp†Š‚†{dv†‡uƒŠx}Št‚j~‚xv‚Œ—t|v{t„‰t…y‚†u†€‚nsv…t|€~ˆpyquw}sw~z}|‰‰~wy„{ƒp…‚ƒswvyˆ€Œ}zt‰p‰w„„ƒpnz}„st„€w}}†trxl‰ˆvŒv€ˆopxxŽbˆ‚{v„|‹{}™yƒƒ„‡y‚}|Šh{~ˆƒx–‚‘ƒ~rŽ…zˆi—Œk…„~‰{{frq~…|ƒ†{b†|{z}|pŠ„wx~|Œ‚vtˆy‡zt}†shy†yuzu|‡}x‹Œz‰‹†v…|z’}€…ˆ~‡z|…p}xƒ€qƒv‰yJí¡LþëHÿ<ÿ7ÿ7ÿ-ÿ(ÿ&ÿ!ÿÿÿþö òïìãáÓÎÐÉ»¶®ª£›’‹…|mkld^YRLF=3.(,  $(.5<DRU\`how~†”™¡¥°ÀµÂÊÍ×Þáèîñ öûþÿÿ"ÿ(ÿ)ÿ0ÿ8ÿ<ÿ:ÿNÿRÿYÿcÿlÿvÿyÿ€ÿ„ÿ—ÿ•ÿ–ÿŸÿ¥ÿ§ÿ°ÿ¶ÿÂÿÇÿÏÿÍÿØÿâÿåúìöñòõíúéýåÿáÿÜÿÕÿÐÿËÿÃÿ¾ÿ²ÿºÿ¥ÿœÿ–ÿŽÿ‡ÿƒÿ~ÿxÿsÿiÿaÿ`ÿXÿWÿIÿ9ÿ>ÿ4ÿ2ÿ+ÿ,ÿÿþú õ ñíêäà×ÐÎǽ¸³§¡™’‹„ztngd]UOE@81'' +#(/3<BMSZ_gou{…Œ‘•ž¥®µº¿ÉÎØÜáèìñõ øüÿÿ ÿ$ÿ*ÿ3ÿ5ÿ@ÿIÿPÿWÿ_ÿeÿkÿvÿrÿzÿ…ÿ‰ÿÿ”ÿšÿ¢ÿ©ÿ²ÿ´ÿ¾ÿÈÿÍÿÔÿÛÿßÿæüëøîóôð÷ìûèþäÿÜÿ×ÿÓÿÉÿÄÿ½ÿ³ÿ­ÿ¨ÿžÿ™ÿ’ÿŠÿ†ÿÿxÿuÿoÿiÿaÿ[ÿRÿKÿEÿ>ÿ6ÿ.ÿ)ÿ"ÿÿÿûø óïìèâÛÕÌÈÁ¸¯¨£š“ˆ‚~wske[WOG@94*%  '.4:BHOY`drM‰ho›{~’n‰{q‹‡w~|}z|~†r†‚yƒ~xƒ}v~zŽpv|€tŠ‚‚†n€wl|€z‹|‚|„xˆ„w†yy…|„yy{{{|„}„†y„vŠwˆ‚t€|xw‡~€zt|„‡†}Š~€‡l‡zy„z~‚‚w}„{„u€ƒ€‚w‚‰y”|‚†z~{yxzƒ{x€rx‹~}„†~~~ƒ}ƒ‡s…{x„|z…~ƒˆ}ƒ~}‚ƒ€ˆsŠz~Š~ƒ|…yx„†w‰w~}{€‚vŽ€„‡|€†yƒ|‚‚‡~y„r{‰|†…}‹y}‰„uwxŠ‰~q~tvw|€|ˆ|…|v||€€†‡Šƒp€wˆƒ‡ry{‰ƒ|‡Žtˆ}rx’†uŽs{†„„„~n„€v}vv|}’Œu€{}x‡ˆ‚…x‚~~|†v†‰zŠ…r‡vy‚{‡‡{v~py~zƒŒ‡‡yzw‚€†€‰{†‡ŒŠstyyx~…o…ux‡vx|ƒŠp…j‚z{‚x‹ƒxiy|‰vk†€Œnzu|„vx†€†u€z‚yu†uŠqtpuu’q~y|…y…rt‡rwƒxŠƒqƒ…x}~xƒ€‰‡r‡{}|w€€~‰ƒzw}u€{Œ“TaË ûóÿ¾ÿÿÿšÿ¤ÿ¨ÿ°ÿ´ÿ¹ÿ½ÿÅÿÉÿÏÿÔÿØÿÝÿáýèùíöððöëúåÿÝÿÚÿÓÿÎÿÆÿÅÿ½ÿ·ÿ²ÿ¬ÿ¦ÿ¢ÿœÿ–ÿŽÿ‰ÿ„ÿzÿvÿkÿdÿ^ÿTÿJÿFÿ@ÿ8ÿ4ÿ.ÿ)ÿ%ÿ!ÿÿþù÷ ñìæÝÙÏÉÅ¿·±ª¤Ÿš•ˆspc_YND?95/*$   +"&-3;@GPT[_ekqyƒŒ”ž¦¬²»ÀÇÏÓÙÝáæêð ô úþÿÿ%ÿ,ÿ2ÿ;ÿAÿGÿMÿRÿXÿ^ÿcÿjÿnÿuÿ{ÿƒÿˆÿ‘ÿ˜ÿ¡ÿªÿ¶ÿ¶ÿ½ÿÄÿËÿÐÿÔÿ×ÿÝÿáÿæûëõòï÷ìúæÿÝÿÙÿÏÿËÿÆÿ½ÿ·ÿ°ÿ¬ÿ¦ÿ¡ÿ›ÿ—ÿÿŒÿ‚ÿyÿrÿmÿeÿ\ÿVÿOÿEÿ<ÿ8ÿ2ÿ.ÿ)ÿ$ÿÿÿýù ôðèàÙÒÎÈÄ»´­§¤ž™”‹…~zrj`XOGB;82,($ !'+19?FLRW\bgpv{‚‹“›¤ª²º¾ÄÌÐÕÚßáêîò +øþÿÿ!ÿ)ÿ/ÿ8ÿ>ÿEÿJÿOÿUÿ\ÿ_ÿfÿkÿqÿ{ÿ|ÿ†ÿÿ˜ÿ ÿ§ÿ®ÿ¶ÿ¼ÿÀÿÈÿÌÿÑÿÖÿÚÿßÿäýéøîòõëúèýâÿÚÿÓÿÌÿÅÿ¿ÿ»ÿ³ÿ°ÿ¬ÿ¤ÿŸÿ˜ÿ”ÿŒÿƒÿÿvÿnÿfÿ^ÿUÿLÿJÿ@ÿ:ÿ5ÿ0ÿ,ÿ'ÿ"ÿÿûø÷ ñêãß×ÒÉƸŽµcœhmŠ}‹’yˆŠv…|ˆ{…x‰|{„€—Œ}€~yƒ{tˆ„†‡zŒx{qv}zz‰ƒ‰†uwˆƒ{ƒ|ˆzl{ƒ‰‹{•‡€„‡}ƒ{{|dŽq„qŠw|‚n€‚{†‹|{~zu…ƒ~„ˆˆz~Œ|„~ƒ„|†w‡y‡x‡‡‡y}}Œ‚{€|~~{~w}„€…}{…z„{‹y‹‚u„{}~€~”|ƒ€……z|q|‰ƒ…€ƒ€sƒŽx…{„x‰z|}™u„„{Špr‚vtŽ„{‰€„}i‰{•„npvˆs}‚€„ƒu|y‚v~uŒ‡Œ€{x€u{ƒsŽ|ˆ„{€~z„~ƒ‰„†|~‚…|x‚m}„…|qvw~ƒ|yˆs|ƒƒv{~pu~u‚†|…{|€xˆ€‹zvŒx„’ƒ}ˆ~€‡„}|x‚z}‡‚y~uz€|sˆuŠ„v€vƒ~|~‡Ž‹‚€|‹|r‘{yŒu}€w€ˆ|Œƒ€|w†Œ|€|‰|„€y‰€~’€ˆ…†~†t|ˆ€†…{y{t‹{vƒxzƒ‚ƒr}„vn€{z†zŒxxŽƒ„€s‡s~…y†}€~sz{{‹z€ƒ{t~}‚syv‚yy}|tz~b•|”ÿz‚¹¬«§ ˜—‡„~wqje_VPLFB81+'" + &-6<CIQW\dmsy~ƒ‰–›¡¤­¶¼ÄÏÕÚßæéîó öúýÿÿÿ&ÿ-ÿ1ÿ9ÿAÿGÿOÿZÿ`ÿfÿnÿuÿzÿ€ÿ†ÿ‹ÿ‘ÿ–ÿœÿ£ÿ¬ÿ´ÿµÿÀÿÆÿËÿÕÿÛÿàÿçûëöñôóïøêüçÿáÿÜÿ×ÿÓÿÍÿÅÿ»ÿ²ÿ­ÿ©ÿ£ÿšÿ”ÿƒÿ®”¨Že˜x|ˆypƒtzusv}€‡ru€w}wz‚x~~‡~{x~Žwp{w†ƒ…q…}|‰s}|ƒ‡€|l|ˆqŒx{{‡~‚†‹~Ž|~ˆx{‡„…|†€~wš~Š‰|}~……qupy…|ˆ†„z–‡w†„ƒŠ†€pm~~……{v}€‡u‚‚ŒŽ‹w~Š~vƒˆq||€{…‹pfvuwz{~xvw„vˆyz~}zˆpƒƒ‚{}}wˆq†|ˆ‰‡‚~†‹x{|„€w‹{ƒzŠk‚ƒs€ƒ}‰xp„{‡…‚…‡ˆ„s€ƒ‚ƒ‘ˆ„uw‚‰}|…€ˆv}…‚ƒ}|„…†~z†k…{€w{wnŒ€}w€‚Œ‡}r|{‰y„y€wtƒ„€‚†Ž}~w€ˆ€…{‡ƒwz‡{„†|…ƒ}†{…t‚z‘~~y|†k}}ˆ‹ƒz{†st‹mu…z~€ƒ‚zywzŒxu†|p…r|…z~|}{†…vˆ~‚v€xuƒŠ„xƒr‚†|†v‡rx€ƒstz|ƒu{~ƒ‹Š‚|Ž€Ž„yv€ƒ~o~s‚€}{…zyx›y{ƒ|‚{u}‹„~{|}s†y‚…|€‡†n}Ír©úÏ7ÿ:ÿ7ÿ4ÿ2ÿ,ÿ%ÿ"ÿÿÿù ó +ñîèäÛØÔÌž¹³¬¨£š–‘Œ„€vrjb]TKFB93,&! #)2:@FOV]ainsy~ƒ‹–Ÿ¨®·ÂÅÎÓÙÛãèëïó ÷ûÿÿ!ÿ'ÿ-ÿ4ÿ8ÿBÿHÿQÿWÿ_ÿeÿkÿqÿvÿ|ÿƒÿ†ÿŽÿ“ÿ›ÿ¥ÿªÿ²ÿ¸ÿÂÿÊÿÏÿÕÿÛÿÙÿí绶[¢”vŒzw†s…–Žƒz‡t~}‡‰…‰|}„€z|…r‡ƒ}ƒzˆ‚}x€Š„Š}—‚‚~}sŒu…ˆ„~}„€|—‡y€„€}€„|qoƒ}{€{~‚‹‚y‡q„|tyn~}‹uvzxr“s‚ƒ„vp~|‚’‡‚€q€}{uŽ„|}€vŒ}}}yw‚‰|„}€}€‚|Œ€Š„‰~‰x„up}‡€‹vzt‘Ž~„ƒ†{yŽm‹v‡|m‹…‹wyy„xzx‚‡‚z‰†z~}y‡„„‰‰„€f„}{„wy~€{yr‹ƒ„{xƒy–“|€wz€ˆ†uz“{”ƒƒw…y‚v€s}€yz}}„w‡{}ˆ„„ƒ|}|€{‚‚„}rƒvŒx}…m|…m‚{zˆr‡˜{„{wŠ„|‘‡Œ“w~‡Œ†‚o||„ww{‚„w‰zwƒ‹ƒ}Œ}~uw{xy}ƒ|„}‚†‡€rŒz{‡}‡†pz€|xŠˆƒˆŽw{x{“Š|ztkƒ~„ƒz‰~ƒ…l}zƒ}…„…‰†y‚„wz‚x……‹‡…€yy„{€ƒ‰{„yt‡x†„‚‰ys…ytƒ}†’xz{xf„‚ˆ|…v~‰{ˆ€‰‹zvvŠb˜‰þ¤ûæÿŒÿ ÿ£ÿ¥ÿªÿ®ÿ·ÿ»ÿÀÿÆÿÉÿÍÿÖÿÙÿßÿæÿçøîóóîøêûåÿßÿØÿÓÿÍÿÇÿÂÿ½ÿ¹ÿ²ÿ«ÿ©ÿ£ÿÿ•ÿ’ÿˆÿƒÿzÿrÿmÿeÿ[ÿRÿJÿGÿBÿ;ÿ5ÿ1ÿ+ÿ)ÿ"ÿÿÿûö +ñëåÝÖÐÈÄ¿·°¬¥¡œ•‘…zshdZRLD?82.+%  + #*27;CIOTY_djqz€…‘”ž©¯²·ÃRS{V™rrk†Šz~tj„Š{„†x‹yŠ|xyw‚„†ƒ}yx‚rrƒŒ„|~ƒyrtˆƒ|ƒ}’~zr}{ƒz…|€|‡|†€|€xy{ƒ„vvr€†‡”‚{†~…‡zqk‡ƒ‹€ux€v‘{{…|ƒpzj€€y…Œx…‰y}qyˆ€~ujˆ{‡†‡{z‰~~‰ƒ}‡vy„–‹v}„y|Œxƒ~‚€‹‚ƒ|lŒr{„x’|Œzuxu|…w‰ƒzmeˆz}†…‡jpz}‰†Œ†„€yiz~}w~„ƒ‹‰†‹€ƒŠ‚}ƒn‚w~Ž~|x~‡x„{‹zy|‡|‚~n‰ƒ‡‰ƒ}wv|†z‡w}~‚z‡u}„{ƒ~j„t}…yƒt{ƒ…iu‚‚€wƒ‚{„i€x~wx†|o“ƒŒ~}~‰}…–|ˆ‡u‚ƒŒ€vrv|x}yqxy€ƒnwzw„~‰}}„|‡‰}‚~~Šx€~”~zx€~Œn}z{†}z{‚q|t~x€y‚„sqv{€{~zƒ‚~…{…yŠu‘sƒƒ‚~‹t„r|z{~€‚n{||~‚xˆ†…x€†{z~~…ˆv|ƒy‹y{…w}€v‚}mˆ†~ˆz…y|‰z‘~z ÿ2ÂÍÎÓØÝäæìïô ÷úþÿÿ$ÿ*ÿ,ÿ/ÿ;ÿDÿGÿKÿPÿZÿ`ÿjÿoÿrÿ{ÿ~ÿ…ÿ‹ÿ‘ÿ˜ÿÿ¢ÿªÿ±ÿ¹ÿ½ÿÆÿÎÿÓÿ×ÿßÿæûëõòòôîøêüåÿáÿÝÿØÿÒÿËÿÆÿ¿ÿµÿ®ÿ¦ÿ ÿ™ÿÿ‹ÿ‚ÿ|ÿxÿqÿmÿgÿaÿ\ÿTÿLÿHÿBÿ9ÿ4ÿ+ÿ%ÿÿÿû÷ ñíéæáÝ×ÐÐż¶­§—Ž‹„~xqlgaZUMG=62)"9Rbœwr‰†€‚rx‚}€|€†z|ƒv‰|z…zyzƒt€„t‚†uƒzƒwv}…}{‡xƒ€}~|„‰xˆx}•qxƒxz…€yŒˆ}ˆyyƒvxxƒthqz…ƒq~|vu‹…Š{€}„xƒ”†…|ƒ„uƒv~†y‚‚†~…Šˆ|ƒ†…tp{w~„w€upƒz†}~‚…y‚yo}…||‘†wvŠƒ{‡Ž‰…xƒz‚x‡†t…l‚x…|ƒ|~l…„|‚yy‡y‚dyˆ|€tz†rwz€‚€~x~uŠ††ty~†„~†~wx€{„†n~}‡{m~x€~ƒ|ƒ†}„~‚ƒ|‚„€‘}x€}s€€wƒ‚}‹xlyq~……vu†xw€tus‚€‚‚qpˆ†y~…hr‚y€vsz‚‰mƒ|ƒ†xo~~‚†‰~r~™ƒ‹oŠˆy}snvx~–uƒ„p~xjy‚xs‚w‚…{sƒ„†‚Šs…€…†ƒ†}~}{‚‰w~}s‚}tz†z|~€~~€„†’~~ƒvz†‚„q…ws~ŠyŒ‚{ƒx†}}‚’†ƒ‘~††sƒ‰y}ˆu~|„xvu}‚p~z„ˆyŽvyt}‰wx€tzƒˆ{ƒyƒŒ…‰gÇÙ"ÓcÔ¾¿¹´­¤¢œ•ˆ|wqjea[UOJE?81+$ +!&+05:AILTZcip}‰‘—¡©¬³¸½ÃÇÏ×ßåêîöûÿÿÿ$ÿ)ÿ.ÿ3ÿ7ÿ>ÿ@ÿJÿMÿTÿ[ÿcÿlÿvÿ|ÿ…ÿŒÿÿ›ÿžÿ¥ÿ«ÿ°ÿµÿºÿ¿ÿÆÿÌÿÕÿÜÿÞÿæùíöññöêüäÿßÿÛÿÖÿÐÿÌÿÆÿÁÿ¾ÿ¹ÿ°ÿ§ÿÿÁs’¬mƒŒv…€ƒvu|}n…z…‡xt€iy{|€†uwƒx‡tw„„•€€w‰€€‘w‰{ƒ‚†††ˆƒ„vƒv†…‚|„€‡{yr€w‡–|‚€‡t‹zqn{|‚€„~‹”‹Š„{‚|€ssƒ€‡‡wyƒ‹uq|w…t‹}z†os}Œ‡…v€yl~mƒ…‰“ƒ{}‡s~{{}€‚‹mŽ„€v€………‚m…{}ƒ‚†ƒ…twxz{…’€‡xƒ€‡rrz}†‰Ž€‚z|z‡xŽ‡„Œ{{ƒ}y‡‚‚}y||wƒ~z‡’v‚~ƒ{xƒ|x˜|y{‚~‰Šyz—†“~v||ƒ‚ƒz†zƒ‡u~y‚zzƒ}{uvwx|‹…Š€~xv„€ˆ~Š‚Œu€†~‡~x~}}‚ˆ‚Šƒu‚uy~}p~’Š„’y}q‚…€‡€„†syw~|‡|€n„}†|t„…zŒnƒ‚t…„zxqn€‡ƒ|‹}}or}„v}{†c…l‚k„r…ˆ{vy†wz†xŒ‚vŒ‚ˆ…‡{~‡o†‹y‚~s‡y~–zƒ{}yv{‚t}ƒ…vv~€††s~t‚…€{ŒŒ†{…}xw{u†‡‡u‚€ƒ€„ˆ}y}yz„‡eÑ^ÇÝ,ÿŒÿŠÿŠÿ„ÿ|ÿuÿnÿgÿeÿ^ÿWÿRÿKÿHÿBÿ=ÿ8ÿ4ÿ/ÿ*ÿ#ÿÿÿúö +òëåÞÚ×Ïǽ¶²¬¦¢›•‰ƒyojcZRJD>72.)% $,35=EJQV[`ekq{‰”¡¨¯±¹ÃÇÌÑ×Ûàãéðò øÿÿÿ&ÿ,ÿ2ÿ9ÿ?ÿEÿLÿOÿVÿ\ÿ`ÿfÿnÿtÿ}ÿ„ÿ‹ÿ“ÿœÿ¦ÿ¯ÿ³ÿ¸ÿÀÿÄÿËÿÏÿÔÿÙÿÝÿáÿçúìôóíùæÿâÿÛÿÖÿÐÿÈÿÂÿºÿµÿ²ÿ¬ÿ¦ÿ ÿ›ÿ’ÿÿ‰ÿ~ÿzÿpÿgÿ^ÿWÿRÿKÿFÿ=ÿ8ÿ3ÿ/ÿ)ÿ$ÿ!ÿÿüö +ñíçßÚÕÌǹ¶°«¦Ÿš“ƒ{ria[ULH?:61,(# + $)09=AGLSW\ckqw€Š“™ ª­¶ºÁÅÊÏÔÙàäèïöûÿÿÿ&ÿ-ÿ/ÿ8ÿ;ÿBÿIÿMÿSÿYÿbÿfÿmÿsÿ|ÿƒÿŽÿ–ÿšÿ£ÿ«ÿ²ÿ¸ÿ¿ÿÃÿÈÿÌÿÒÿ×ÿÝÿâÿçöðòôíùèýáÿÛÿÒÿÐÿÊÿÄÿ¾ÿ¸ÿ´ÿ¯ÿ©ÿ£ÿžÿ•ÿÿ‡ÿÿzÿoÿdÿaÿWÿPÿKÿEÿ@ÿ>ÿ6ÿ2ÿ+ÿ&ÿ!ÿÿüø ôëæßÛÓÎÉþ¹³®©Ÿ™’Šƒ}tkaZSLIC>94.*% 56S¡sRŠ€‡xv}z€ƒˆ}r|€~z†‡Šy‰€Šy|}x‡vŒtƒtf‹r„Œj€}z€~~‰o€}‚Š“|‰€yƒŠ†z’‚w~‘yƒ€xz|z{{~€zˆ‹Š€‚€ˆ|‡w}…x‚~~‘q~t~}€{‰rl†q‚}‹‰‡ŽŠ„x‡y}}ƒv‚}€‰Šw}gq|ƒ€‡‡y‹wv‹|ˆ€}|‹‡yƒ|ˆ|w‚††zz†o~z†zoˆ€†Œ‚‡p|ƒ‚zŠs|€v~xys…‚ƒ}ˆ|}}„…‚x†}wˆ}„xv~|{…}{zr}||~‚‹|„€‹„{vƒz‚‡~„wz}{†||…‰€ˆ~€|xƒwŠxu~‰p{}bx‰Š}|‹uwko}~„w„}vt‡z‰„|s…z|z~r‡vvˆr†‚x|w€‹ƒ‹ˆx…†{€€w‹†ƒyy€~w~…u†}{ww’y„z|†}€ŒŠ|z‰}……„‡z‹ˆ~„‚v‡vvx{†}sšoˆy‚‚|ƒzƒ–„„g€{}ƒsŽ}†}zƒ‚€}|ƒ‹~yy‹„ƒuxz{rv…‰|‰w}}u|{{|€Š{…zx‰s‰‹‰‚zŽy‚‹|‚—‚ZÏ#ÏÞnÿãÿÔÿÒÿÏÿÉÿÅÿÀÿ»ÿ´ÿ¯ÿ§ÿŸÿ™ÿ”ÿÿ‰ÿ‚ÿ{ÿzÿsÿkÿhÿ`ÿ\ÿUÿMÿIÿ>ÿ;ÿ8ÿ.ÿ(ÿ"ÿÿÿú óïìæâÜÙÔÐÊÅ»¸®©¢š‘‰„|xnjc]XRMIB;3-)#  +!&+068@GLV^emu|†Š’šž¤ª®µ»ÁÇÊÒÚáãëò øüÿÿ ÿ$ÿ*ÿ-ÿ2ÿ7ÿ=ÿDÿJÿQÿZÿ^ÿgÿnÿvÿÿ„ÿŽÿ”ÿšÿžÿ¥ÿ«ÿ¯ÿ´ÿ»ÿÂÿÆÿÌÿÕÿÚÿãûêøîóôï÷èþäÿÞÿÛÿÖÿÑÿÌÿÅÿÁÿ¼ÿ²ÿ©ÿ¢ÿÿ–ÿ‰ÿ‚ÿ|ÿrÿnÿjÿaÿ]ÿWÿQÿMÿFÿBÿ;ÿ4ÿ+ÿ$ÿÿÿö ó +ñêåáÜØÓÍÉ¿³¯©£˜‰|tmgb\VQLE?5.+" #&,25=DLV[bksy‡•š ¥«³¸¿ÆÉÑ×Ýåëíô ùþÿÿ ÿ&ÿ*ÿ/ÿ5ÿ8ÿAÿGÿMÿVÿZÿbÿmÿtÿzÿ‚ÿ‰ÿÿ–ÿœÿ¡ÿ§ÿ¬ÿ²ÿ¶ÿ¿ÿÃÿÉÿÓÿØÿàþçúëöðñõëûæÿâÿÞÿÙÿÕÿÐÿÉÿÅÿ¾ÿµÿ°ÿ¨ÿ£ÿ™ÿÿˆÿ€ÿyÿqÿmÿgÿ`ÿ[ÿUÿQÿJÿCÿ>ÿ9ÿ2ÿ+ÿ"ÿÿýùðëéãßÛ×ÑÎÇÁº³¬£œ”Žƒxrke`[UNL:/oz®Vj€kžˆzŒ}„~|„hw€†„}…u‡€†…{z€€ˆ‰†€opo|€|€……wx}}x†s{…{…w|zxm’|†wx€}z}v‰xˆ…vx}x“||Š‚~„~‚hr{†v‰}zqgv~yƒts‚t†…‚}‡w‡|†~|ˆ€ˆƒv‚yw‡ˆƒŽ‡|qrƒƒ…p‡€}~‚oŠ‰‚y…ƒŠ}ƒ“Šz~z~{‡ls~z‚‚y}‚{|ƒtŽ~y~{|w}‡…„‚‚…v{€|€{‡}€€|{‰yƒ{ypt|wy‡…Žƒ„‰r}|z–„upu~ƒ|z„q„‹n‡„‚ˆ‚ˆ||}yz…ƒ‡x„~|„‡|txo„z|{„p‘}v‚xv‚‡€…ˆ‘‚z€ˆˆ€ˆ}yy|u€~…Š~}‚~†€}w…xŠ}‚ˆy}…sq|{€Š€Švtyww†|„ƒ{~|„–‘|v‰€}{~Œ{†‚€‚‚{zx†~‚|‚}}ƒvƒ‚…{v‚ƒt„~}Šyy…{„ƒ~‘vw„q{‡„ˆzyzkju„‚z†wŽr|†…}ƒ‰…ˆŽ{‚v€ƒ„ƒ‹}y„v|†x{…‚‚…yw{zz~‰}xˆ}~„v‰|Žx‡uˆ€pz{q¢Œ-¼1"°Y]^ektw{ˆŠ’˜¢§¬³·¼ÂÇÎÓ×àäìð ô øüÿÿ#ÿ)ÿ.ÿ2ÿ8ÿ;ÿCÿGÿMÿQÿVÿ_ÿbÿiÿxÿ{ÿÿÿ–ÿÿ¤ÿ«ÿ±ÿ¸ÿ½ÿÂÿÇÿËÿÐÿÕÿÛÿàÿäüê÷ïðöëûâÿÝÿ×ÿÐÿËÿÆÿÀÿ¼ÿ¶ÿ±ÿ«ÿ¥ÿ ÿ™ÿ“ÿÿƒÿ|ÿtÿkÿkÿaÿUÿPÿIÿBÿ=ÿ8ÿ5ÿ/ÿ)ÿ$ÿÿÿþ÷ óìãÝÙÔÍÈÀ»µ±«¥¡›’Œ†|vleZTQHA<60,'# +  +!'.6<BEKQV]`int{ƒ”›¡«²¹¿ÅÉÏÒ×Ûâèêð ÷úÿÿ%ÿ)ÿ0ÿ2ÿ7ÿAÿFÿLÿRÿVÿ\ÿbÿiÿqÿwÿ€ÿ…ÿÿ™ÿšÿ ÿ°ÿ¶ÿ¼ÿÃÿÅÿËÿÐÿÔÿÛÿßÿåýéûìôòêüæÿàÿÚÿÖÿÍÿÆÿÁÿ¾ÿ¶ÿ°ÿªÿ¦ÿŸÿ–ÿ’ÿ„ÿ‡ÿ~ÿuÿmÿgÿ^ÿUÿRÿGÿEÿ>ÿ8ÿ2ÿ.ÿ(ÿ#ÿ ÿÿüö +òîêâÛÓÌÇÁ¹µ±©§ Ÿ§ˆƒ|vocYWQF@;6.4/  +!(/5<@BLSW\bhp‚~‚ˆ’™£ª®ºÁÃÊÏÔÝëßçìò +õ üÿÿ!ÿ)ÿ.ÿ3ÿ<ÿEÿGÿNÿRÿWÿ]ÿdÿfÿcÿzÿÿ‰ÿÿ“ÿÿ¦ÿ¯ÿ´ÿÀÿÁÿÆÿÍÿÒÿÖÿÚÿßûÞÿôÕ¥›]Žš}€€€Œw‚“rŠ|‚†‰|wq{€d€|‚~y~}£‚}„|}s}Šimruyn~m|~kuhgw}z‰}‚pay‹~}€€j‰z}|…‡…}|‹…€Šz{ƒ{}tzwuzy™Œ‚}‚~‚u|yƒ~‡‡xˆz~ƒ‚qz…‡‚lzt•†}ƒˆ|ƒr{{|t…y…yn…|€}ˆsŒƒ…Šyzs„ozzmx…‚|’ˆ}h”……Œ{†€c{xvƒƒ…€xjo{‡‹yŒrƒ‚‹›ƒy~†wŒr‘‡x~†y‡Š~Œ|y}~‡ƒ|y…v‹€{~…††‰z‡x€u‹’„Šˆt„z‡w„}ˆ|~rƒ|uwu‡tv}zƒ{Y}~€”|‚~€Œg{„Œuz…‹q…ru–…y{zpemy‡€zz–‹}rw€ƒ€ŠŠe€|Œ~Ž„†}“b‚v‚……‹wrx}„~{uzoŒ†Šy€‡–{~v€“’}…ƒ•{qu‹s…ƒ€y‡dxw•z‚„ˆ…z„~}{ov…rxrpy…€“suzvƒv}}dw}tt…ƒŽd…w‰}…‰zsrŽ|z~vƒ€sˆx~…‚s‰ƒ†‚t……„„}„mpŽvv¸p›ø¡ÜëèâÞÝÓÐÄÂÀ¸±±«¡›•’…|qngbXNWE:72+% +#$*1;BHNS\dgqu{Š‹’›¢›®³¸ÄÇÈ×Úãçíñ õ øüÿÿÿ&ÿ(ÿ/ÿ2ÿ>ÿAÿIÿWÿ[ÿbÿkÿqÿwÿ}ÿ‚ÿ‰ÿÿ”ÿ™ÿ ÿ§ÿ­ÿ³ÿ¾ÿÃÿÊÿÓÿØÿÝÿâýéùíôóñöìúèþäÿßÿÙÿÔÿÐÿÌÿÄÿºÿ´ÿ­ÿ¤ÿ›ÿ’ÿŽÿ†ÿ€ÿ|ÿuÿpÿlÿcÿYÿZÿQÿNÿFÿ;ÿ6ÿ1ÿ,ÿ(ÿÿýøö ñìèâßØÔÐÈIJ­®¤•Ž…€ysnhb^WSIE=4/&! !',18?CMU\ecq{†‹‘—œ¡§­¶½ÃÊÓÙÝäêðô ùüÿÿÿ"ÿ'ÿ,ÿ3ÿ9ÿ@ÿEÿMÿUÿ^ÿcÿjÿtÿ{ÿƒÿ‰ÿÿ’ÿ˜ÿŸÿ¤ÿ¬ÿ°ÿµÿ¼ÿÃÿÔÿÕÿÙÿáÿåùíõòòõíúèþäÿßÿÛÿÕÿÏÿËÿÆÿ¾ÿ¹ÿ¬ÿªÿ¤ÿšÿ“ÿ‰ÿ€ÿ|ÿvÿpÿkÿeÿaÿ[ÿTÿOÿIÿ@ÿ:ÿ4ÿ,ÿ)ÿ ÿÿûõ ñíçäàÚÖÐÍľ·®©¡•‹Š‚{tnhd]XRMEA74-# +"'+/6;BGOX^emt}‡‹•›£Vf|c†qz‚n|ˆ‚z‚q€vg}uƒ†|zv|ˆˆ”„‚ˆŒytm|~Œ}ˆ‹ƒ{zu‚ˆwr~n{|Ž„„€‹z„~~Žw‹xz‰x|‰}z‚yˆˆ~{ƒv‰x‚„nt|ˆ{„…‚zvˆ€ˆ{ˆ„‚{}ˆ~ˆ…ˆ~‚z†€|t†„~‹|zŒ}zqvq†‰‚ˆc~u‚w|{‚~}|s}ŽxyxŠ‚„Œ~x‚|x‚~Ž}ƒx~‚tyƒspzo€‹‚‡†‡€v††„‚†‡‡q€t~wz…€|yz……†‰x€…v|}„Š†~‡|zrzyxƒ‚€ƒ€„{zŠ…ƒ€~„}…vt{vs€ˆƒƒ€‚Š…—qxŽy‹}}€ƒˆŠz†yvƒv|“}‚wm†‰q‘ƒp‰wyu|€}††‹ss}w~}†€u‘ƒƒ~uƒŠx†–y|€v€}„‚}{€}…†‚„€xvr„Ž‚|†w~€v„}Œ‡wr„…tw~zzzxty…lˆzt†urx{†‘‚ƒv‚xz|‚pŽryŠ}ˆ†v‰…Ž…}zw…Šƒ‡{Š™xsu……twƒ‡z…n|qˆ†|s}uŠo†‰ˆŒˆ|vy‚~‡zs¨]»ú#ÄÖÕÚÞáçëð ó ÷üÿÿÿ"ÿ(ÿ0ÿ8ÿ<ÿAÿDÿLÿRÿXÿ^ÿbÿfÿoÿrÿyÿÿ„ÿÿ•ÿžÿ¡ÿ©ÿ°ÿ¶ÿÀÿÅÿÍÿÔÿÙÿÝÿãþèûë÷ðñõð÷ëûåÿàÿ×ÿÓÿÑÿÆÿ¿ÿ·ÿ®ÿªÿ¤ÿ›ÿ—ÿÿŠÿ…ÿ~ÿzÿtÿoÿgÿ`ÿWÿQÿIÿGÿ=ÿ5ÿ.ÿ(ÿ!ÿÿÿüø ôðìçãÝÖÏÇÁ»²­¥•‘‹…€yvieb\VLF920*! +$)19=GNVachqx}ƒˆ’˜¦¬µ»ÃÉÒ×Úãæçðõ úüÿÿÿ"ÿ*ÿ0ÿ6ÿ=ÿEÿKÿRÿXÿaÿmÿpÿvÿ|ÿ€ÿˆÿÿ’ÿšÿ¡ÿ¦ÿ«ÿ´ÿ½ÿÄÿËÿÑÿÙÿÝÿäýèøîôóðöìûèþãÿÝÿÙÿÑÿÍÿÇÿ½ÿ·ÿ¯ÿ©ÿžÿ˜ÿ‘ÿÿ‡ÿÿzÿtÿnÿiÿcÿ]ÿWÿOÿFÿ=ÿ;ÿ4ÿ,ÿ%ÿÿÿû÷ óñëçâÝÚÕÍż¸³§¡˜‘Œ…~ztnib[VQIA72*"  $'07>DHOZciqwƒˆ”˜Ÿ£«³·¼ÈÏÖÜáèíò ÷úýÿÿÿ%ÿ*ÿ/ÿ5ÿ8ÿ@ÿKÿSÿYÿaÿiÿpÿuÿ|ÿƒÿˆÿŽÿ“ÿ™ÿŸÿ¥ÿ­ÿµÿºÿÂÿÈÿÏÿÕÿÝÿäûë÷ðõñð÷ëûçÿâÿÞÿÚÿÒÿÏÿÈÿÂÿºÿ²ÿªÿ¨ÿšÿ¨¾¶iz·vvƒw…‚o~~v‚ƒy†zv…”Š}}{‚„is}}†‚‚{~€”|†w‚|Œ„qzƒ†ƒ„~|{ƒy~r„„~xt€ƒ~€m~v}y||ƒŒz…ƒ{~|l…m{|zƒ~s†…p€su‡|tˆˆpƒƒp…x€‚xƒuvrŽs{…{‚rŠ€|‰€{‡ˆ††y‚|€„€w‚ƒvuw}€r~wˆ}‚~y{~‚|zƒw‚yƒ‚Š†…yu{w†‰€Œ~€y‹z}€urŽ‡}€~}€‹€y|tr}„||}ˆ…~‹ƒj€|{‚„v…~uƒx‚|yŒƒ€yq~~€„‚…q}x‹„z{†„n‚|y|ˆz‰‹v~y}~u†€x‰†u‹…y‡~w†||}|€~„„y~‰€‚†{ƒ|„†…}{|„}„‹y™q…{~…{ŠƒŠ~|‡‰|w‘ˆ‚‰€z‚{„‡‹u…Œwp„‚†v}„}p}ƒ‚€|zƒ†Œ€‡€Œ€~v…‰ƒ€„…|~z~€|„„v{q}ƒy}}„„z„{€ƒ‡‚z~|€‰|†z„y€‰„o|x„}ˆ…€‰mw„zƒ„€w’unvsqƒ{~‚mtˆ…ŠŒx„ƒ‚~†e€~‹xs…tl†z}‡€d€Ñ[Åä-ÿ›ÿ™ÿ–ÿ’ÿŒÿ‚ÿÿzÿsÿlÿiÿcÿZÿUÿOÿGÿBÿ>ÿ7ÿ1ÿ+ÿ&ÿ!ÿÿüø õ ñíèäáÜ×Ðʺ²¯§ š‰ƒ}xqkfa[WOJB;40(" "'-08<CHP[bfqw‡‹“˜ž£©®´¸ÀÇÍÖÜãçíô úýÿÿÿ$ÿ)ÿ.ÿ3ÿ8ÿ=ÿDÿKÿSÿ[ÿ^ÿhÿpÿzÿÿ‡ÿÿ•ÿœÿŸÿ¥ÿ«ÿ°ÿ·ÿ¾ÿÂÿÆÿÍÿ×ÿÜÿãýè÷ðóôìúêüäÿßÿÛÿÕÿÏÿÍÿÇÿÂÿ»ÿ³ÿ®ÿ¤ÿ¡ÿ™ÿÿ…ÿÿxÿpÿkÿcÿ`ÿXÿTÿOÿJÿDÿ>ÿ7ÿ0ÿ*ÿ$ÿÿýø óìçâÜØÓÎÉÅÁ¹²¯¦ —„xnha[WRLGB;50)#  +!'+/4:?ELPWdhow~‹‘–š¢§¯±´½ÁÉÐÕÛâçîô øþÿÿ$ÿ(ÿ+ÿ3ÿ8ÿ=ÿBÿEÿMÿQÿZÿdÿgÿqÿ{ÿÿ†ÿÿ™ÿžÿ¥ÿªÿ¯ÿ´ÿºÿÂÿÄÿÌÿÏÿÔÿÜÿâýéøîóôìúæÿãÿÝÿÕÿÑÿËÿÇÿÂÿ½ÿ¸ÿ±ÿ¬ÿ§ÿŸÿ–ÿÿ‡ÿ}ÿvÿoÿgÿbÿ\ÿUÿOÿIÿDÿ?ÿ;ÿ5ÿ.ÿ)ÿ#ÿþúù óíæâÝÔÏÊÅÀ»µ±«£›’‡}uofaYQLHB<73-(,8`h£mZŽ||‚y€{}~‡}x~yƒzqƒp~ˆ}‚Ž_{vx‹…pƒzzviz|ƒ}€‚~†‡™‚|z€‡…zŠŽ~~‰{‘vwŽw‚‚w‡ˆ€ƒ€…ˆŠz„Œ|wuyƒ„„x‹ƒˆŠz‹‚†xr‹t~€wˆ‰‡pƒ€xz…„‡‚p{ƒx~||„€{Ž€‹…w€~zŠ„y•hy†u‚{y{ƒso†{}~zy}“‚ƒ„tˆ}~u{‰}€{w‹x‰m~€}ƒw}…}~|v‚|ˆ~‚}‚y†||„ˆ}“uˆ„}pzy†…|‚€}z{q„~|„€…‚s|‡|ƒs|}‡{Šk‰‡…ƒ…‡{‚•v‚ˆxz~q“€‹‰|{„ƒƒ‰ƒ‰…†~|…um‡€Ž„{ŒˆuŽy„ˆw|…y|{{‡yŠ‚‡€‚}|ƒ‚‚„‚‚szy€wƒ|‰‚s~ƒ„wyyxwvuƒ‚u€…€zwr~|}†‚{{xlzƒƒz}š‚€‚‹…|ƒxt€„oƒ‚|€|„…zxq‚‡„~…‚}z„„†‚z|‚w†y{ƒ‹}‰ƒ„Šuƒyx„‚€}†‚~†ƒƒ|€{„~~{‡}vvzŠ~|†{~zo}~„~~…’vr„u…ƒrƒ}‚€|zŸxNèBc  !')147>HJSY\gnq|ƒ‡•™ ¦¬²¶»ÀÄÌÓ×Þáéïõ ùþÿÿ ÿ(ÿ.ÿ3ÿ8ÿ<ÿAÿGÿKÿRÿ\ÿfÿcÿlÿuÿ|ÿ‚ÿ‹ÿ“ÿ˜ÿ¤ÿ§ÿ®ÿ¶ÿºÿÀÿÅÿÉÿÏÿÕÿÚÿáÿâûêõñïöèýäÿàÿÚÿÓÿÍÿÅÿÁÿ»ÿ¶ÿ±ÿ¬ÿ¥ÿ ÿšÿ“ÿŒÿ…ÿ|ÿsÿlÿcÿ^ÿWÿRÿKÿCÿ=ÿ7ÿ4ÿ.ÿ*ÿ%ÿÿÿþöîî{·ŸŸi‚zq‰Ž}mƒ}„{€w‡~†€‡Œƒ†…‚Ž‚vz{~€xu‚z‚ˆ|€‚‡€“†~†}…‚“…„x|t†xˆt{…€‚’{uzv‚‡x€x„zyo‚|tl|t‰“ƒ€‚ƒ‚ƒƒ‡‰…‡{|z†€zvwq„€|o}yx€„€€r}‡v‚ƒ~„z}‚y{Œz€t…„v‰w…„~…|ƒ€‡‡q‹}€ƒz„y‚~x|{~„}xƒ……|”{‡~z„€}g{‡‚~…}Œ}u”t€ˆt†}m‚‘wŽ}{{€ˆy‰l„…z‡€{ƒ„…•„ƒƒ‰}…xxwv~w„€…‰€†wˆzw~ˆzu~|‡€‹{}q”€z„}ƒ„p‚‹Šƒ{‡€…ˆz„qz„xzzw†xvƒ}…|xx‰”†ˆxzƒ…€‹„Œy‡yˆ€ˆˆ{x‚x†…‡xzˆ‚|ƒ€€xŠ~{|„yzz…ƒ€~~}‰ƒ‚wŒ‚}‰†{‚v}|z|x†‹‚…x€ƒ‚‚zŒ~wˆ„€…ˆ‚m‚ƒ‰vyz}ƒ‰ƒ—ƒ{|ƒ„’„Žw~}|ƒwz‚y|o}‚ƒƒzw}…Œ{ƒ…{…p|~„‹vzy{~€~|‰v‡…||…x…‚‰”Zq¾÷Ûíïÿ¨ÿ¿ÿ¼ÿÁÿÈÿÎÿÒÿÖÿÚÿßÿåýéùíóôðöéüåÿßÿÛÿÕÿÐÿÍÿÈÿÂÿ½ÿ·ÿ³ÿ«ÿ¡ÿ¢ÿ˜ÿ’ÿÿ‡ÿÿxÿoÿhÿaÿYÿQÿKÿDÿ@ÿ:ÿ6ÿ1ÿ,ÿ'ÿ%ÿÿÿú ô òéäÞ×ÑËļ·±ª¦¢›–‹}{ulc[SOH?:3.*%   &*4;DGMSY^cgnu{„‹’™Ÿ¨±¸¿¿Ï·MqŠ^Žˆw‚Ž…{‚m~{v{uz}~„~y}|{€}}zpx€…€{„‡ƒŽ}‚ƒ€ˆŠ{‹y{…t†€„{€v…y€Šy‚‡‚„…~}ƒ„ˆ||wŽ‡|‡r|„€ˆwo‡‡‚„~v…{p‚–ƒ€€t‹„q‹r†~‘v„†r•}y…~„Œƒy”…€|~„}v„‡~}Š|‚tgˆnv…€‚~~€…wƒ~|{s†z}t€‚€|‚…|z…u~„€n|~||v‚‚}…ˆƒ„{‚Š„{n~x…z‚††z}rxƒ~‚…x…|›tz}~vƒy‡xw‡yz‚l}z…€‚€y{v~€‡‹ƒ†Š|~‡ƒ†‚{…}€…„wu‰y|~|‰~vvx|}‚‚‹Šxyx~‚|ƒq~|w{{}uŒxƒ|{r}„}yŒz~ˆ~‹o}ƒyƒ†y‡zzƒt‚ƒy‚|€wxŠw}ƒ}€€~ˆuƒ‡–}‚€uŠ€}~€wx}w„}}€†€}}|{ƒ‚~|€‡‰ˆ{zzw‚‹ˆwŽ€Š…q~„…ƒ~{˜|„„xƒ€€„Šyv~‚€‹wƒ‚…’|x~{x‡‰…‰hw}~‚v†|wk€w|ƒs~y‚m‚q{x‰‹Br‘ÿ¸ÿÿBÿZÿXÿ^ÿbÿjÿpÿxÿ~ÿƒÿŠÿ‘ÿ–ÿÿ¢ÿ§ÿ¬ÿ²ÿ¸ÿ¾ÿÀÿÆÿÍÿÑÿÚÿÝÿâýèùíòôíùëúåÿÜÿØÿÑÿËÿÇÿÀÿ½ÿ¹ÿ°ÿ¬ÿ§ÿ ÿ›ÿ“ÿˆÿƒÿ|ÿrÿkÿdÿ^ÿVÿOÿIÿDÿ<ÿ7ÿ2ÿ.ÿ)ÿ$ÿ ÿÿüø +òìæßÚÔÌÆ¿ºµ¯ª¦Ÿš“‹‰rog\ZMGE=82.*$ $+18:CJOUZ`djqz€‡•Ÿ¨®´½ÃÊÍÓØÝâåëðó úÿÿ!ÿ'ÿ,ÿ2ÿ:ÿ@ÿGÿMÿRÿWÿ\ÿaÿiÿmÿzÿzÿ€ÿ‰ÿ‘ÿ›ÿ£ÿ£ÿ°ÿ¸ÿ½ÿÄÿÉÿÍÿÓÿØÿÜÿáÿæûëöðñõìúåÿßÿÙÿÓÿÌÿÅÿ¾ÿ¸ÿ³ÿ­ÿ§ÿ¢ÿÿ—ÿ’ÿ‹ÿƒÿ{ÿsÿlÿdÿbÿXÿMÿFÿ@ÿ9ÿ3ÿ/ÿ*ÿ%ÿÿÿþúö ñèåÜ×ÒÈÀÀ¸¯ª¤Ÿš•Žˆ}rkc[TKC>:3.($  +  (.4;DIQTY`ekqw†Š’š¤«±ºÂÈÏÓÖÝáæêïõ ÷üÿÿ"ÿ*ÿ1ÿ7ÿ>ÿEÿKÿQÿWÿ\ÿcÿhÿmÿtÿ{ÿ‚ÿ…ÿŽÿ•ÿœÿ¤ÿ¬ÿ³ÿºÿÂÿÉÿÎÿÓÿØÿßÿáÿæüêùîôóîøéýâÿÝÿÚÿÍÿÉÿÁÿ¹ÿ´ÿ®ÿ¦ÿ£ÿÿ˜ÿ–ÿŠÿ‡ÿÿyÿqÿjÿcÿ[ÿQÿHÿCÿ<ÿ6ÿ/ÿ(ÿ-ÿÿ^È«˜d‘qq{ƒ„}s…s†~Ž…y‚ˆ~‚„wˆ}|zƒ‡x…€x’…„ƒ€z€‹|s‡{{{oŒ{‡|ru€xƒ}~ˆˆ€•ˆy„†~}~{‚‡‹u}xzsxv…€ƒŠx~Ž}‰y}v…~ƒ}{†~€zˆ|}ƒt‚wzŠ„yˆxŽr†}‚‚‘}w…xŒ~ƒs}€†z…~‚y€ov†r~|x‡‹~ˆ€xz€€„w‚~}|…}y‚ƒ…€z‰€‰€…|„|ƒ~{”‡xx{y„}~q€w€ƒ~}Šƒˆ}Š„ƒƒƒ}€ywƒ„z€}Štq‰y„‹|…~v~‡{|„}…}qƒl‚…|v”tƒ€€u}v†…sxq‡x„v€ˆŽˆ†}‰y}‚y†y|ƒ~vzy„‡ˆ†„ƒv€{|„ƒw|q{}{~Œ|ƒ‹~{q„ˆ‚~{t‚{‚m€„}zŠv}{‚~‡‡€…‚|{k}x‡‹‡„…{€„zury„ƒw†‡€~‡„|……‚„|ƒ‚…‹€}€zŠ{…ztz}yƒ|x†Žx~oy‡iŠŠ|ƒƒx€†—zƒ€zns€‰j…{}†{‡…‚„Šz{‰‰ul|yz‘{‰~pƒmt‹Œ +À`o+)-28;@GLSYagiqx~‡Œ‘—œ¢¦«±¹¼ÂËÎÕÜáèìñ öûÿÿ!ÿ"ÿ(ÿ,ÿ3ÿ8ÿ=ÿBÿHÿMÿTÿ[ÿcÿkÿpÿxÿ€ÿ†ÿÿ™ÿžÿ¤ÿªÿ®ÿµÿºÿÀÿÅÿÉÿÐÿÖÿÙÿáûê÷ïóóîøéýáÿÜÿÕÿÐÿÌÿÅÿÀÿ»ÿµÿ¯ÿ«ÿ¥ÿ ÿ˜ÿÿ‡ÿƒÿzÿnÿjÿaÿ\ÿRÿLÿGÿCÿ>ÿ7ÿ2ÿ-ÿ(ÿ%ÿÿÿû óîæåÝ×ÒËÇÁ»¶°¬¦‘‰|ukcXVPHA<72.*"  #(+39?FKQVZ`gpv|‚Š“š¤©³¹ÀÅÊÏÓÙÞàçïò +öÿÿÿ ÿ.ÿ/ÿ4ÿ<ÿBÿDÿLÿQÿWÿZÿbÿiÿkÿuÿÿ…ÿ„ÿ˜ÿœÿ¤ÿ¨ÿ°ÿ¶ÿ¼ÿÄÿÈÿÎÿÓÿØÿßÿâüêõñôòïöêûãÿÛÿÖÿÒÿÉÿÀÿ½ÿ·ÿ±ÿ«ÿ¦ÿ¡ÿ˜ÿ–ÿŽÿƒÿ‚ÿ|ÿjÿkÿeÿVÿQÿKÿAÿ=ÿ;ÿ4ÿ.ÿ)ÿ&ÿ ÿÿüø +ñìçáÛÐÎȽ¶²­§ ™•…~uon_UVMC?82/*% +  !-05?FJQW\aelpy‰‘™ ©°·¿ÅËÎÓØÜàäèñ ó øÿÿÿ"ÿ.ÿ,ÿ5ÿ@ÿ?ÿIÿQÿSÿ[ÿaÿfÿlÿoÿzÿÿÿÿ–ÿ™ÿ£ÿº×V‹œv„ˆwz…‡~†o‹Œ{wŽ||‚ƒzŠ†v„}xw~~{‹}z–y„…s‹Œ{„s€}z‡p‚‰{}us‹Šu~‚}Žw}yv~ƒyrŽ}x~}ˆ}x’vv‚y‹z„„ƒ‡uƒ………‚t{‹‚|€…x†p‚{ƒzo‚‡}„q€zt‡Œ|…€~„z}|}…„~{}|q‰ˆƒv‚€„vƒt‚~€€{~w€ts‚€‰ˆx‚qzxx~ƒŠ„„w‡xt}ys‡ƒ{~‹{x}Ž‡|y|jŒ}u…v€„x{xtƒ~p~txˆŽ|}zo‡‰sƒw„†‹‡vp„†s†y†…Š~zvƒv{Œˆ{wx‚v{‚‡‚ƒ€yŽ~zŠq€€~Šˆz„zw~yz†z„{{|{…}w‚ƒ‰‡€o‚vŒz{Šƒ…|pxt€y‡x‡}ˆ}ˆ…v{u}‚†~{‘‚|xƒƒƒ‡™{}‚‚Š~‰„‚{x€’~~Š|…w|„zv†x“†y|p}€z†n…z}€‚y†‡†Š‹|€€~„xx‰€…~uwosŽyˆ…{…vtu}|‚…€‚q||~{|€Šƒ}„‹{€€v~~ƒ‚hyw{~zyxvx’|{ˆZ<éCÿåÿžÿ£ÿ£ÿ§ÿ°ÿ´ÿ¹ÿÂÿÈÿÉÿÎÿ×ÿÙÿÜÿãýèüêôòòôìúæÿàÿßÿÕÿÑÿÍÿÇÿ¼ÿºÿ´ÿ­ÿ¨ÿ¡ÿ›ÿ”ÿ’ÿŒÿ…ÿÿzÿnÿjÿgÿ\ÿUÿNÿCÿCÿ<ÿ0ÿ-ÿ)ÿ ÿÿÿüø ô ñíæãÛÔÏÅ»¹°¨¥œ•‹„yuhedTONC86,&#  $'26:JKN]`fpsx€„Š— ¢¬·¸ÂÌÌÕàáæìïô ÷üÿÿÿ$ÿ'ÿ-ÿ9ÿ>ÿAÿNÿUÿXÿbÿjÿoÿvÿ|ÿ‚ÿˆÿÿ”ÿ—ÿžÿ¨ÿ«ÿ±ÿ¿ÿÃÿÈÿÔÿÕÿÚÿäþçûìõòñöîùêýäÿáÿÝÿ×ÿÌÿËÿÂÿ¹ÿ¸ÿ®ÿ¤ÿ¡ÿšÿÿ‹ÿ„ÿ|ÿxÿsÿlÿfÿ_ÿ]ÿSÿLÿIÿ:ÿ8ÿ5ÿ*ÿ#ÿ"ÿþú÷ +òíêåáÜ×ÐÉȾ±­ª›–“…‚|tmie^XUKCB80+#  $+.3=DHUY]hrs†‰•›Ÿ¦®°º¿ÂÉØØÞêìïøûþÿÿ!ÿ%ÿ(ÿ1ÿ5ÿ7ÿBÿLÿMÿYÿdÿeÿpÿ|ÿ}ÿƒÿŽÿÿ–ÿžÿ¢ÿ§ÿ­ÿ·ÿ¹ÿ¼ÿÉÿÏÿÐÿÝÿâÿáøîñöóôêüåÿãÿÜÿØÿÓÿÏÿÊÿÀÿ¿ÿ´ÿ¬ÿ¨ÿ¢ÿ—ÿ‘ÿŠÿÿ}ÿzÿnÿhÿbÿ]ÿVÿOÿMÿEÿ@ÿ<ÿ1ÿ-ÿ*ÿ!ÿÿü õïìæàÝ×і±w¢mu…rŠ|‚u~}†}€…z{~€€{~}sˆŠ„ˆt}ˆƒ‚|{…qŠw€y„ƒxxsq~‚ƒ‚†€ƒŒq…‚}€„…Œ|pto|z|~|l„xt…Œw~ƒ{†{‡„ƒ†x„‚„€w{†k…t~s€w~sz…}…sv„~x}ut‚‚‚ˆ~‹~}‚€ƒ„‰~wƒ‡‚„s€zn…~z{ww‘}u‚w€„|}Žƒz†€zŠ{yŠƒzwxƒ|y‰w“}…‡‚–|‡†‚~x€|€y‰y|v‰{…~iv}|{x{rˆŠ†|‡x„yw…{wˆ€€€ƒ}x‘svŠ~‚…~{‰s{|ˆ€ƒ…u‘o‚‚‚tsƒ€x€|s{~xŒu|{w}u~|x~‡•Žy††y€€|Šo|€{†‚}|tŠ~†z€xŠ}ƒsy|p„}†„y•ˆ~ƒvt‡„„|}s€yŽŽzzƒ}‰ƒŽn€„~…‡yo„u}xwx€Œ~‰„z~~xˆ‰{y‚w~‡w~€ƒ{‡{€~s„{‹w~†Š…‚r…‚†}y‹s{qvrvŠ‰xˆ}~‚ˆŠ„}…xŠv}†u‹Œzƒw‚ƒ‡pwy‡€x‰…„y‹‚ˆƒŠ|„xƒ|ƒ‡}‰z‚‚€…•vWûlsÿÿ±ÿžÿ˜ÿ–ÿ”ÿ‡ÿ‡ÿ…ÿxÿwÿrÿhÿdÿ`ÿSÿQÿNÿBÿ=ÿ9ÿ/ÿ+ÿ)ÿ ÿÿÿü÷ ôðëæäÝÕÒÊÀÁ¸­¬£––„€ztoje^XUFBA7-," + +$*.1?FFTX\iov{wŠ–š ¦ª¯·ÁÃÍÓÖáëêð úùûÿÿÿ$ÿ+ÿ2ÿ6ÿ:ÿEÿKÿVÿZÿ`ÿeÿnÿyÿzÿ„ÿŒÿÿ—ÿÿ¢ÿ§ÿ®ÿµÿ¾ÿ¿ÿÈÿÌÿÓÿÝÿáÿäõòõññõîøæÿëúÝÿØÿÓÿÑÿÉÿÁÿÁÿ·ÿªÿªÿ ÿ”ÿ“ÿ‰ÿ|ÿ{ÿvÿlÿhÿbÿaÿWÿQÿMÿDÿ>ÿ8ÿ2ÿ'ÿ&ÿÿùû óîêäßÜ×ÒËÉÁ¸¹¤  —‰ˆƒvtndb[YPGC=72*! +  $).18=BNTUcikx{sŽ’– ¦¬®³¼ÁÇÒÔÙàãìô øûÿÿ!ÿ$ÿ)ÿ0ÿ5ÿ9ÿ?ÿGÿIÿ[ÿaÿ[ÿlÿpÿrÿ~ÿŠÿÿ•ÿžÿ ÿ¥ÿ­ÿ²ÿ¸ÿ½ÿÅÿÉÿÍÿÕÿÛÿßüêøîöñìúçÿçÿÞÿØÿÖÿÐÿÊÿÄÿÁÿ»ÿµÿ²ÿ¨ÿ›ÿ™ÿ’ÿ„ÿÿrÿpÿkÿgÿ\ÿWÿRÿMÿHÿBÿ>ÿ4ÿ/ÿ,ÿ#ÿÿÿø ò ðèáÝÙÓÍþº¶¤£¤’Žytf`bWOKE=861(&"v•X†„rƒ}t‡]wxy~…‚‰‰zfwvƒ‚z„}ƒ†x}x†|||r„{“y‚Šx{r‰xo‚‘€|‡s‰~Ž‡„{‚€ŽtŽuu€‡†kƒp€€žn~“Œy€ˆy}~y}€…}ƒswxsf‚{}ƒ}‰…~Rwuz…‚}†q—‚‰z‚‹‰v‚Ÿ|Œˆ|{†r†wp‚x}††…€~•…€‹€yŠ„vƒrˆq}€†Œ~…‡„‡ƒ~’††€Œv…z‚}{|}t|vƒˆ„|†~z|p}}w‰„|ƒ{~{|‹†{{ƒ{ˆ~|‹Œ€|‡‘}y€‰€šƒxˆ~zue{ˆv…|z‰–~‚y’‚„†}y’y„Š|†€ƒvthuz‹~~‹{†}†|}…ƒŒ‡z‹‡wosuz~ƒ‚wkƒ…w~‹ƒˆ‚uumd‚ƒh‚t~{ƒ{{|~nƒwq……{ij‰z€€}˜Šy”}†{p™™q……vn|~–_w{“wƒy{ˆ‰‰z€‰…Š€…†‚y‡Ž‚ƒ{x‡s|v}‰‘ƒ|~€†‡}‹Žˆƒ|}vrnsz‘™…„|Žvw~pŠ„ƒs‡ƒvƒ}‘–v~~tu}|d|‘‚}‡}{}b€{zv†‚ƒ„ˆwmcì¬:ôë>ÿ7ÿ3ÿ2ÿ(ÿ$ÿ"ÿÿüüöððìãáßÓÓÍÁ¼»±¦¥š–†‚~twqecXWPFE=31- "(,07?@JUUajmuŒ“–›£©¬²º¿ÂÎÒ×äåéò +÷úÿÿÿ ÿ&ÿ,ÿ1ÿ5ÿ:ÿAÿGÿMÿWÿ]ÿbÿpÿqÿuÿ…ÿˆÿŽÿ›ÿÿ¡ÿªÿ¯ÿ´ÿ¸ÿÁÿÇÿÈÿËÿæ¹~¡lŒŸsp„u‚{|ƒ{‘€€{x†w—ƒŒ…ws{}Žzs€oˆ‚xyˆ‡ˆˆ‡}„€w˜~w}o‡‹‚w…~}‡ˆu€yz}}}~…†‚ˆ|‰z‚‚Œx‡’’{w‚|||}n‡ƒˆvwvxƒ{††‡{ƒ~q‚xsw}…ˆl‚~zƒx€€vx|z„z}~~z‰„Šxy‡zŒ•|~†…xq|x|wŠ‚{yw‚t…{Ž‰„z~rywk|†x‡ƒx€y{wŒ‡”ˆ…z‚~u‚~Šj†~Œ„~zyyyv€x~x„ƒŠŠmx‚‹}|z€‚ˆ{{{z}{†€Šw„wv„|}„†€ƒ„o…{r…u„†‘ˆ„€ƒ}†wx††ˆˆ{}ƒz|w~~‹n„‰‚ˆz}…qƒ‡z||„{„‘z…~‰}yˆvoŒv……vxv‡€…‹xƒ{……€Žƒ†|‡q†€}‚€~„„ƒst„y‡ƒ‚‚†|~~„~|†‡u‡€ƒ|ƒ†y‡{ˆ„ˆ„„ˆ…ˆ{€~}zƒˆ}†~{}{zr‡“ˆ‚yx}ƒ~‘’Œ‚}€y}z‰twƒ}…€{wvmy”ˆ‚uyyz„—w~Œ€}{ot€„}ŒƒŠ…~‚†„~€{~t†s…‚‰k¤½#Ý^bdaVOMG?94/''" (+/=?BLRT]eiov|…Œ‘š££¬·¾ÊËÑÕßßæìðô øûþÿÿ#ÿ-ÿ0ÿ5ÿ>ÿ@ÿKÿVÿYÿcÿkÿnÿtÿ}ÿ‚ÿ†ÿŒÿ”ÿ—ÿÿªÿ­ÿ°ÿ»ÿÁÿÂÿÒÿØÿÛÿåÿåüéõòñöïøéýåÿàÿÞÿÖÿÍÿËÿÃÿºÿ¶ÿ²ÿ ÿ¡ÿ™ÿŽÿ‹ÿ…ÿ|ÿxÿrÿmÿeÿ_ÿ]ÿTÿNÿLÿAÿ6ÿ6ÿ,ÿ#ÿ"ÿÿúù +òîéæáÛ×ÑÈƳ°¨š˜”‡|soke^XUNEB;0,# +  $,/2<CFRYYgqs|…ˆŽ–›Ÿ¥­±·ÂÅÉÖØÛçíð÷ûüÿÿ ÿ$ÿ*ÿ0ÿ6ÿ8ÿ?ÿJÿMÿUÿ`ÿ_ÿkÿxÿ}ÿ…ÿÿÿ—ÿžÿ¢ÿ¨ÿ¬ÿ·ÿ¿ÿ½ÿÈÿÎÿÏÿÜÿãÿå÷ïôòñõêüåÿâÿÝÿÙÿÐÿÎÿÊÿ¿ÿ¾ÿ¸ÿ¬ÿ£ÿ£ÿ–ÿÿ‹ÿ‚ÿ{ÿwÿnÿgÿbÿ\ÿWÿQÿNÿEÿ=ÿ=ÿ4ÿ)ÿ)ÿ"ÿþü÷ííéâÝ×ÓÎÊŽµ²§¡ ’ˆ…yqpg`ZUNIC@62/!! + + +%*-38?AHRT[ghs‚€ˆ”— ¥¨®´ºÀÄÐÔÔÞâæò ÷÷ÿÿþ%ÿ&}>…U£{vl|{x‚€„ƒr€{{xˆ„~’„Œ€z~†„‡Šs…„|š‚ƒŽz‰ƒ~r{†€Š„xƒ||h†ƒ†~w~w‡}‚|‰ƒ{ƒw„‚‚Œ{…„~ƒƒyx†„rn…Ž……ƒ‹v†„zo€zƒ‚sxw—‹Š~}…Šw{”z†{x‚„„‡|~‚~‚ˆ„€zˆx}ƒpŒ€ŠŽŠ‚{}rw|ƒ‡z‡€s‚…€zŠn†pˆ‘{}}‚rm˜y…Žp‹‚v€|u‘€Š}‰t~{}xn†t|……Œ†‚‡„€~„y‰…„xxzwƒsx‡{ƒzvƒ}‡vq~~y‡}u…ƒƒƒw„‡p‰Œoˆoƒ€‚z†x‚…k–yŒƒ„x‡ƒqy—vz‚€ƒ~‹‡œ„~‚zy„|ƒ~ƒ‚…~…zsƒy‡…„‚†ƒq}…„‚{zŒ€Ž}„y€‚{‚zw‚‹ƒ‚„„wƒ}vˆ‰|}vmˆz„‰‡„z~o||††zzslz‰}}v‰ƒn‡sˆ„yz}…u€t{ˆ~‚„Žˆƒu“ur‡ƒ{y†v…„‹‚}|{„yz…z{„ˆx|€ƒyy‚ƒ‚vz}y{‰„ˆxl–u…}z€ƒ~w‚i‚‰w}‚Œ‰{|x‡r}ŽyO¦-ܖ’—œ¦¬±¸ºÀÇÐÐÕÚÜãêëó ùøþÿ"ÿ"ÿ'ÿ3ÿ6ÿ:ÿCÿGÿMÿTÿZÿ]ÿdÿkÿpÿtÿ}ÿ…ÿ†ÿ‘ÿšÿ›ÿ©ÿ±ÿ²ÿ¸ÿÁÿÆÿÎÿ×ÿØÿÞÿåþçûë÷ðòõîøëûáÿßÿÛÿÏÿÊÿÆÿºÿ³ÿ³ÿ¥ÿŸÿžÿ“ÿÿ‰ÿƒÿ|ÿvÿqÿkÿaÿ_ÿ\ÿMÿJÿBÿ6ÿ5ÿ.ÿ"ÿ#ÿÿüú ö ñîéæßØ×ÍÄƺ®¬¢š–Žˆƒ~xpnh\SSGB>2.( +%,.5BCLY]bnsx€…‰Ž•™ «±³½ÅÉÓÚÚâìîó øûþÿÿ ÿ%ÿ,ÿ5ÿ7ÿ9ÿKÿKÿPÿ^ÿeÿhÿoÿzÿ|ÿ…ÿŠÿŽÿ”ÿ™ÿ¡ÿ¥ÿ¬ÿ¸ÿ¸ÿÃÿÍÿÍÿÕÿáÿàþç÷ðõòòõëüçþãÿßÿÙÿÔÿÒÿÅÿÂÿ½ÿ°ÿ§ÿ¦ÿšÿ“ÿ’ÿ…ÿ}ÿyÿsÿmÿhÿbÿ]ÿTÿRÿLÿ>ÿ;ÿ7ÿ)ÿ'ÿ'ÿÿûø ò ðìåáÝÙÑÌɽ¹µ«¡Ÿ—‡€wtogb^XOIG;23)# + "(,09=AQRUfgn}‚„••œ¦«¯¶ÁÂÉÙÒÛçåï÷÷þÿÿÿ$ÿ(ÿ/ÿ3ÿ;ÿAÿDÿHÿVÿ\ÿaÿnÿvÿtÿ€ÿ‡ÿŠÿ”ÿšÿ ÿ¤ÿªÿ°ÿ¶ÿ»ÿÄÿÆÿÍÿÚÿÛÿáûëùíöðïøèýáüáÿºušzqn‰xy…t‚ŽŒ~}w|ˆ„…ƒu‚r}yuyŠ‚‚†w}}}{yt}€ˆ‡„}}z}~{‚„…‚{z‡ƒ„|‡~†sŠ~ƒ~Žz~Šx~zz‡„pzqzz‚qƒ„‰s„wƒzy}‡~yun…z‡‚‚„||Œw€}…y„~x€„€}|x|ŽtŠ˜}‹€{‚Šv~ˆz‚z~„w{€x‡uo€€~€t‚…ƒ„xr…‚‚||ˆtƒ~u„ƒ‡‚v‡}~€‚…„|‚ƒ„†v‰‰ˆ†v}„}xzp…„‚~y„t‚ƒ}{…€||“‚~Šzƒ‚}}‚pŒ‚t„w‚‚„…Š€|v‚ƒ}y€zŒyˆ€uxws‚†wƒ€x~ƒ|ƒ„‰}ˆƒx„‡qw€zvx~|{y|„„r…ƒŠ}}ƒu€lƒ~}†l‚{r“|†‚r}ts|t†zy†so˜…Š…‡xz„{‚t„|…{|}v†xˆ‚|†sww{w~‚v†€z~ˆv†o‚ˆ…€z€‡}‚}~v‚€’‚zvrqyŒu‚l€‚w~xxx|qw†{†k‰|}uš†‡~~„x|s‹x~‡€n‚`wˆˆŽnƒ|u~p€†ˆs…ˆtpq}€ˆ‘rtŽhÿ^ÿÔÿiÿ}ÿ~ÿÿ‹ÿ˜ÿ•ÿšÿ£ÿªÿ¯ÿ¶ÿ¹ÿ¾ÿÄÿËÿÎÿÓÿØÿÚÿâþèøîøïòôìúêüáÿÚÿÚÿÐÿÆÿÃÿ½ÿµÿ´ÿ­ÿ¥ÿ ÿœÿ•ÿŽÿŠÿ„ÿ}ÿuÿrÿcÿ_ÿ^ÿOÿIÿHÿ;ÿ5ÿ4ÿ'ÿ%ÿ!ÿÿþûø ôìêäÛÚÐÂÅÀ­®¨ž›”‰„}vnnb\YMDA5,,$ +(//;BERVYegpv|ƒ…Œ“š¢­ª´ÄÄÍÓ×Ýæèëò õ ùüÿÿ!ÿ$ÿ,ÿ8ÿ9ÿBÿKÿKÿWÿaÿeÿlÿtÿwÿ~ÿ„ÿ‰ÿÿ–ÿœÿ¡ÿ¦ÿ±ÿ¹ÿºÿÈÿÎÿÏÿÛÿàÿãüë÷ð÷ðñöìûåÿäÿÞÿÙÿÖÿÌÿÁÿ¾ÿ·ÿ­ÿ¨ÿ£ÿ—ÿ•ÿŽÿ†ÿ€ÿ{ÿvÿpÿjÿfÿ[ÿUÿUÿFÿ>ÿ=ÿ2ÿ*ÿ*ÿ ÿÿýù ôðíèãßÛÑÍƽº³¥ ›‹†ysnf`^XKKC74/! #'*/7>HOR^ljq{~†Œ‘—œ¤§­º¼¿ÈÐÓàäçñ ó öýÿÿÿ!ÿ'ÿ-ÿ/ÿ8ÿ@ÿAÿNÿZÿ[ÿfÿqÿpÿxÿ…ÿ…ÿÿ”ÿ˜ÿžÿ£ÿ«ÿ°ÿ´ÿ¿ÿÁÿÄÿÔÿØÿÜÿåúìúìóóíùêüåÿàÿÛÿ×ÿÒÿÌÿÈÿÂÿ¹ÿ¶ÿ°ÿ¢ÿ¨ÿ˜ÿŒÿ…ÿƒÿwÿrÿmÿfÿ`ÿZÿWÿQÿJÿGÿ=ÿ6ÿ4ÿ)ÿ ÿ ÿÿ÷ ó ë쏷~©d€‚~€{…ƒ…wƒ|ƒ}|~„ut„v†‰}tyƒy‰~€y€…†‡|€{|…{||‚z‹|‹w…ˆx~|ƒ€}„~xkupt‹‰|‚ƒ‚|…†|v{‰…Ž‚ws}}y|z‹tŠ˜wŠ‚wƒ€†z††y„|yw……„„ytƒz†{†‡ƒ‡tx††“yƒ†x††|Štx……†ƒw†}uv~…Š€ƒqu€€€Šƒwr‹x…xz„‡ˆ‰…uv}|†‚~xŒŠƒ€~…‡„„~t„wz|w†„ƒy}{~}ƒ†x‹{{ƒ}‚‚ˆ|Œv}~{|y‚||‰~z|vˆ‡‚Ž‚}ˆzvx|…~„†ƒ…€~p€z„€~€v|~~t‚xˆ‚}…{‡‰{ˆuz‹~|z}v„‚{†v}{zrŽt~‚…†…‡~…t}uƒ€‰y~yw~oy„‚…„t„sw†…u„€x‰yŠ„‘~ˆˆ{…~†€zv’€‡zƒƒ—{‡uxŽu‹‡{†‡x‡€xƒ|€†‚x~|‚„ƒ}‰‚€x’t†ƒƒ„†q‚…Œ‘x…z„‚yy{‚Št‰}‹|wfxv˜y}yˆˆ~}s‹‰s†x|„zsqz‡z‚n‚zƒ~vŠ\Ð#Éù®ÿÿßøêùíôóïøëüçÿâÿßÿÚÿÕÿÑÿÍÿÈÿÃÿ½ÿµÿ²ÿ®ÿ¦ÿ ÿžÿÿ‡ÿ†ÿ~ÿrÿrÿlÿ_ÿ\ÿTÿKÿFÿ@ÿ=ÿ8ÿ3ÿ/ÿ(ÿ#ÿ"ÿÿûü ðêìàÛÙÎÅļ¶´ª¥žš–Ž‰‚vspi_VMF?74-'$ + +$,2:BGOW[`fkpu|€‰Ž” ¤¯·¿ÄÍÒØÜàäèíò +ðüì,[R“`‰|w„~u‡x~‰Šs~}q‡‹x|t‰‚‡|w—„~Šwx‰€‰zŠyu{Štƒr}‡olt…w‡~|q|}|„xxk~‚ƒ{‚ˆ‡|„…|~„xs}wƒyy€ƒˆ…|‚|q‰…|zˆ€‹zy‘|‚…‚Š‚k}~x{†t’{}…‹‡z„~ƒ…€Št‚Šoxs„‚y„|‚{q~…vƒ‡|„||‰v„{||n…pŠx{x{ty|ƒu}y€ƒy}qp€|‡n…‡‚‚~tzx…‡‚w}j„}‚uˆztwoŒ„zx„†Šq‡yx‡ƒx{}z†ƒ‰‹ˆyy‰ys}”‰{{{|v€uy|n…~€}ƒ}€}“‹‡v‚€{~oŒŠ…{zxvyxƒ‚wzu†‡u}„‘{~myv}{„Šx‹o…y~ƒw€‚‡„…†{‡ymzt‹ƒ€€w€y}…s‘vƒ~rzx}|‚z‚€z„~s~|‚‡Šˆv}y‰y|}”{~†}y„‹qŒv|u{vx{z‰…}~ƒe‡ƒ~|‰ƒ“‡„†‚}u…p‹wu‰~‹}r„€ˆ{†||zuzw{‰v}}†|…ƒ‚…‚x‰…uŽ‰„sƒuŠSƒ¯ÿÒþÙÿŽÿ©ÿ¨ÿ­ÿ³ÿ¸ÿ¼ÿÃÿÉÿÏÿÖÿØÿÝÿãÿäúíøîôòïøêüæÿàÿÝÿ×ÿÑÿÎÿËÿÁÿ½ÿ»ÿ±ÿ¨ÿ¦ÿœÿ“ÿŽÿ‚ÿ|ÿzÿpÿiÿeÿ_ÿXÿQÿMÿIÿBÿ>ÿ8ÿ/ÿ(ÿ ÿÿü÷ óìæåàÚÕÎÊÆÁ¸³«¦”ŽŠyuoi^aUKG?<50*"  +$(.4:?CHNV\^pts‚Šœ ¢­³°Æ’%SlŽr‡‡|Žpˆx’’zŠ~€€{|‡qyƒ‚z|{~€€{xxˆ‚w‚ˆ}Žw‚ƒyƒˆy}u{u…†}|r‰y‚u|‚ƒ€}ˆ‚{pˆs}|€y}Œˆ‹z||x‚Ž‚y…t}{{v‡‚{•qkz~xŽ†‡„“}~u…xŠ|s|zsƒ„}rxˆŠ|yxl…z~y‚v‡s†xƒ†‡‚{y}p|}‰~{w…|zŠx€€‚ˆƒ€ƒ†„~|’†|…}vx}q…ƒ€…{tv‰rˆzu„‰Šms‹w‡{~„€oˆ|‡ƒ…yy~y—u‚wy|€ˆ†}|†u†Š}z‚‰ŒŠƒuŠ{q‚‡x‘“w{…|r‡o„‡z…y{†„}„‡|w…‰Š‘…|…y|uxy‚v‰€}{ƒ~|v~„„€x€wz…|‚~†‚…}‚ƒ}x…‡ˆ†r„‚„Œt€…‹tŒq„u}ƒo‰ˆvŠ~tˆw}z……„vƒ‚‚x‡„s€v€•…|€zŠ‚††~~ˆ~‘|…‰€y„„…q€{y…x…~€ˆ~~…ƒ€ˆ{„…‰}{|}s~m‡}~‚Šy}‡…ri{y€~†x†v‹v{}€wƒwŒ†}w€w‚‚|‡|{€…oz€wzýŒÔÜÜÕÐÊļºµ­¨¦ž™”ŒŒƒ{tnhb]XRKD>94-)# #)*29:HLO\cfpyz…‹‘•›£§¯µ½ÅÉÌÕÜãéêïó ùÿÿÿ"ÿ(ÿ,ÿ2ÿ8ÿBÿJÿHÿKÿZÿ^ÿeÿqÿyÿ}ÿ‰ÿ‹ÿÿšÿŸÿ£ÿ©ÿ¯ÿµÿ¹ÿÂÿÊÿÊÿÔÿÞÿÞÿåøïõñð÷èþçÿáÿÜÿ×ÿÑÿÏÿºÑ±nŸox‘|‹…|ˆ‡wŽxq…s~†€u{}€ŠqŽŠ€‚†ruxvi”zƒyx‚‚„ywu‚}†~s‚‹ˆy€swƒ…q}‚ƒx}|~r…v‡Œ‹Ž€ws{~…}{‡xŠƒ}‹r„ƒz…{|w…~sw…o{ƒv|zs€…x‘„…vˆy…{‰‡y‰|‰~€ƒ…ƒ…‹~uyw|}‡„ƒ~v}ztƒ}ƒ™pˆ~u}{}u„|„‡Š€{}|~‚‚‹x€z‚{tƒƒ{u‹ˆ†{pzv~Œ}}„€‰}€vn}|y‡{Žy…‚zz|ƒz†y€}xƒ‚‡ƒ…}†o€z|Š…‰€{u{€}|„~†uw‚zx{}Š~Œ‡ˆ‹€‚€‡„„xƒ~ƒx†‚q†uyzwz„€tt~p|ƒwu‹yŒ‰Žw…€o€ry‰€ŽŒ|†|‰|~t’‰|q}ƒqxy}~}~~sy‘{„~}†w†ˆ‚€~v{†‰„…y…‚ƒzq‚ˆˆ‹‰y€{w}w‚€€ƒ‚ˆ€|‰}‚|zŠ}€w~zx†pˆr…ty~z~~uz€xv…‡tŒ„{…~vƒƒy{Œz|ƒ†~Š‚w’uƒ…ˆv}y€‘†‡w}wgvwzw~‚ƒ}|miœ:ýšÿÕÿÔÿÕÿÍÿÈÿÇÿ¿ÿ½ÿ¸ÿ´ÿ®ÿ©ÿ¥ÿŸÿ˜ÿ’ÿ‡ÿƒÿ|ÿuÿmÿcÿ]ÿ[ÿQÿLÿGÿ@ÿ:ÿ8ÿ2ÿ-ÿ)ÿ#ÿÿþþõîîæßÞÔÊÇÀ¹¶±ª¦¡š’ŽŠyuc_`SJH=98.)$  #+/4<AIOUZ_flt{ƒ‹Ž™œ¥¯±·ÄÃÌÔØÜáæéîò +ùùÿÿ$ÿ%ÿ1ÿ;ÿ;ÿEÿQtO‰k‘q„{w„r{‚xƒ~zƒ†r†z‡„x}Œ€†‡€„ty‚||‚‚…tˆ„…Œ‚„…‡†‚~ƒ‡}{|€{€~qx~{~ˆx|Žtƒ‡t~|€†Œ‰yyu†‡}‚ƒy‚‘‡…~q~uŒ†h„sˆ†€v}‚”‡Œ…y|€Š|y{†ƒ€„{‚Š|‹~ƒˆz~|{ˆ{|}ƒ„{‰v€ƒ}€ƒ„‚‹x‚wy‚…z„€ƒ„~ƒƒ|€†x‹ƒq||‰tŠu~Š|€yx€~†‰~|‚‡†„‡‚y†Œy~{tˆ~s||€‹w†‚‚‚…j{€€{Š„{h}~y~‰~‚|Ž‘ˆƒ|‰z}qs‘„}‡z}~ˆ†„zz‚|z„…‡{rƒ€}Œ~~uz„}…‚u‚ƒyy…yy|uzt~y…}„z„uz„{‰€sƒs‡s€†|~†p€~…~‡€n‡‚‡€‡}y“€ƒ‚w~‰zu}~y‘u{yy‚yr‚sr‚„‚}~‚ƒŠ†~€|vvƒ}Ž}Š|ƒ†wŠŒn‘s~Œ{z€sx„……‚}€‰‘{€~‹Ž~€Œ€ƒ…€Œˆ}†zŒ†…‰r€ƒƒ{‡~}€ƒxz„€ƒ|†x„v{Š}ˆz|€‡z‡€ReÇõÛôÞÿºÿÃÿÇÿÊÿÏÿÕÿØÿÝÿáüéúì÷ïòôî÷ëúàÿßÿÛÿÓÿÍÿÈÿÃÿ½ÿ¹ÿ´ÿ®ÿ©ÿ¥ÿœÿ˜ÿ•ÿ‰ÿƒÿ„ÿwÿmÿjÿ]ÿSÿSÿKÿDÿ@ÿ6ÿ2ÿ.ÿ*ÿ%ÿ ÿÿÿú ô óéáÚÕÎȼµ±­¦¡š”‹†€yqkaXSHBA:1-'$ "(08<AFMUZ_emrw…ŠŸ§´µ¾ÆÊÐØÛàåéìñ øûýÿ"ÿ)ÿ.ÿ6ÿ<ÿAÿJÿQÿVÿ]ÿaÿeÿmÿqÿxÿ{ÿ†ÿŽÿ’ÿœÿ¦ÿ¬ÿ³ÿ»ÿÃÿÌÿÏÿÔÿÛÿÝÿáþèûëøïóôìúëûæÿÜÿÙÿÕÿËÿÅÿÁÿ´ÿ°ÿªÿ¡ÿ›ÿ—ÿÿŠÿ…ÿÿyÿlÿpÿaÿYÿ[ÿOÿGÿCÿ7ÿ0ÿ/ÿ&ÿ!ÿÿÿû÷ ôðèçâÓÒÑÆÁº±©¢ž—Š„}|tmf]XQJA;5.(!  &*/8@FMW]dlrw}‚ˆ–šž¬²´ÁÉÉÓÛÝâêîñõ ùýÿÿÿ(ÿ'ÿ4ÿ;ÿ<ÿJÿQÿQÿaÿdÿhÿrÿwÿ|ÿÿˆÿŽÿ“ÿšÿ¢ÿ§ÿ¯ÿ½ÿ¾ÿÄÿÐÿÔÿÙÿãÿåüê÷ðôóð÷ìûèþãÿÞÿ×ÿÏÿÇÿ¿ÿ·ÿ­ÿ©ÿ¢ÿžÿ—ÿÿ‹ÿ„ÿÿzÿtÿnÿiÿ`ÿYÿRÿKÿCÿ>ÿ5ÿ/ÿ'ÿ#ÿÿÿüø ó ñìçáÝØÏÊ¿»¶¬¦½Yyi„‚wŽ}‡}yu||n‰‚tƒ€{‰zw˜y…ˆzr„su„ƒt’zy„uˆvy„uŒuu…€‚†y…}|ˆ}…|…}}„x}~‡……ƒkzy€~~†€‹ƒwu}|€w‰~ˆƒ…~vuoz‰x‚€|‚tpyzˆ„‚|ƒ…{‰to‡~„}‚y‚}uƒ{…‡q†ƒ†y~ŠŒˆ~xz…‚‰†„…~‡n{€}z‹pŠ‰}€xxx|v€„ƒ€†yˆ}{|w†€ƒ‚€||€‚n†‚xz{u‚€wvj}||€~y†…–†vyz‚lvz„…‚{{Œw‰€‰Š‚wzxŠƒwŽp‹†||…{…}‰†{…ˆoxrv„xŠyƒuqu…y}€ƒˆu~€„ƒ}€‚p{{†~{|zz‹mt|v€Œyƒ{ƒ’‚†tvˆ‚}uv‰‚q~zzŒ…y‡…}ƒy‹‹‡q„|uƒ~|‰u‡z}€z|€}‚|}t‚z}yf|ƒ}ˆ‚{ˆ‚x|o~|~{‰|~‚y‡{xo…y€|t‹{ƒ‚|‰…‰rsrr}z†|y}‘vŠw~…|€r‚|x‚{Š„„…s‚{ˆ}ƒ‹s{}{zƒ‰‚…~w†~~†…x‚~wyŒ†‘q…‚‚|~z‚|’œV`¼ ÿÚÿ‘ÿlÿÿ~ÿƒÿ‡ÿŠÿ“ÿ•ÿžÿ¥ÿ¦ÿ­ÿºÿ»ÿÀÿÊÿÁÿÓÿÙÿÛÿàþçüëùíöðð÷ëûéýâÿÚÿÚÿÒÿÊÿÉÿ¾ÿ¶ÿ·ÿªÿ ÿŸÿ–ÿ‰ÿ‰ÿ‚ÿyÿtÿoÿhÿbÿ_ÿ[ÿOÿTÿPÿ9ÿ8ÿ1ÿ'ÿ!ÿÿû÷ óïìçåÞàØÑËÄ»³¯¨¢•‡‡{tnje_[TMH9:0("!$-13>ADDR^ifw|ŒŠªu.D€“i–…fŠc{—q}‹uŽ|œ˜uv{vw|vž„‚~yŠ„‚…š}Œx€…‡€zŠq~}u}}„‡‚uvj„q„~z}„k‡€r’w‹x}‘€ƒ‚…”w~v‚jx€‹ŽŠƒ„„}}‚{}l„{‹‰€o†”„”s|ˆ|…{„w‰€…€‹Š€‡€q¥}ƒˆ{mmyƒw†‚Œƒ€‹ˆ‰‡p€u‰wz‹zw’„~}{ w|ƒw†{„|~sus~}‚xƒ~‡t~„g|€’xŒ˜x€‡xŠ‡tw™’‘zs‡‚}„|ts|†‡wk~…uŒ]†r`€Žs„~y††ƒZˆqszz‰Ž~t‹{Š€ƒy‡pZ~ƒ€Œ€†xZ„€„†wˆ…kx{…xz{€it‚|ƒ…Œwujrƒ…ƒ}~wyx„y~ˆ€€{‘v}zts{€yy‚Š†ƒq„‰z‚x‚zuz†ƒ’~ˆ„t€rƒ€€h~‚ˆ{‚`}€|tn~‡c™xz}‚yˆ}r’y“z~|„‚†ktnq‰s~x~…—„{€t‚{€‰|~xzx‡Šwllˆ†}€wz|†‹}~ƒ}z€yzˆu{€ƒ‚€}‰ƒ†mˆj{†r…~jƒƒ|ḵWõ¬ íèèåáÜÚÔÏÈǽ·¶±¬¡˜ŽŽ„|~xlie]VRLDB<2/( ,-/8<>BMR[]dlt|„ˆš ¦¦±º¿ÂÉÍÒâÛâéíô øþÿÿ$ÿ*ÿ0ÿ3ÿ>ÿ>ÿHÿ[ÿNÿYÿYÿcÿhÿqÿxÿÿ‡ÿÿ›ÿžÿ¦ÿ¯ÿ´ÿ»ÿ¼ÿÄÿÉÿËÿÓÿØÿÛþæüéøíîøíøëúÞÿØÿÒÿÖÿ»q•”€šŠƒ{xkw†u‚z|„Œw^yxu‡n‚‡‹ursh{€‡‰m•z€v~z…€˜b„ƒxx„†{jzŠ€€‰~Œ‹ƒw}x~~|Œf…Švy}}…‚myw„|‚}s‰t~|€tjztr|l‚~ˆƒ‚ƒ‰‚voƒƒ•g€~Šp™|„†‘‡“wxxv‘Žƒ•tu†ƒ†‹‡ƒ…Šx}y€qƒƒ‚~€ƒxs€€„~‡|‹€v|y€ws^}z}|ƒ~~orxƒ„€†|€~y{vy‹w~†o‚†zn}~‚wzwtxƒv~Šy‚~‡o€†ˆ’m‚q†‰|t‡nu„Z‹v‡Œ}v‚}vy|vy~‚y~‚}’|rtxŽˆ~rr„€ˆ€‰ˆ‰‚|t€€€yw|€‚~x‚t|€…p…~{€ƒzw€y‚ƒx†ws‚Ž{Œ…s‹‚v~lz†xz‚„ƒxyp~‚‚†w|psy’ˆˆ„Žyƒ†nzƒwŠ…x„llvˆu‰ˆ{‡ƒt}}p|ƒz~v‡u{‚{†…‚}q‚z}uy}„‚ˆhˆ~†yˆ{ƒˆuw}p„‚}‚w~„}w{op†{Š„p„}ˆ€s…|~„„xˆy‚w”‹€ƒyˆ{ˆ€{€Œ{€}“]æÌäò7ÿ3ÿ0ÿ,ÿ#ÿ!ÿÿûø õ ñêèáÜÚÕÎÊÈÁ¹·¬§£ž—Ž„€ysic^UOKE@;82-&! &*26;@DJOTZ`gnr†’Ÿ¨¯³·¾ÂÈÍÕ×Úåçìöùüÿ!ÿ$ÿ*ÿ1ÿ5ÿ;ÿAÿGÿLÿRÿYÿ_ÿ`ÿjÿsÿtÿ€ÿŽÿ‰ÿ–ÿ¤ÿ¥ÿ­ÿµÿ¸ÿ¿ÿÆÿËÿÏÿÓÿÜÿÖÿîٙ `’¡nx‡z‡y€~~–ˆ„‚|‚€‚z†‚~xxx{{€‡v„†p‰‹{‡x‡†}ˆ‚y‡{ƒ†v†xw…|zvuƒzƒ{sƒw…†x{†|}~€€}„zjur…q~€€Šsyr€s|…x€ˆvyxƒx€†‡zƒz…}o~{€†„yyˆƒ|‡u~€}‡wzxy€zw‚}…Œ~…|‡ˆƒm„w‹~w…ƒ|}‡”‡yq~~‘‰yn|v{}‰ƒƒ‚ƒyu‡w„€~€‰Šw|}z‰‰‡Š…w†~…‹„‡wy†}~p†€Š~}ƒl„}ƒs€„}€ƒ‚†s}{{z~„z†vzo€‚|†•s„ty`…€{s‡uœ†‚zƒ~Œw‚~‰‡~„„}‰v|r}m‰‡w…€k„xz’€€€~}zŠs†‚ƒ‚„…€„}wq~‚ƒ„ƒ„‰†uy‚ˆƒ~‚‚z†Š}„|w}{r‚…€„u~€„{€Žu‹|q†€{t‰i‰ƒ|oz{Œ„r€w‚~v…v{„|Œ|zˆ„t€„uypƒŠ|zˆŒƒ‡qp‡v‰€~…n”z„qƒy‡€zptry|€{wxƒ}~‹u„w~~q„xˆ}y€u}~{wx‚q~€~zŠ|cÄHÃá'ÿÿ~ÿ~ÿxÿuÿoÿiÿeÿ]ÿ\ÿTÿJÿKÿBÿ<ÿ6ÿ0ÿ%ÿ+ÿ#ÿÿýú õ +òîêåßÝÖÏÎÆ»½±¢¤›˜…}{smgc]WRM?=;/'' +!&*06?FKSYfkqy‰Ž’˜Ÿ¤©­µ½¿ÇÎÑÙäæìöò úÿÿÿ#ÿ(ÿ-ÿ2ÿ5ÿ?ÿEÿFÿMÿUÿ^ÿgÿpÿvÿ~ÿ‡ÿÿ”ÿ™ÿŸÿ¤ÿ©ÿ®ÿ´ÿ¸ÿ½ÿÃÿÉÿÕÿÙÿâþæøîõññöêûãÿâÿÚÿ×ÿÒÿÎÿÇÿÁÿ¾ÿµÿªÿ¨ÿ£ÿ•ÿ’ÿˆÿ}ÿyÿuÿjÿcÿ`ÿXÿSÿNÿIÿDÿ?ÿ8ÿ3ÿ0ÿ)ÿ"ÿÿû õ +ñëåÞÚÔÐ̽¶²ª –•†zqjg`XTNHB>90*&$*.3:?GNPV]cnu}„‹’™¢©°³º¿ÀÐÓÕßååð ÷øþÿÿ ÿ'ÿ.ÿ/ÿ6ÿ@ÿCÿEÿJÿTÿ]ÿ^ÿlÿsÿ}ÿƒÿŠÿ’ÿ—ÿŸÿ¤ÿ¦ÿ®ÿ³ÿ¹ÿ¿ÿÃÿÍÿÑÿÚÿÞÿäûëõñòôìúèþäÿÝÿ×ÿÒÿÐÿÊÿÂÿ¼ÿºÿ¯ÿªÿªÿ›ÿÿÿ‡ÿ{ÿxÿnÿaÿ_ÿ[ÿRÿNÿHÿDÿ>ÿ:ÿ5ÿ.ÿ(ÿ!ÿÿú ôîèäßØÓÎÊÅÁº·²¬¡™‘ŠxxmndXRPHC=;3++!;x[‰z_Œ†m{it‰…x†ƒ|Œ{|}|‹y~„|x~y}‡}xŠvu|{€vnqƒsŠ‡‡|}m}…z{–s‚‡Šƒˆ{‹Œ‚y„„…z{~‚„}w}nx€‚ƒ‰•„ˆkw‡‡|ˆ†‰}r|v‚|…‡‹‰sƒq†~}ƒ„–zzw€|‚ƒ€zx„zz‡x‡†y„{uvy{ƒ€~r†t}yƒƒ~‹€Œƒy‹x‰ˆƒ|„…uƒ‡~ytuuxƒ‰ƒy‘m†r‹†{}…|}p‰u‹€{}ˆy|r„}~t…}qv~|†zu|uo~s‚}‚…€€rtv{}Šu{‡€}ˆv}|x~†}…u†yƒˆ…ƒƒ}‚y~‡y~‚oƒ‡€x~m„}ƒ’|}‚†~t}ix‡‚…|v€yy€‰„„†~{„t’€…tƒ…{„’{x}†{xyrŽ‡…‡‚€‚{Šx€ˆ~xxq~~}€€Œ}z||v{Š‚|~ƒxt†ˆ{‰}}ˆ}z€s€…˜…Šxwv„`‚€‚‚‚}|}{Žz…‚€yt}py|Ž…ƒ†|xvgŠ‚yˆŠs‹syowyˆ||„}{sw…„t€{€{ˆx…y…x†u{m…græ7·ü˜ÿáÿÆÿÆÿÃÿ¿ÿ»ÿ³ÿ¯ÿ©ÿ§ÿ¢ÿ˜ÿ•ÿŽÿ…ÿ„ÿ}ÿrÿnÿhÿ_ÿ\ÿVÿPÿJÿEÿ@ÿ:ÿ6ÿ1ÿ)ÿ'ÿ#ÿÿø ô +ñìáÝÚÒÎǽ¸³®¨¡š’‰€uqnd\TODC@7/0(" + + "2/6AEJRV\agkpwŠ”˜¤«°¸½ÂÇÐÓØÜáåèíñ öýÿÿ#ÿ-ÿ-ÿ:ÿ@ÿDÇLrN§€}”|†{…}{‚}€‹vx|w‘ˆ…ys‰†}w{ƒ}ˆ~rƒyx~r€‚{„g‚ƒ{…ƒ}„†h‡oƒ‹€~~Š~|r˜„‚ˆ€†vy}po‚‚|ƒ‹„‰€e|‡ˆ{†‹x†€„„‚Š…€}€s„{v…y~{u}|€ƒ}„ƒ{€o…Š~|ƒ‹‚x}uŠ„‹Œ|…{ƒ…{{y‚x‡~‹w}„u…€‰~Š€†vŒ€ru‚…qv‹„‰€~ƒˆ€…ƒƒw‡yƒ†…‚…ˆ|so„ƒ…|‚|y†yˆz†xzw€{q‡ˆƒyhuxŠy‹o}u|rƒ‡z|{‹|wƒw†„…‚t…u„|wxƒz‡„yx‚}‰|‡m‚zƒˆwjt}Žx}{y‰†|†|qˆ{~ƒˆs†vƒz~€x‹wxty}}†Œ{vvŠ~|€ŽŠ€yƒ…†„‡y„|~™†‰wˆz…wx|~†Šy€€yy|z|Š„y„z†„|€‹ŒŒw|ƒvvƒ|~‚€€}y†r}j‡x~Œ|‚}€~‚{{~~‚†z|‚~{u}Š‚|q€~|†Žz‰‚„z€z|„„€Žu€{~„|~wz„zz†vv‰€€‰zƒ€{‰…~{y~vž¬as1>:FIPV^ckopx„‰‘”œ¨§µ¸¼ÇËËÖÝàåëîñ öúýÿÿ%ÿ%ÿ)ÿ7ÿ9ÿ@ÿMÿQÿSÿ]ÿeÿjÿpÿvÿ}ÿ…ÿŠÿ’ÿšÿšÿ¤ÿ¨ÿ°ÿµÿÄÿÁÿÉÿÐÿÔÿÝÿãÿæùíóôð÷ìúèþáÿÞÿÛÿÑÿÎÿÉÿÀÿ·ÿ·ÿ§ÿ¦ÿ ÿ˜ÿÿŠÿ€ÿzÿzÿqÿjÿeÿ^ÿWÿRÿHÿAÿ?ÿ6ÿ*ÿ&ÿÿÿÿø õ ñëéãßÙÑËÄÀ·´¥‰´\¤xo•…y|}wƒ}z‚‰z…†y……†vŠ‰{~€…‡‰v{x„‚{†~ˆv~‚rj|n†Ž~v~|†}w…z~~†}z‡{~„x‡‰|z‰xxƒr‚Œƒ}‚{€€w}z|†}}t|†Œxw‚u‡~~q‚x‰xƒ‡z‹Ÿ}…~c‡„}{zy‰mp}t†‚{‹n††‚|xƒŒ€uˆ‚}†{w‰s~…x‡yˆx|ƒƒq|~vŒzˆ{‚Š~{Ž{~”zx|v€zu€‹‰w’x~Šqxuwp…†nƒŠ‹z‚ƒ}|vn~Œ‰ƒz{ƒ„„…v„ƒw€{‹††ƒ{i|~z|€t}yzl†„|ˆ‚‚ƒ}€zpw‹‚€|ƒ~‘†z}}~‹{‰Œ}€„ƒ…ˆ€~‡€‹„w€ƒƒˆ‰‚€‘~|wxiƒ‹xŠ…Šƒ~rŽ‡xp‚z‚‚‡œ…n‹€|z}{€ŠrzqwŒƒ{wfjŒƒŒ„xƒƒ„€~}€†„x‹|}v‚{}ƒ‡z…}ƒ‚„|ƒ}zƒwvr{{{~xv‚‚~‚~†|‘‚{|}t…|vv‡’‘y}Š|wxzyŒ‡†€‚x}‡‹ru~{‰‡~„Žt‡{ˆ~‚‚€s“ˆz•~vŽŠxmˆz~|uŽ‚ƒ„‚‹†{‚q|}‚z‰€y„…tˆxƒv}~}y|‚}‰z…‚€~}|†t}}€„|{}€x†s}z}yi|i†ƒ‚yw…yxw…v‘†††ws€jvl‡…‘‚uˆu†‚•ƒ~‰‡{oz—r|~€Ž‚…ut‡{‰w€„€‹x{{x‚zu‹…pzy‡‚y„~t…uˆƒ€‰†€…yupzˆ~†v†|}€y~sŠ}Šy‹‡zƒ……ˆs{mt~ƒŽƒ„„~v†w‚ƒ{šˆ€tm†y{zs‚zx‰x‰ƒ…‡„‹t€‡…x~q~~…}„y€n‡u}{Šy‡x}}y{}}u†~€€€}w{}{wxƒx‰Š‡{‰}„Š†ˆƒ~y„|Šƒu{w‚ˆ~u€i„v‘u„ˆxy|‰€‘ƒ‚‚€Ž|€~†{Ž‚€xv~rz{‡xu‹syv~‡{†sr~wˆ†ww{‹ƒ†‚{s–s…ˆ|ƒyw‚z|†€xz„€…~ƒwyŒ„}~x‹€ƒƒ‰‚yx~‡“yŠ‡xzŠ}x–ƒ‡y†ˆ|{‚„‡xw~‡€’z‰{}|y€‚y‰€Œ‹{z–u|„y…yˆ}„zxƒ€y„~y‡„z€x‚}€zƒz„uƒt‹Š†‹†x„ƒ{‡‹ƒ†y|‰{‡xz‹tˆ~„€†to{~syv~|v‡€†‚Š€Œƒ‚˜v”~q|…yoq€{‚€{ƒ‰q†}w€~‡y‡€v~xyˆtz€ˆˆ††xst‡€z‰„x‚r~‚z‚xŽ{{~ƒ‰~Šu‹|rn‚‡~…uwƒ|s~yy‰ƒ†}Žxz‚vƒ„zˆ‰tv}uŠyu~{‚‚†ˆ€ˆ‡vgzl†|ƒ‚{ƒt„w€‡‚‚ƒ‚€‚ƒv}yx~‹~ƒw{†ˆx‹~{ƒt…€€…~…‰„~~x{~ƒ€{}Ž{~|€zŒ€’xƒ†xq…v~……†‚|„|ˆyz‡‡‰‰‚z…y…w}ƒv~‚~…Š}wu†€szy‚ƒ~„‚}‡ƒtƒ|~|†€{txq†|s„……|wr|~z…z‚‚yt‚}s€w|Œx€}‚i}€„‡‡x„}‡ƒu€‚vŠƒ{x†{†Šˆƒ~|‚wˆ„}ƒ‚…€r„{‡~||‚|„}zxzl‰xƒ„‚q{zzƒ„t„|‰‰u}y}}~‚~‚„|„‚‹~~ys†m|}„’‚~…€x~}wŒz~‰ƒ‚ƒ€ƒiƒ‚…„|x‚}{~x{‚†€…ywƒv~xu‡Œ‰†r‚{†~ƒ€‚‹„…ƒzk|†Šƒƒuˆ}xz~‚†€‹‡€ƒ~‚{u„uƒ|‚}…€q~~‡ƒwƒ„|……wy‡{‰ƒ}„u{„…|…„w†tŠ{uˆ„}‰‚„{{zˆ~ŒŒz}Šu}~w}ˆx‚€p…†z„‚‰‹‹~‚‚}„ƒƒ‡‰ˆ‚ysyw{}~‹€‡zz‚‡|€‡}„|Žˆƒ…}}ˆ„}ƒ‡}||}{‚†}{~xt‚{u‚€}‚z‚y{‚€‚ˆ}‚„x‹†‚“x†vƒzˆ}“ƒo€†u‚„}‘y€‚}{{~Šn€„…z‡„„pˆq~ˆs‡‰|‰€„l~{y|ˆ€y€‚€u€}~ˆ€l‚yƒ…‚‚~‚Š„{v}ˆ‡~}ƒƒ~ˆƒ}ƒ€€‡{ˆzvƒx~‹xƒ}…„{r‚„{ƒ€‰€‚…}ƒ{…}zy…~†u…‚x…vy„ˆ{Š~kƒ€v}r€|}ƒ}‚…†vv…u€„|ƒw‚}|||v€z}{y}„ƒyŠ€~‚‰~{x‚Œz…x}|‚uzˆ}ˆ}ƒ€„}x}}€Š‚ƒz€ˆ‚…y}ƒ|‡{v}t}‚‚z‚{z~v‡‚†ƒyˆt‰wt~„‹|~Š||x†x„‡vp|„y‚ux‚w|„vƒ‚€…‚x…Œu€…v€„€…€Œ€z{€w€ƒ|‚|i€†u‘}†}z‰{yŽˆ‚{}‚„~‚|‚{€|…„‹…ˆv‚{Œ‡{r€w~~|„‡|‰rp†‡z|z…•„t‰~|‚x€…fy‡z‹|z‚ƒ‹€’{ryu‚xŠq‡vxz~z€Ž‰‚ˆ‰|‡x{‚y‘ˆ‹ˆƒˆp…‚„u‡€m{ry€|„‹zŒ}Št€ƒ€Š~—x€|†„€†~{zs|Ž‚…qˆ†}~{‡€l•yŠ‰y|„‘|……‰{‚r„ys‚€€„y~t{x~†‰…Š…u…yŽ‚‡„xw„‚rƒ‡€„…qxzx‡y„}†|‡v†‡{†ƒz‚‰dwyy}zŠ‚z{{|v}y|~xp„y}}ƒƒywpv‚rz€m„ƒˆŽŒuƒx{ŠŽ~„†ˆ†‚~…ww}|Š„€|„~m~€}|}€y…s‰{ƒy‚|}}}~‚‡ƒŠ…y†w‚|€€†€†ˆu‰ru‡v~‡u‚zƒƒ‚}~}ˆy‹x‹w{…}„„wx{Š€‹„p~€€x{sˆ‚~’‰~~„~w“„€~}u}…„vƒƒr‹z}‰„‚…ƒz}…vŠ|‚ƒ}x{vz{‹|€‰{ƒ††„ww†‡ƒ|‚}Šs’m„ˆŽ‚†€}…{„zƒ‚‡~yŽƒw‚|€€ƒx~x~y}v~z…~v}v}x€u…ƒ“|ƒr{‡x‡u‚z…‹†xƒz€yƒƒ‡‡|y‚u…€‚{‚z{qŠwƒ|~Š~ƒyzv†€y‡x‡‚…~„v}~{€v‚€~ww|{…|ˆyt|†y|„|†‰xy€q‰|€{s†ƒ…ˆ{‰…ˆ…}xvƒ{n€€€ƒx‡„tsxzzx|xw€‡‚y{ƒ}qg‚ˆrƒ}z‰€eƒp„}‰qŠ~‚{{{…‰}zxtp†s|ƒ€‹‹l„}}„€y†{u‰{ƒƒzˆ|Œ‚x{‡{|‹y†z}†}|ƒ}‹|…txˆuƒ}ƒz|~„€}Œ}p‚u€‚w…uw~…qv‡v€qzvyŠ‚yyv|ˆ‹Šrqn€‹tt…|€†xq„u~€…z{Š}‘……|wŠtƒ}||€zz‰‚ŒŠ€Š}Ž}}‡ƒŒ…x‰‘y‚{}‰~…€„q‰n}‰~uƒ‡Š‡}†Š}…{zŒ‚‚’vy}|…‚‚ut€y{~~x‹ƒƒ€Œu~|yt‡}’zzw€‡x|{}wv‰}~ƒ{ƒ€wˆ‡}†{€w}z…Œ|……|s‹|ƒˆ…†€ytu…{†~„~x†z‡z…}ƒ}~}zz€€ƒ€€{~uŒ…„„{s}z}p„{‡Š‚}€}v†}z}‚}v}yŒ€ˆ‚‚{†|{|‚„ˆ~„~…r†~†|}xt€~{v~{‡‚{{ƒ}‘€„wxor‚‰}Šzt‚‚{€‚w‚}y‰kˆy‰zƒ…{„‹k{†t‹„„v’|‡„„w„„†ˆuxŠzt‚|zvv}…}…††}‚i‡€{€v€Œ‰€Œxˆˆ}‡w€{{Žvv€|x‡u~}s„|‚}}ƒ}…„{…ps‚|‚ƒzƒ}{{t‚{}…tƒy‡}“w…‚††s€u~p‡€w{yŠ…€}y‚vy}Š}ˆ}‡…pƒyq~y}Šy{‚{x“ƒ„‡x„|rn~…„‡y€~~~†„~}ƒivzr†z‚€}…u€yyx}ˆ€Š‰www„€‚‰†…xƒ~{…ˆŠŒ„€†qŠ{q}†~|yz…‚ƒ„…zy~~~ƒs€€€„…y…sw~~„„Œƒq†|‡‚†xz‚|pxs~}„Š€|sz~}‚ƒx{}vˆy~u‹{†z‹“‚ƒlƒ†l{€Ž~|€€|ˆ……‡{}„wz{€v€‡‡‡Ž~y|††…~‹‚~‘‡‡}y{ƒ}v€‡yŒ~}}|‹ƒ|{p’…ƒz|…}„”|ˆ~€€y†||†r~uz~†{’†{k{…ƒ‚vƒ|tyx€‚{‹{w‹ƒ†‹{†€~„y†w‚Ž†z~~Šƒ‰‚{ˆy|€ƒ‰‚yvz~q‚€}€u†Ž~tv~}Šƒ„‚~{‡vxƒ…€w†x‚…ƒ{„†vˆ‚xxv„w‡|z}€‚y‚{q~|‚€}z}|v€ˆ{}w|~‡yzqu~{€{‰ƒŠzŽvv~y~ƒ}…oŠƒwƒƒ}ƒŠzpŠxˆŠz{{y…wŠ{‚‰y‚…†…yw~y€„†|z‚zƒ~{wx{x‘}{‡z}~}‚„‡|…yƒ‚~„……Œ‚~vt~~ƒ‡‹Žˆz|w‡{‡x~…{u†k~{€l‰‡}„yt€z‰€v…‚€‚yz„Š€†€wysry…tƒy‚{u‹x{‰tƒƒ†|…yv}Š‚ˆ€…yŽ‡o‚o}„‚z€{oyy€ƒ‚†…y†‚y„s}„…y€{r†o}€€~ƒ}‚y}‚w{ƒŽ‚~„‡}…ˆ‰ƒy}zr†x~st…€wowŠ‚’‘‚€~}zwt}…•‡y~z…{z•|z~}}‚…z„v|€†~}z{}~w|†€uyzƒw€z‰xƒx†Œ†„|„€~‹‚|x„‚„€€xpw€ˆ~v{†…}z}w†„{€}uˆv‰wˆ~z|‰nƒ}‡w€†og€…‚|xx‰ˆ„{u‰}ˆ…j‹s}…}~‹v~†o€†|ƒ€|‡o˜{z„„}„Žx‘m…~„€ƒ‚‚w„r~ˆ{|zt„~Št‚zˆ„€~…u…‚w…{{‚‚z„}…‡i†uƒ{{~{w„Œz„z‹~€‚‹‚‰}„ƒ„w€†v‡ƒ~Švy‰‰€}w‚z~h€~xŠr„…|v‰x€|z}ƒpwttzwzxzvw|„u}„v†Ž‡ˆ„vz}Š„ˆˆ€„z{‚y{ƒ|—„}rz{rŠ~v„}o‹mo}n‚ƒˆ‚ylu{ˆ~…ƒz‹‡viu|}Š‡~‡|x‡ƒ‚„ƒy–wƒƒq…z€{‡vn|p€…u~…kz‚m…r|‡ˆ~v}x†x„ƒ†{†‡n{~ˆ~‚„€‰xs{ƒ~„}z‚~}{s„}…ˆz}„xs„{‚wxƒ†‡…‚„~†‚z€z~‹zz‰|‚…‡z‡„vuŠ}{†‹w‡{zƒŒ„…ŠyƒŠ~ƒ}v‹{€|‘…|‡|wzu’}‰y…|s‚dzv‚ƒ„~}†{|€€†€‚ˆz}Š|€{…„„€x{„o†u~|z‚t‚~uˆƒ}€|{„y|„…~ƒ€~q„–}’{~y†s‡|y„r~‚}p„yŽ…€‰|ˆ|„r‡‚†}y…ƒ‚~ˆq‡wsƒ}wtŒ‡‡yt„pƒz’‹‚‹‰‡€‚~‚‚…€„~{{~ˆ‡z†}„‚„‚ƒ{xxr‡‚t„ƒ|~}u†x„~uv€wr‡}‚…{x…}}‚z{tƒ}„…ƒ„‚€“‰‚z‰ˆ†…yyp~u‚xw~„h‡|ƒ~z„„szxzŠ{p‡p„spwx„€Œ€y…|sˆƒzˆ‰{‡…‡††~u…sƒr€w|€{~r~ƒ…‹ƒˆ…‚|ˆy‹…xŠ‚†y‚‰v€zŒx|ƒˆ„wƒwŽ~rƒy}„‡‡{‚}{yw€’‹€uu†}ˆ{€Š‹„ƒ~„€~€{†o†‹x|}yyy{’†‚†‚y‚‡š~ˆ‡ƒƒ{ˆ„‡ˆ‡„|…~{kt}s‚†ƒ{‰Œ~ˆmy†‚‚zu„y{{„†|~wxˆ{v€‚Š|†‚†||ƒ‡y‚wzt}s||~}}Š}‚„t€|yz€|~‡€v…q•†y„‚z†ˆw€y}‰{vu‚nŽsv„…|~|††zz€‹‰ƒ•„r‹}uyxz’Š€‚ƒ~†s„‚{€z€}ƒ~pt†{€„{Š}€zƒ~yŒ‹‚y‡ƒs‚y|…xƒx…ˆ~‡xz‚s~~€€}€‚zxƒ‚z…}x‹Œ…z€v€xv|†‹w†w‡yƒoƒ‚†{…z‹nsyƒ‡‰w}‡‰|‡„z|‚{}…~Œ‚‰€„z’„y‹€ƒ€…€‹‚†…€~€z~…q…{|‚‚ˆ‰„~}}‚€†‚z…€€€{|}~„tˆƒƒƒ†~~w€z{‰{zŒ|†t‰…vr{toqsƒ}y~}€{xƒx{‰|z€r}tx…„~‰ƒˆ€u‡~ƒ‚…„uw~†y‹}€ƒƒ€Šwˆ{†€€“Š„€|yy‰˜x‡{|zpƒ}€‚{wp{}{Œ‰ƒ„„‚†}y{Ž€„”†‡ˆr€Š‡Žzxvjvp|o†Œ|}„{s‹ƒ‰…uuus~‡~…’€|‚„}v}–…ƒ‰†Œ{…n‚‚„zo…y—~zzrƒ‡gzlzžu{ws…„z|‰|y†~ˆ’toxtw†ŒqŠ…y„‘~ŒŠ||„x…€v‡†}†z…r…‰„ŒrŒzgƒvplu…|~‹‹v†™uˆƒo‚Žs‹Œeyyo‡}h„~kˆ‡“}…r}|tfu|i|”o€xŽ–ŠŽ€ynywŠ›n‡jƒ–ƒw}uŠd|‚~†‡~ŒŒ†{€ƒ€‰yrrqss{‚„„†—~ƒ€x‡|~ƒƒŒv†z{w}…ƒ|d“t‚ƒ‰~•m„†”„€y|œ‡}„st’…‹–„y€‘ƒ…€nzuwƒ~‰q‹p€u†x”up|bŒ‰~…wˆ} Š|wwˆy†žz‰vy{tpmdz}v‡{{€‡i…~w{‹zƒz’ru{x{†ƒ~Ž‚ˆ‚‚}Š‚~–…ˆ‰jƒxoy~}Œ|“kzv}}{„}€tx…ƒuzk|~ƒ†Œ†ˆy˜}vt‚€‡vžm€~€‚‰€\ˆ€‰y‹vw„u”“‰zo‡~{‚~iq€‡nŒs…„]‹‰z‚‚€‚sšš‰‰zww‘ŠuŒkq}y|ƒszr{y‡x~ˆx|‚•~ƒmy|x~Šw„q~y{iŠy€†}ˆ~p}ƒƒŽ|czy„svs~k€‡€„]s^{w…”„€…l‡™}|‘‚ƒŠ|v˜y||€‰Šxv‰€Š}†“w˜—ƒ“x{w…}„yapxvx€qƒyn•oƒwx‰~zŒ‚…{ˆˆƒ{sŽ„ˆ„z…‡y{„qw‚l~~sƒƒ‹‡…y~ˆyp…g„uyu‰‚yŠf‰ƒ|…‚w…{{™•{wtv‚xtyˆƒ€vƒ}y‡˜ƒš{q~‚‡|‚lœy|m…„‹Vx|€‚tƒ‡s‰š‚ŠvŒ~x‰ŒpŒs|…‚j€‰yx}d‚…{r{y„z||Œ„ˆ~{j†u‰‚€€Š…w…xŒx…†tu}~z}m‹…tŒ“ƒƒ…‡…xvm‡qƒ~€wzzŒ‡”|zŒ‰}ys†x‡u€Š†|…y‚xyqw†|€yl|‰ltis€‹wwvv~jƒŽ‚€€w{zqjsrŠ†ƒˆy|zxu‘ˆƒ}}ƒ}‡x‡v}‡‚xxo|‡††ˆu†m‚z‚Œ„‡Œ‹ƒ~„r‰u{~‡p¡rm‚s•‡{Œ}h~Š~{~€ƒfŽv{†nqwzsˆw|m‡‚vz†~’‡ƒxw~„s……€„~~}t”Œ–ƒ|‚~zŒp~p‹Œ|‚‚ƒy{zroa†z…„z’„zlƒx‚tznqt„{w}ypƒ–r†l‚‰‰h‡u‰~w|‚wq–u‹}|zz…‰pu„€|l‹zŠ€aszy}l}qb|y€|z„|t†ƒŽ‡€ƒ…‚xŠz|‘s„~wyˆ‡•Šw‚†z…}{pvr‚Œ{o‘p‘“q}…’z}„vy–††…|{…qvƒ†‚‹‚€x{…‚„y‡‡€tq€‡Ž€†}‚„|ˆ|v’xˆ|{†‚{ˆƒ~Šƒƒzvƒx‹x|xtƒs€{z€}{‚}‹‡†~‚~€„ƒ~…t†~‚€~{…{ˆ›o…{…{ˆ~m‚€„wx~wƒv}†{~ƒt€{‰xzˆ}…•x…x„€zru„ƒ~y}ƒ|‰…†Œx{„€„s„xxŠ~o†vxŒyƒ†t{‚r‚}€‰z‹‡~‰‚y€ƒ|‡“Šƒq„‚|}~|~y‹—~wx‰v‰‹†wƒoy‚„q{‡u}„„|ot‘†}y€‚€‰Š…‚‹z~…{‹†ˆ}ˆ~{{sƒ~uu†‚‚ˆƒ‚„{Š}…zv„|~qƒ{‰…y„ƒ„{w†w…{zv~Š~z‰‚”~}‚t…„xw†l€}z€‚‚‹~Š{ww†}ˆ‹{~”w|~zz‡|}€ˆ~{|zƒ€Žƒƒy€}}wŠˆ‚•|}|‚|~v{Š€ƒ{…†x}}zw‡€‚€‚~€}‹€Šz|yy‚}…{rvƒy…‰„‡ƒ†Œ{ƒ‹„‡{yzzƒ|ƒ…{„rna€†}‚ƒx{ƒuw{x„…zyvty{€„w~z„zuˆ…|~wpˆziot}€†xƒ|‰}zx†ˆ€|}ul€rz‰‡~†‚„xxy…Ž—y–zy‰y~„ƒ€€zr„x~‹‚‚~x…s†‚‡ˆ€{mx~x‚‰}{Š|–w‚€ƒ€z~|‹{y~‰†ƒ~}{Š~yŒ}†}o}~„€ˆy~}yuwf‚~‚†‰zƒy„‰vƒ‚ˆ‡v}f„}w„ƒ‡ƒ~Œ…}rxƒ}ˆŒ…‹vƒ}€„†‹‰„zŠv}~„z~~…‚‹}r|{p†ƒ„„†z‚vyz~„zˆ€~r‡u‚~‚ƒ‚…wx“p†Œ‡‚u{€“|ƒ|vw…’t{ƒxŽ‚uŒ|j†y|Š||‘|{r}u…„{‚‚‚‰‚rŽm|ƒ{‡„‚•ƒ•‰|z‚Ž‰‰Š‰{…~€ƒ|‡‚ˆ}‚{zˆ€€Šƒx}qˆ…Œ~‚‹wx€xƒy€„€‰w{~ˆ††}~~}l‡ƒˆ…ƒ~Š€‡b‚|wz‚€Šyƒz…yŠ‰„‡‡†vz€…„mr‹z}z‹…€‚s‚wuŠŠ„ˆ~…‹€„„}|ƒ‚vvv|{yƒŽ…Œ‰‡€y‡~…Š€x€„„{~…{{‚…„u‚u~…{‰„}‚ƒl~‹‹‰}z{|{x}„|„‡‚ˆ~‰oŠ}l…†z‹ƒyƒw}‚Š|}v†…„Š||yŠ€xq€ƒ…|€†‰xr‹€r|‡€Št“ƒ‚~€ƒ|™vvˆ~x€‹m‰pˆ‚y‡€{…y‚{‚†‚}†“z~}x~€w„ƒvƒtxxw€yŽx„v}}€}‹ˆ†‚€†|‚ƒƒzs~{Š…„€u~rˆ}†|y„w‚yu~{o‡ƒ{„„–ˆ‚€‰y{}|‡„‚„‡€~’€aˆ~ƒƒyx€“Švwrwz€€…yŽyƒ†}|v|x™~~n|…w„z€‡…~…{ˆ{…|yƒ|}„…yx|}‡}€Š‚€ez|{†€ztwx|z„€v{w€}~†yr†x|z…m„xƒ‡ŽƒŒ{wq‰vƒ}‹zŒ}o‘{•€vv†’u„Œ‚„x~ˆ|ƒˆpa`y„ŠŠ‚‚‡f‡€}ƒ||~€Œ{~y~|~ƒxz}|‡{„‚ƒ…€}yu†…~…ƒw{‚}r|ƒ|j‡}„ƒƒo„z}u}…uw{ƒ{ƒˆˆ€x‚y„‚{z†i…~{y„|‚zŽyxƒ{|–}„y‚{‡„|ˆŠ€‡~„…yw‡~ƒ‚~o}z~}}†ws€m}}‚{}uƒ„…ƒxƒ~†{„w‚twŠ|||fr…~„y}r…q||ƒ}†…‰€r„~†~tty‹…ˆ}€„€zq‰|Ž‹‚w…y{y}}}‚y™…ƒˆ}€~‰|yx…v€ƒ€‰€|‡zŠ‚w}w|‡z~€†‰~t{r~|†ˆ—‚}ƒ}ƒ}‹‚€†`~xwˆyˆoz{‹…‚}ˆ‹|‹u„xyvŒ‡„k|…x|wˆ{y‚}y†~x……tˆy|†w{€yŒ‡q„ƒz‹v~‰˜‡‚wm‚‡s†t‰}|ˆy‘xz~r}o‡‡{‡ƒmzw}|…~xw€tuƒ€}†“||”„ˆ†|€xƒ“€‚{}s|y€x}~‹†ˆv„~}Šl‚vuu~y€ƒ€~Š‚~‚q‡„z‚y„xŠuwz‡Œ{„v|{}‰ƒvŠ}vƒƒ{|vs‚uŠ†wƒ{l‹’‚„„y‚j|{…x~|z€u‚|€x„}~„€x{|x‚~‰|ƒsz~„{‡r‚ƒ~ŠŠ€{ˆz{xw‚~‚Švu|„~xzv†…‡‚vtzv~ƒ‡„ƒw~€~†|}€wz€‚uy‹Œ€wyƒtv„n|xyy‰†}€s€…„‡}w…un~uzŠˆy~}†ˆ…ruwƒ‚}‚{{†~|ƒ€„‚n„‹ƒl}ƒ„‚‚}‚’ƒˆ„ˆ~{„{…‚z~~ƒ‚xsŠv…ˆzz†ƒ‚‡{…vzƒ}xxz„~|zy€}~~…‚‚„{y|{ƒtƒ}{v~„z€€ˆ‘‚…„zyƒ€‰{zzy†‡}|~{w‚‡x„vp}‚ˆzo„x|yƒƒz‚z|‚z~‚~z†zŠ}ww‚‹‡w„y€ƒ{Šx|r}Šˆ{„{q…„z€†w‚xw„y‚}}r}zzˆ†‹|uw|w||†•………ˆt|vy‡|~{ƒv€€h~x}‡„yƒ‡x„|w„ƒƒˆ€‚‚vyw‘uwyƒ||…p~xu‡†y„sr}t|~{|zˆ„wr€}v€Œ|“|px‡ƒ…|~vy~†{‰|~vvvp€€†y…~Šy„‚wx{„~ˆ{‰{ˆtv‚‡ƒ{…t|€r‰|‚…‚w‚ˆ€‰‹{†xˆ|~~ƒˆˆˆ„{…wˆ}|zz‚}w€ˆ‡wƒŽpk{…‘Šƒq{…v}‹|–‹~€urˆŠq’zˆ~v~‚v€ˆ{v€kƒytz‡Œ„}o€v„‚‚Š{’w‡r…yy‚|q„€€‚€~„…ox„zwƒ}ˆx„„Šx}„…„‚ƒt}xy…‹†}ƒ…tuu€‚‚‹~ƒ€‰€z†s{}†{ˆƒ{n}v‰ƒ{{y}|}v†}€ux~}€~w€’uˆ~px€~‚Š‡„Šy‚t~Š‘‘…{|€z‚h†rƒ–r|~wysˆmŒŠy…u„|‚“p|‰wxˆx…y‹{ˆ€y…„|tsy‚w†ƒƒ†ƒx†€~€}Š~ˆ€u‡|u€ƒ|€w‰ˆy|xzz†ƒvƒy„z~{vrŠ…ƒwrˆ|ƒ‚ƒ}‡€}Œx}‚kz}Šƒ‚Šs„’……}w‚‡o•ƒt‚pz…~„tyvf‚€ˆt„†€x~~}‰„€r}~{{r~v„o‹€~‡…ƒˆv‡z€€~{†y}†x€|}}…‚}„‚x‡ƒx†zƒ‰}x†x‚„€„…ˆyŽ†ƒy|†v~}nktz€q‚Œ“~{{Š~‰„xwvz|ƒˆ…{}{ˆŠ’‰ƒ~x{}‚ƒr‡|€‡}‚€‚x|ˆ‰wxz}€…y†ux€~ƒ„{x‹w…n}zx…ŠŠ‚Š{y{‚…v}~s‚|x~‡†‚ƒŒ…{€ƒ{vz{yˆ|€‚~€…~†…y{vˆ€y€ru€†‡r{†~yŽu}x~z‡Ž€}{…~„{h}ƒˆ‰~‚nƒƒ€Šz„ƒ|„{~|~yŒz†}r„v}~tƒƒŠ‰y‡vq…}Š†‰}{u|†ƒ{‚‚…xˆ€€}}}~{…†v{yv‰‹„}~z‚ˆs€pŠƒw€n{ƒ€ƒ~‡ŠŠy|szŠrƒuˆ„‰vw{}…Šv„Š€€†uy}‰†‡„z†wƒ€‰‰uŠw‚…sz‚|xp…wzˆx|…~{„}xƒnƒ~~x}€yx{||{Ž|ˆˆ€~wvu„ˆŠŽŠv}~{‚{p‰{‡wƒz†t‚yƒ‡‚‰x‰o‡Š€Š{‚zsxy{|„ƒ€Š€……uƒ‚{{|Šw‚†|€ˆ|„„~}‰€†{ƒ€y†„„wyˆ˜‚{‰{|€~…Ž………x|‡z{~zŠ‡‡ow‚w‚…s…{Šwuv{qu||ƒ|…€wŠ{}Šotvw€v€‚~tƒˆ~~{ƒŠƒ…‡~‚~‚€~}”{“~|s}„ƒ‰‡~|{‚}~v…ƒ~ˆw{€|}{y}…~„…‚ztu‚€‡€{s~…€†€}yrŠ€…€x‡Œ{|zwz†‚|€oƒ{}rt‰‚…„yœz„‹„ˆsptw~”Š~nyzuƒ‹ƒv‹z}ƒs‘|ƒv–ƒ„~uqz|}‚„}wz€ƒƒƒw}‰Œw}~v~€uƒ~Œy~Š€…v|xuˆƒ€‡†‚wqpt}|w~€†‡•Œw{}||†‹}|z}€~|‡{€†…€Œz}|‚}‹Šy~Šy‘€‹‚‚s‘ˆ~{yˆrw~z}ˆr}‚„|ˆ€{ˆ{‡~‡†‚……{z„~|~wƒ‚wws‚v‡~…„tŒn|€„„~‰x…ƒ{}„w{ˆ}—vyyx{ƒrvƒwx~{€…†~‡‰‚}‚~xxyv’w‚zƒx‡©}€}r†€‚ym|r‡…w{…‰†„{ˆuyu‚}…{pz}{ƒ‚‚~‡‡|{…pw‰{‡€}…‰qxw|…†}w‚€~|t€ƒy„yƒ…w‘vx}zƒƒ†xr~}qiw…wv‡zƒ†o…‰|‡|€{~Š…‡yƒw„{Œ†„v‚~‡|yy‚}ƒƒs|‡ye‡„†xŠvyzyty‡}ˆ‚€zsx‰o‡}†r}†ƒ~…–ƒ…‹wvŠxƒ’}‚ƒux‚vƒv}€|ˆ€‚}y{~‡‚‚„mw{‰~‡…zƒ|……€†~x|w…’‚Œ€€|yx„~v‡„ty†wˆ‚vˆnxxxƒwx}xv„m€y||y…{upv‚‡syŒtƒ}|„ˆ{{ƒux„s‡‡qz‚{†Št†ƒ|„‰~ˆyy‚v†y‹{{Œo~€v‡yˆz~~†y…€…x{tˆ‘|}s~z…„ˆvpxzvƒ…|†z~‰‡|y~…~€ˆ‰‚||}€†x„…ƒw~{ƒ€Ž„x}y{~€v€{w…~…{p|ƒ‡Œ…„xtzv~xƒv…Œ„y}tu„z‚‡„x~t…†‰~…vy…ˆ‡v€€z€‡ƒŒ‚|z}~t‚m€y‚‰‚‚x‡}v}‡~…}‚‚wzwz‹‹|Š{uŒ‡s‡’x‚„{ƒul€uˆ…‡„~qzvmx…w€€z{~nˆ…ƒ}{{ˆ}…z|‰ƒ„xts„†~ˆŠv…tmŒkt{‚…pn‹‚‰Œxv†sl€~~Œqt…x‡r‘…ˆm~‡Šzw€s€}€‡y‘‚lŒ}|‹~|vh‚†‡‡vvt|vy„‚ƒzŒt‡}†tu€•vƒ|ˆ€„~€wx„y•„…t‚}ƒ‡€~z|y‚w‹‚„}o|~†{†}|‡y~l€z‰…‡Š{€p|}‚ut€~‰€†zq†|v€~‡€‡|€}€~…|}t|…~€{z‚ƒz†‡ƒ„Šˆ‚|ˆ‡y€}}†„Žy{rs…ƒ~ˆ|€‚w…‡„„|xƒ…Œ~‚{‚z|‚{Š€v|‰„‚z„‡u€l„y}Šx€ƒzƒ€yv˜‰‚}‚~†ˆ€‰xv|ˆ…}ƒyƒz„s„s~‡u{Š†…}w‡z~~|}}‚rz{†y‚|‚„w|m†ut{v}y}u|t€}~r“u{‰uy‚{€ƒŽy|{€~u~}tƒz}q{€‡z„tŒ€†€ˆ~x„‡††u{‚„~ˆ|v}‰Œ~€€x~yw†{}}‹~v}‡y|t‰o‡‚r|€†…ƒ€‹…vˆz„{‚v}‰s‡€ƒŒ€|w~‚…y‡}}‚ovxl}‡€‰ƒ|x|y…|~€‚ˆƒ†zy€Œ€y~u‚„ƒ‡x„t‰‚n†wx„z~||}‰€zy‚‡…Œ|}|~~…‚yƒ‚y‡ƒ{{wv‰„ŠŠƒ‹}t|w„……ˆ„‚€…‘x~xu…~ƒˆ{†{†‡~}n~‚‡„Œ€†€}‚‚t‡†xy€‹ˆ‡y‚|xŒ‚ˆ„„‚~~}‹xƒ{|‡€‡€w‚|{Œ‚„…‡‡|‚|†‚}„w}‹x†y†Š‚txƒ€}~ƒ…q€y†{}}ozƒ†‡p‚x|€p„v‹zp„Š€{wr†|}ˆ„†‰‡pŠ‚x‚xu†}|v€~w~‰}ƒv{w~}|sz€Ž††…‚€|‡€~~ƒ{xwur†‚ˆŒ}z„€{€~ƒ…~‚ˆ€„‰Žzz~{„}}~†xwwx‰{ƒ}~…y…„}w|}‡Š‰|y|y‚zvw‚‚|€py‚‚{z‡xŒ„ƒ‚~~„uq†}ˆ€{}‚„€~„ƒ†Œvwq~|€†~yz‹„tŠx„…|}„”ƒ‰€j…„zy{v~‡‚€“…†‡…q‚‡{u}sw}z~‡{z€|…ƒz{|{ƒxq‡…y€€~~x„€x|{}†„‚‰y€u{}„{~†}‰‚…ˆ€€vzƒ|u|vs…€}„{}€|…tuƒ}}‡‚zyp†Šƒ€uŠ€€rvŠ{Œ}w€u~~‚v‡‰€Ž}x|z~y‡€{‡€w††|Œ}w}€|ƒ|†‚‚w€uƒsƒ}z€~‚~|}Ž‚†xƒuv~‹€~‚x‚w„ƒ†}Ž‚yr|t‡€„}‹yz{‚z|}€~~“{{~}}Žw’~n~ˆ|„…€v~z}~rr‰…Šs~„|…}~uŒ€{ˆ‡†Œz~x€y„„|†€ysyxv~ˆy…}~}‚€†tˆ†ˆ~|zx‡ƒ|ƒ~|Žs~s{€‚„„}‹~v~ˆƒ‡y}i}~…„ƒzŽ}…yw|†„ƒ‡Ž}†}{ƒ~‚w…ƒ‚~v|…yŽƒ‰Šwx€zwŠzƒ€zu|{w}’…}€~„v„‚}€ƒ‹x|ˆ|‚|~{zŒz‚}{„„ƒ„}{†~{sz…‚‚~‚‰}}‹n†…x}ƒxs‚txŒz‡{„rs‹…“‹~s„z|ˆ‡Ž~r‚ƒzqt}{œz}}‰‚|}k}y}„††ƒ‘uqq}„x’€†€}{„y„{}w…~v~v‡w~~‚z‰„ŠxŠp€}r}„u}†pyy€zx|q{„{ƒ|†xƒƒ„w€xƒ…y~xzz‚x„zyy‡ƒƒ„t†vvƒ€‚‰€|€}€‡v„x‚r~€‚y…ƒ…|ƒ‡{xz|~€‹„z{ˆ}†ˆz€Œƒ„„pyŠyˆx‚~zƒ~z{}}yu€ƒ|z|wz‚†ƒ…~y€yŠy}€€y…z||vt…~|„}ˆ……~ƒ}ƒˆ‚ƒ‚y†ƒ€ˆŽˆŽxŒzz‚~x‹ˆŒs|t„†‡ƒuŽw‚€~yz…x|}{m|}ƒ‡…w~ixƒˆ~ˆ†~‘yzwqˆ‡€ŒŽ‰uzvxq„ƒƒŠ€€tq|…‚‚Š…|pˆ~†{}}ƒƒzw‡}{ˆ€uk~z‚†‚‚ƒ‚}…Œ€‹…ƒ„ƒvs†|Š{‚tx|p|‡…zz}tyzv€ˆh}†}ƒ„€„ˆ‹‹~|€|‚~…†z…zx~ƒƒoŒ{‚†€wv|ƒƒ‡|‡{„~†‡Š†Œ‡o„z„€„ƒ…}…zo†ˆ„‚z‰…„{€ƒ|‡‚ˆ„…‚vƒŽˆ{{p‡~~zƒ‡ˆ‘†ƒq€ƒ{‚††y€s…}~…Ž†~wuˆ„†i~„y‚†x}w€p}|}{€wm„…~|{tw‚‹„„w~v‰w‚~}v{‡w„}x†v‹€}w…†{‚…y†zƒ}}…‚‡|‰{}‡|}‡{{„•|y}qv}}ƒ€‰x€{|‡}|uu…•zs}‚vr…~|„}Š‘…~†{…syz€ƒ…qyyx€‡l|v}ƒ‚‡v~y†‚†…†~wŒy…€€‚x}{†z†€z‚‡„ƒzzƒ{†€|‰}u€Š„‚~y€x}|yz…sƒ|w€z}„yx…ƒ†ˆ„{ƒ|zv‚…‰‚|„uƒ~„‡‰v‚r{~ƒ~‰v}|€…z€vz†ƒƒ‡p~x†rxŠt|‚‚††{}x|v~x‹€z}z~†x†{q‡{€~†y~‚‰ˆ}s…y{yv~‰}u|‚ƒ‚€|}}ƒ€„xu‰‹„…~€Š}‚†~|}xxyz‚€v„‚w‡q‡…~p€zƒˆ†{xus|†~‹|{‚sƒ‰s~ƒ‚~„‘†…yyu~†Œ‰r€t|{wˆ~z“‡‚|~yj‰zy‚t‡|‚|~†y†kƒ‡s„rm€€ƒ|}†…ny|s‡€‚‚‚†ƒ„{„v}|}ˆ~€{ˆ}„z‡€yŽy}†~‰|‹„v…n{~ƒ…u}ˆ‰|r€Ž†y‚Œ}‚ˆxx|wqˆ€x~ty‰‡ƒ{†v€€~„{qy~~nŠ†yŒqs‚|}uw…„{~}‚~vƒ{w‚|t‡ˆx„}}‰wƒƒ„~}}y~‚xŒ†w„|w€{†~~}‚y‹€~vzŠ|€~pƒ~‚€ƒ‹}s{{†ˆ„Š~ƒ}q}ˆyƒw€h…ˆ…ƒ{z‚†u™€}ˆ€t…vˆp|xyy||‹swzzŽ‚„}~vƒv‘ƒ|„€z€|Š~yxw„|…Œ†q}z{‚{†„z…~„yzƒ„o|‡€|‡v‡{‚‚ƒ…t„Œvvˆ~„v…‰y•†z„€€€…~~xˆ|…u…€{‰upx††y……|~nz€v‚s„„{‡nx‚z‘†ƒ{|†ƒ€€~‚‡Žt}zx}‚w~…|ryzŠ‚}}ƒ€„†yt€zƒz‡{ƒ{tx€|†y{{‚o†x……u„}z~z…y‚Š‰x|}rxr„‰‰yvx†x}{ˆ…n€t‘z‚Š€Œ|yŠz}{‚€‹~fnzz{{€z€…x„qz†y„‘}‚~juˆ†}x†z‡„pƒ}||ƒ‡‰rp‚yxoŒr~u|t€z}ƒˆw}z„ƒ~p‚zˆˆx„q|Š…€zzjq‚yŠŠ|†~q€€zˆ‚‹‚m…yŠ„„w‹xxs€|ƒz†|ysˆ{€~}x‚{†‚…pŒŠ€–}xŠzx„u}‡|s~ƒ}†}|ƒˆ‰~r‡p…†~{|€‰n‰z€yt}~x˜}}w|‚{|‚ns†v…|ƒ~–„v~u~ˆuf€Œ‡w|ˆƒ‰‡‡€‚xzxp‡u‚s€‚Š†„w‡ˆ†„Ž|€€ƒƒ~€}|~Œ‹}†€ƒ~‚xrwo}ƒ{~xŒ‚ˆ“}~vx„†‹w†„~€‚x„Š…|~t}~‡zyƒro„w~||‹yr{qw€ƒy…Št‘~~ˆ€w†}z€v~{€‚|xr„‚‡wu„‚~t|~{€‡‘y‹u…„‡~ƒ€€‚z‹k{y€~ƒˆˆ…€†{‚v|–uŽˆ‚ƒƒ€Šjƒ…€~…€†ˆy„o|„ˆƒ…n~„|ˆ{‡xyŽuzrv„…†„y~‚‚…‡†zƒ}~z…|…€}sz|ƒ~xuxy‡‚‡{{y~|~xt‰‰‚ˆzu|‚„w„xv„xx}xxn‚|‚w|{„€›€‚zzr‚tuŠ~€y‡wu|ttx……q|}w~€‡†ƒ‚€ƒu{{{†rxx~v|{z‚…q„~‰‚‡q‡pp…z€‚|†ƒj‰{„ƒ~x„~‚|st~|ƒˆxwƒxŠwz‚€zŒƒwy‡v…}‚r}‚‰~|t‰y‚{€{{†vl‰{„~}{’€„‡†}|ytqƒs|z…}p†t‡n†‚‚„……{„x}‚ƒƒŒ‡|{{yy…t‚}‘„xz{vuy‡hrˆ‚‚…x|‹…ƒ„…qzy„s‚†z‡|‚~{~zŽn‚Œ€|‚u„„|ƒ„~€}ƒ‚ˆ~sƒv|Št}y…ƒk€zu|‚Ž†‘v€|z}Š}ˆy}ƒˆy{uŒ‡ƒŽzu|ƒƒ†ƒƒzv{‡x‚€ˆƒ†‡~}€w~…q‡Šwƒzm‰uu…~…y‰m‡}‘€ƒmq{q†‚€{~€„wy~||xŠ‰|~„zŠˆy„†ƒ„|‚~x|‚|„~€€{…z†w€~~€€€t…‚€w„z‡’€u‚w|ƒ}‡‡…x~ƒ‹…h~€€|‚vp„toˆ|„wj}o‡€„}†ˆŠ„„y}“}‚v}tv€‚{ˆ‰qz~ƒƒzv‰q|†{Švrxm„{tˆŽ‚€‡€}uz’~Š~~{„}…{xŒ‚ƒ‹x‡|„Œ€’qxsz†‚‡‰Œ…†…{{w€tuty‹yr‚m‘‡{zy†„ƒ‹€†ƒ„ur‡‚|s„|tz…|v‚u}‡ƒ}{~†Œuƒ„‚ƒ€‚Švo‹Šu†u‚z}p||‚yzŠ€Š€‚|}zƒ†€ˆ{„‹tv‚v†‚{wyp{w…ŽŒn€~‡zwp‹†‡„{†‚w}‚‡Š~……‚r…t~Š{‡€~‚uŽ…{‰‰wƒwƒw‚py~|‚x}…spŠy}€}€†}{Œ€|wyŠŠ}xs††yƒu‚ˆx‡ƒ|x‡{€Œv†„z‡„uˆƒzŠrƒ€…€tˆ€|{wŠ‡|€}…‡sŒn|ƒ|ˆ‡wŽzw„r|„y}|‹wys†}„Œ€wozƒ‚‚vu€~„ˆ|„‰Š„‰~ƒ|uyŠ~Št„€s…p€„z‡|ˆƒ‰Œr{|„~‰{ƒsˆ†‚•|„‰ˆŠpw‰Žƒ†„{‡}tƒˆ‚š{€|~Š‡”|`lm†rˆƒˆ“‚c~‡xƒ‚y~t‘u{}y~yˆŒ~ˆqq}–…Œ†k‡i„~„}z}|‹kyyyˆ€€|w›‡Œ}p{v‚Žs™zz|x‘‹|€ehŒ||†\ˆ|†ˆ uw}|„|r|–Œ‰‰„z†‹v…lˆd~{r‚}†wƒe‡„s„i~yƒb‚ŒŒ„u{iotsˆ…€„}oŽ•‚“{y“y‡ƒtw’htŠ€‰uv}Zy‰w}‚yuq‘~’}€~v{Šu„‡}„y}pyŒ†€gxw‚€s}r|wzt}‚~‚{|qw†q€ƒ’‡tm|‰fyƒ~†ƒŒˆzn–y€ˆk‘‚Ž…c“w„“rk†n„wfaswo}Ž€š_t‰w‰nŠ|ƒ[‰tyytn|ˆ|lxenŽzŠy{„‰|ƒwrxxvo‰h†w~ˆ‹~z€x}j‰}‹„|t~ˆz|xzn†}y}o‡yv‡ƒ€Šp™ˆ‚Š‡”‘ru}xq‚r’Š…‰€}‰„‚”}Šx’†‰…ˆop~uƒ‰‚ynœ’‘•yw‚wv}ƒ{˜qy„v†~}Š‚ƒr{~€€†Žy‘Ž‰’}€…{w†ŒŠˆ‰|~†Œ{~w‚‹sz†|€ƒ{v£qˆ’yŽwv}tzv…‚…{}{v‚Š}g|tzly€sˆŽ„Š{x…w‰kouqx€}Šxˆ††’x€{Œw~w…¤†up‚rˆ„…ˆmlx~–ro†zi„u†ˆ|x…}}‹|˜w|{v}Žƒ‚‹‹‰ƒ|…’„z‡ˆyzu}ˆ}wu‚r“‚€~p}xƒ{……x{~…‰}€wt{„yyyy”ƒy‚Šƒ|‹‡rs}ud~|’‚}y„{o…y~ˆš‚|o’•|Œ’uŒyvrˆ{ƒƒˆ…ˆƒ„‚Šw†„l†ˆ{‡}||’k…yzv‰xˆˆpx€|Š‡†p€€w…}hˆ€‹xw‚sˆ}wzˆ|zŠurmwŽ{}ƒ†m‹}‹Œ„€v†{t{x}„u…”ƒ‰y…†z‹‰x’r„~zŠb‚„Ž‹š~txzl„œ™ƒ|is}rb„x‰…q‚ƒƒkŒu’w‹“yx~‹‡zo‰€ƒ{x}k‚†‚‡{…‡w…llˆ€{zxq…kŽ}|{u†n†a”‚zŠŠ……{{˜{‚“†Œ‰†vn†_~|‡”‘|xŒ€ˆr~xŽ…Šy„‡‘Š„ˆo†{ufŽ{Œ…s‚„y‚€š‚~~€zys~—|‚u{†y‚‹z‚‡‰}†v|Žxvx„n†Š€ŽŽ{€{tyo€ˆ‰‚ˆs}€zƒ’‡‘z‡€}{vŽ‡‚“yzyˆvb‹e‡p‰{~†urv~€…ˆ„l„€zvx‰jx’|…|w}tƒ …ˆ†€}“kx‚–‘€„„|t‚€n}lsŽ€|wwvƒ…ˆtryƒ‡~uugw~~„€|€†zl…kƒŽ’yyz„|ƒŽuƒ‚‚vŒ…‰rsŠw‡nzxq‚†v‡ƒw‰€‰w’|‚{|ru†¢‘‡…‚‡njmtm{ƒ‚{†y{€…‰t}|„}‚~}z~u„|Š‹…~‰x}„€{€|y‚†~‚„€v‚zƒ}tt„†ˆ€‚z{~‰}}z{zoŠy‡‰ˆy€ˆ‚ˆxz{z†‰‡…“~z|t‡|z}z…‚z†„†…rŒ}“~…€z|€‹|…zyŠy†x|ƒ}nr…Ž€…{€{€wz}|~~‚Š‚v„{}~‡€Œ~}‚€z‡€„~||{z|{{†s}Ž…ƒxz€y„€}ƒ{„|~szy€yy{€‚‚si{wˆ„‹€‚yŒ‹|~vŠ€ƒ„}‚xx…~‚z…u‰qw€‚|w„w}}~s~ƒz„Œ{†u„‚wxqq‚||‚ƒss„{}x{ƒ‚w‰~…‡o~ˆ|~„yt}v}†€‡yyv„s}x†ƒ‡…€…vywzŽ|z|t~Ž†…}~‰‚ˆy‚|x}†}‡v}ˆi~zu„„‰u~…‚‰uz‡wˆ†|†s}ƒy}€Š‰ˆi}wyv†Œ†|~‚{…‚ryy€…}|‡}}p„‚‚Œ†~x€qxw{€z~‡„‹‡zqˆ}‡zz}~€ƒ{€u€’~|{v|ox~‚|Œ„‚zhvyw|†„…{Žz…v‚ƒx„sƒƒ~‡uy|‰‡€q{wz|‚…„†„z„{‚yv|{ŒŒ……{w…z…€ˆ}||‚|„xu}ƒ€‡sv{~†xƒx}†}„~y{ˆ{}{Œ}†…|}~{†kt~}{€wˆ€~†Œ{}‰…{{w–†‚{…x…‚†{i‡z€€uƒyš‡…yyz€‚„wyspzy€ƒ}ƒ|€ˆx}xzˆmƒx‚|w€wy}rŒ‚†u||€‚’…Œ~‚Šƒy€{yyz}‚|‚{x‡„‡wr|x‡ƒ…|{xupƒ„„‡u}ƒ‹x}~}uˆ††‚ˆzv‡€}x~€Œ{‚}tny|u€}n„y~{{{—Šxƒƒzˆ‹m…„wƒz~}‡xŒ€~}{}ˆ{€y„~{{‡€y‰l‡…|†‚xv‡|z|yˆ„~ƒ{…{……|Œu‡u‡}‡|u‡zw…yz†w†‹ƒ‰xw‚zu‡†‚‘|~~~~sƒrz~tƒ†{~„tˆv|‰†|sm‚x‚zvm‘ƒƒ}‹u~s~‰|€“€€us‹€…‡ƒ‡{|{n~x~|„qŒˆ€vqs~‚{ƒt~zz€uƒ‚ƒ‚}x…yƒ‚€‚t†tz|}†Ž‹{tztƒxƒ…w„}z„†xŒ…vy†y‡€v|~‚„™…Ž‰j„ƒzŽ‚…y€l…}{€v|}€v†z‡{wzuxy„xqwŒˆ…{ˆf‚ƒv€€zh‚u‡…‚~€xˆ†‚tƒ‚ˆ‚|ƒ‡…}‚}xˆ~y„„ƒ~~Š‚„€‡{„|}}~†|€twtz†y‡ƒ„|„‚|‚†|t}{~xˆyˆ€‡‚xryˆz‘vz…}}y„‚”‡{yƒyx}t‹}~s|ƒ{~upˆv’€|x~x…~x~~~Œ€ƒwo|ƒyyˆ†~~ƒ…ƒ~y}z†}…ww}v|ƒ}uwŠ„z|y€„v~r~||~‡|us‚}‹yƒ{€}{~‚ˆ…|}z|m|vwƒƒyfxŒu’x}}…n€x†r€’|ƒ…„„…m‡‰‡Žy‰‚|vƒtˆˆ‰†}ƒ}ƒxƒ€}†Ž‡……o}u‚~~‡s}r}~‰‡~ˆz‰Šs„u„z‚Œ€k€…~v~|wrŽ{‰…v‚}…€~|‹ƒ‡p‰€~‰rr„‚‡‚zw„ƒ„x|wƒx…}„z}Š~ƒt…Š‰u€y}…‚€Œ{~s{x„‡z…~yƒw|~‰ˆ…‡}oizo‰ƒ€z…zy›„~~ƒ~zyswŽ‡ƒ€…s€x~zr‡{†„x€v~r…ƒy~{‡Šynz~vsy}{rzx€~}{{€„‡}u‡€|}{|ƒ|‰€Š…ƒv}{††~…†„‹’†‚“~s‰t{ys}‹’‰ƒ……‹yˆŠ”€ˆxƒˆt€~vs€‚ˆ{ˆw€„y†{ƒƒz‚Š†Š…|‡€}€{‡vovxŒr‡‹wsu‰‚‡‰ny‚ƒx“Š‡r{……€…€{}†„‰|€„„ˆ}‰ˆˆ~o}ˆ”‰€‹~„|~‚~‚„{}‡…~„}~y†ˆ„€†p†‡‚{…‰‹’•„ˆ~yu‚x†{ƒ‡‡}xzw‚|€}u}‡vuy€|ˆ……x†~„~‚z|‚{€…p€€v}trƒƒ|–†€€}}|z€|i…|…x…pŽu~y€~{~v‚}{}z}„ˆ{‚p†}ƒƒ}w‚xƒ||ˆ}ƒy€…sxƒu„~‹my}|Ž‚…vr|{‚}€p‚ƒ‚n~dyƒ|z‚}…„{~|€vˆ‚{„‚z}„vŒˆŽwwxƒƒ†•‚…€o~xt‚‡‚‰‹…†uy€u€w‡„‹„‡{~t„z‘t~~t}ƒ†}ˆt|ˆ‚…ƒ|y“†‘y‰z„xtŒƒ‡t|o€ˆŽ‡uviw‡}~‡yˆynn~rz€Œ{prs}}x‰„o€g‘„…|‚|}qvŒ}}{|ƒ|rt|†„ƒtyyƒ…Š{ˆ„tˆ}y†~~{‚ƒ„t’|~z{„ƒv|…{ˆ{“x}t|‡€€ƒ€l‚w‚€ˆ|vŠt‹~…ƒ‡{z…‡Š{y…„xˆy‰r††sx‰i‰ƒr}‚€~“}{•|ˆ‚q†„…‡q||ƒ}|}’z|v‡u…z‡‹‰y€w‡u|ˆ~~†z€w}ƒ}‚}x~„€ˆwz~~…zz~‡‡xw|z‚…€}€zƒxj„x‹ƒx†tzŒ„„~uŠƒwn€‚’„…}z‚~€„‹™‰ˆ‰~u€uƒz…w…|†~‚Œ{~~Ž|‡{tqro†ƒ„y‚ƒ{€‹~yˆƒ‚z‚s‚l‡|†€‹|{{~Šˆ…Œvzˆt~~z€~ƒŠ€Š{q€ŒŒ€„{wxz‚††ˆy{ƒq‚~zŠl~w‡tŠ€txŠ~~ypst†wˆ~‡Œ~|€znƒ{jv†ƒ„……ƒzzuz„„‚€…rzfz~††|zr|~€z‚}€z‡vx€{„‘|‰xyz|{zˆŠ~‡sƒƒtt}tuz}{nzvv‹„~{‡y|‹{Š‚‚ƒ~|~‹}z†}…€‚y~u…y‡†‚~~Š‰}‰wqŒs€‰‡€…zyŽŠ…p‰…yzs‰…o…vvˆ}~‰‰w‚‚‰‚~}z‚‚}~w‚€ƒ…~~~s€s€…|„x}{o–€w}ˆv†uw~Š„…€|€qzxy„…{rƒ}…p~‚}ƒ€‚‚~ly‰‡„|~q€†q„}|€y||•~|ˆw€†„ƒƒ†zyu…†ƒ„ƒ~w‡y‚ƒ‰v†~zŠ|y„y…}|…}z{‰z‚xyŽ€‚n€uƒ}‚††‹…ƒ‘ˆ‹ƒ{}…‹†ˆ—‰xy‹…v…~i‚xƒ~‚|~y|x‘x‹ƒˆ{|ˆˆzŽx}…}“†z|u€‰vˆ‰Š…‹m„w„Œ~‡w€„~{„x‰Štƒ{~‰‚|{y…‹}†ˆ‚tŠ†€‡…|ƒ~wlxy‚„Œ‰€p…g€ˆv‚„z‚užquƒˆ€‰ƒv–n}x‡€}ƒu~q}nv†x€„}‚~ƒŠoƒŠ{Š{‚ƒwŠ‹…vxw|z€…||x}€l‡ƒ|…}ut~}„ƒvuŠn~|‘•yz‹ˆ†‹v|s–~~…„|{x–s‡ƒ~ˆ„{rŽƒvz~‰u‘‚„ƒz€€ˆ{Šw“y„v{|~z€}‡zƒ‚Ž…}||q…€†„{zˆ}Œuƒ~r…{€ˆxy~{||ˆ€{ƒsz…}y„x|uozƒ{|}Š{z“t…ƒ€€~ƒ€}–||~€}ˆv|„q–y|€Ž‘yy|n†‹}}‡yˆ‡‡~y‹€s~t’Š|‰ƒ‰zx‚~~s„zƒƒ…„~‡v…zy~…}„~x…†Œx~}x}‚}…‰„}€†‰x‚y‡ƒ}ƒ…c{{€‚{v„uŽŠ}Ž‚€{w~}}‰w€w}ƒ…|w}€xww~}~†y|€‚|ˆ‚z…ƒ}€}ŒŒ‚ˆ}‚‰|~ƒzŽ„zxŒww…}‚„€ \ No newline at end of file diff --git a/build/src/gfile004.data b/build/src/gfile004.data new file mode 100644 index 0000000..efa9e35 --- /dev/null +++ b/build/src/gfile004.data @@ -0,0 +1,69 @@ +€ƒn†y†}t„~vhzz†|x€}ywq„„‡sw~zy‘ˆ|‚†z…{lxˆ{‹‚q‰‡rt|}s…‰x~w…€‚ƒ“ƒy{{|z†w~€‚‚„pw†o€›šŒ™_fxP•–™tigg…Œ¨—†ebtt˜©‘£ecjm‹š¤vn\_†‹­§‰‚V`ƒl•¡ƒ‹e\ry–Ÿ˜runk§„Ÿ®ƒwoer‹„œ–˜ac_fšu““_oaa‚†–‡~zVhq}¤›Ž˜Yghd’’Œ§wz^o|ƒ£¤z|SZvy²–†•Xfvhš™ª¥~ieb‚œ—x}Xkƒw¨œ‡a_k]Ž¢žk_ZV…¦|ƒYg†u«”‰™`yqk¦¦–‚meaŠ‹ž¡z‚VZza¥˜”g`jX››¦šlfdj…¨”{plawz£­žŒ_g…ƒ…w„}{tŒr}€v‹ˆ†xƒ‡zp|~zƒ|{…zw‡w€€…‚{ˆx€l€~Š‡Žw|}€€|y€‚‹…‡€‡‚uz„ut{‚sŠ}yˆ‚ƒ„uvƒw†ƒ€†ˆ…zw{s†uqs}ƒ„„†t‡z†‚w€ƒ{Ž„m€k{~zw|zv…z’y|}~x~w™sw‹{€{v€tq”€}…ˆw~‡}s‰w‚€w€„Ž~~•ƒ~xƒ€~‹u†‡}ˆu…ƒ}‚t‚€„‰z‡y‚zŠ„w‡ƒ~vŠ†„~ˆˆu~~y„~…„vt}j‚t~vŒ{~|Œ‚‰–n]YŠ‡ž•v‡[ayv˜š‘œk`fj‘Œ˜jgNY}†ž¡{•p\Škªž…Šcm]rš†ššnwYV„ƒ¦¤}a]~|¡¡„•hstm¤¡•`piX…œƒ^ZszŸ¢f`pdš“¢rbeT~‰Ÿ¡†y[cv£¢“•d]u]š„mp\a„‚®›{}YZyq›’ƒše`fd”’š‹djbjŠ€¦¢~bYvžŸ•‡eLpd›¢žtlMjmŽ—¥v}Y_ˆu–§‚‘bbdrš –opVaŽŽ›§jˆ[Wƒw›©“†`clVŸ•ˆ©jkeXŽ…¡~~{‹Š~~„q€x~z†z~ƒŽ~†„v~zrƒv|ƒ|†||~q‚sw|y~†€zuz‚†{s€vƒ…‡ƒ{„t~ƒ~}{…z‰†~~{{y‚ˆu|u€|xwƒŠ‚‰}uw‡ƒyƒqz{zvvuŒŠ€‹…„„j}x~~zvy€x†ƒ€‰„pvyz}€…xxp~†„€{…{ˆ„Ž~„|{x…‚m††z…}w‡ƒ„}ˆ‡ƒ‰{ƒ€w~|‡ˆ„}}wz€n{|yxƒ|„}…‡†€xŽx|usv…ƒwx€Š…|…zƒ…nwyŒy~|ƒx„oŒƒ~„v‘›˜œaZXh’ˆœ˜a‹ag~v›£Š^Wol¥œŠ˜aj`_˜{ž¥sq_Z‚…Ÿ¥“„Z]mk–œ‰ŸeooZ™šžryb_Šy¦ž’€h]xqµ’Ÿ—Uboc’•™—‚hl\†‹¦¥ŠŽY]ƒb¶™ƒbfhešŽ™ut[\‰ƒ­œ”kguo¡¡›¦_m``š¢œungP‡”¥xœagxh«’†g_a\•Š—mo]V‘‚¢«xˆX\vg¨˜”gc^XŽŸ•±nybVˆw«¥~ƒL\w}œ”–œTice™‹›¢h„`c™‰¦ ‰‡[Xn…š£Œœ[pr„‹ur||‚‰xƒ€€†…r|„ƒu‡w‹†s|s€t‰~„yz}€|w|ˆhx€x‚|{zp|•}yy†w†}gˆn†…ˆ{~vŽqt€‚„uyŽz‚||s†„q†w‹}„„„‡‚‰Œ‚€{w~zsŽŠ‹w€~€}wypp~|vŠ†q…m‡‚…|w†rŠvu‰|€‰{‚zs„t‚kquŠˆŠ†xŠŒ‰“upƒ‡’†txz‚‚wvzv‚}}Š€‡ƒ~|†rx}ƒ€†…v€|Šy~wz‰ˆŒ€z~‰u„€~†sy”kTjx¡ž¡Œ\zid•‹ž©ppaN“ƒ£²}yP_ol¡‘‘ŒZgeg€•˜gxodv“¤ƒ—eS…©ª€hGeg™˜œ‡]nYK•|¡”}xTmsTž‹–ietbžš”¯Zl^f}Š€šU[…m¡‹ŠhfVv”šŸ‘lup\€Š†¯|‰\Y}oœ—¤˜_ffj™Ššgbh\ˆ‚š{pU‚} ’“in\]–ˆ’¢_oYU…’«udMwl£›’^jSj„œŸ›j€cUp®x}]K{}ºx†c]ea•¦Šsqa‚‡•¨v[{„k«›‹y}„‚—‰†~€ˆƒ€r~i€‰ˆ€}{y‚”u‚}Œ…|…ut„}†ƒt€€„|~ƒ†v{zwz}x‚ƒ}†x}‹‘Š€‰‡{jx€ju†vxw„w|z|ˆw„z†‡‹zŽqt‡ƒ‹~€~ƒ„‰‡uw{}‚z~…|xm}~{r‚‰ds{‡xuŒ}qwj|ƒ~‚yŽ‡˜x€„|‚ƒ€kZ}ƒƒ~zƒ…tƒ†v}„‡~‹…kˆm{‡v‰†Šyf†ƒusv‡wz€~‚‚owƒykyk|}yoƒ‚}zŠuwtntx†’zu††Œ|yxw€‚ ¨}ra[„ƒ” „~Yxu¬¥“ŠYtWh–™’udVo™Œ¦ˆjY„‚«°~…_dks¡Žt}`aŠŠ¡›t„†V‚z’¡”jjvj«ž¡˜q`c]˜€¬˜ry\`ƒx™Œ‹iiao—Œ’ayXI…‡Œ¶rt_Ti|“Ÿw†`ti€ž‹”±OkZ_‡›¥y¢fnzx¥¨ˆ`j^~˜˜¡¦ktg]„t…¬Œ~Zb„x§o–‡felišŸ‡o_lV’„Ÿ¦vnbK›q™—~‰]ebrž”‘ac`dw¥–n‰Zf…„©«‰ŒQ_b‡‹¤™•hXda…tˆƒƒ‚–€‰˜~ˆ‡‡†zwžx™ŒzŽu‰~v„ŠŽƒƒvˆƒtq‰nœp|‚}ww}]wpr†y‚y˜z—€xŒz}„ym‹‚‡o‚y€€wš‡†wƒ~yˆsusqwvuy‘s‡rz†xz}‡}‰„xs€€Žtwy}yu‚„xx€€}ˆny|~x}Šw{›‡ƒŒ€‰i‰”u‚vvƒƒzt‹~™z}ˆ~‚‚u‹{–‚y|ƒˆ€‡o’‹sˆŠ€…x~z˜‹„{Œ}~†z”ˆ{y~Ž~~€„“Œ…‚‡……z†„wzŠv‰~‚wuvx‘…w|’}y{]q‚t‰zz–xx”Œ€”|y€rŠŠŒ…Š}‚€‚ƒ|“pœ~x†{…€…€v™{„€zˆ„u}‰}‚|~ˆ„x}Še‚x€„|c‹qwly‚}ƒ…‚†xŠqv‘zks†‹ˆ‘z‚€ju€„exƒ‚…~|‹s}{yy~|†p†Z|ƒwsˆt„…~l…}|„s€‚|€‚|}‡‚wx€„ˆxŽu‹}y~†}ƒƒ„‚}u~ƒx‡x†€~p†yŒq†‡„€l„„ƒ}}x…yƒz—Ž~„…|}„r†˜t|x„zpq~fpk‰¥tfg\ª„¢’q“Re}‘ª¢‡„ZTi`š¦¬ olaS…ˆ“¬†{gX~p«žŒ…\ebm¢“Š¥XnkLœŠž§xvgbx|«‘“„abzn¥œ–›qlkR‹“š¥}{cm‡v§œ{Ž\ivg£¢eXha‡’¨žr‡J]Žu©¡}†bDhe”¢•”incXˆ¦¢j†Q\Œh›„d`nj¡¨š¢tp_d’Œ‘¥mwyY|¦ªŒ‰XOgmž—“›bp^W“‘•¤zqgZ†€žµ„Š\gjl¤™’¡lnai•–¦¨qzUc}†§§Ž†V`sd™¡›«tih`ŸvnVTƒ~¨—}“^]{c®œ”`_]d—™¯xxU[€‚¤¨‘‡[_mnªœªcmeTšˆ¡¢lr\V†ªžƒyk^q|š¡•’]v]jŽ­¦v~^Z‹€­¥z‚[Tjo˜ž““irff˜‚ª¥l}_Y‚~• Œ†Wgro ™‹—min`Œ’™³xwcp†Ÿž†•_eww£’Ÿau`a™‰Œšsw^_€‰¢”mbhg›”“\dab™„£¨uvTnq†¦ž†ž`kryœ¨”hgiYŒ”¤¦tz`^…v¨ž‡oeq¡““”^d[d‘€Ÿœsu^Xv¦œ‰y`blo•–– lz{]žŠ ¨l{[dŠ¦•ŠŒ]}r`¡Š¡—khjb›…žŽ†xUYy‰ž«…Ÿ\\rk©•£Z]h`˜’ ª‹x^_ˆ¥”‡„]e\kœ¦Ž™dqfi‘“ž¢nvW\|uœ¢†‘g^th¥ –›kj`^ˆŽ©£w‚i|„qr†‡x†{ƒ|‚~y|ƒt‡|…Ž{‡~—r}w€zp}„„t‚yyˆƒ~y€pŠx{o~„kxnt‚…uy~l}„sŠƒw…†y||z‰ru…~‚„Œy…—s€ƒzˆ‚†z…‚q~…|ƒ†v|rŠ}y}~‰†~†‚…{€„‚~~s‰yƒ‰zz‚{„„ƒ|}ƒ}z€}‡€yx„‹€€Š}†~y‚~Œ}t}‹~xw|o‰€{z„|}wh…s…‚yŒzkyƒ‚…tzzl|vƒ|u~Œ~•xz‡{~s}„‘‚‚}…}~ss{|vŽzzŽt|uzw€‰||†€†~~‡z}{x‚zs|ƒ~„}~…Š}vz}‡u~ks†}vz„v„q{~x€‡n„…€‡‹x}t„€ˆv‚‡t…p~€u‚j~‡ŽxsŠ€‡‡€z‘j‹y~…z‚„~vxqz…„††Š‡~‰™}x‚„{…’‚‡ƒ‚‰ƒ„}pˆ{ƒ‡y‡ƒ‚xw†‚ƒ}y‚„‡‡€}~yw†z‚„p‡ƒ‚‡t‚‚„sz„~~}||xs~z€‚{ˆ„i{wˆ€q{{o†r~€|}oˆ‚}xwp‹€”y}‰€v†|}rlx|†Œ€ˆ„}‰x‚ƒ~‚wˆ‚tv‘†{x†•€‘Šu„ˆx‚|ƒ}xx…~ŒyŽtˆ€€~x‡yˆ~}yˆz‡‹|€Š€u~wq‚hz~q~zp…€z‚yn‡{”z‚€zt{p{h†‰}{‚Š€~‰ˆ…€|}rl†›s}qb¨—zck_€”™£kˆUbŽ°¤‚‚gTzqš“«’\ei^™œ—ybsX‚‹£´x}UafŠª¡‹Œ^`e]‘‘‘¥uxh`ˆ‰—¤Xfzy“šˆf`d{žšœ˜tpac‰”«{€^Ut—€ˆkeie“’ ¡c‚X[|¢ z…aW†sž©Œ’f_l`Š™˜nxbešq¢zƒh`yu‘«”žj`jm£”›de^S‰‡¢¦wZh‚ƒ§ Œaeye£‘™ cri[ŒŠ£¤††U\u|¬œŒ‹\\sf‘“•pigb†ƒ¥žŠ|^\|x¨¥†¡w}w|u‡zˆrp{z‡Œ|p…u‡‡ˆyƒƒzl~…w‰s~|x‡~yr‘o……‰|ƒm‚s~r…‚~{€o‡t‡ƒ„ˆtƒw…zŒz‹~Š‡‚€wu{‹~szx€|r‹}ƒ…~€ƒ~us‡…€w‚^j|†yy…‚~€„yƒy‰Šv{~{…{~tk‡‚zzˆ‘„“…„}}t‚™…‘„xxx~‡qpv~ˆ‹~ƒ€„€x€y‹ˆ„t‹z‡‰˜zy{t‚…wy€Šwƒˆ‚~…}sŽx~{†‰vˆ~…†nyv†~€…xŽ‚ˆ„zyv€|Œy{{{ƒ†‚…{mw‹}‚zƒ~†~s†y€|s}€|~‹yzƒŽ~r~€‰ƒ‚{w”€‚€€svv~tzr{…†}Št†{‚p’|‰‚›€ˆˆy‡Œ†}zi„w‚ƒyx€ˆ‹}~{–ƒ‹}˜Š~„z‚ozt‹m~z~€uj{gŽw{€†‹Šukp†y†u}„z|ƒtx„r‡zy‚|u{uˆ†€z‰†ƒˆ~‰y‰„yw†ƒ‡{ˆtƒ~rf†ˆŒ||…ƒ†{‚ƒ|ƒw‡{ˆ~p‹vwu{w„‹}{€sx…xv”n„~z„xyqs€zyy~xtxzXVqŽ¡žx‰Ub|hŸª™œm`fe“¦ŽjnJiŒ ª{’`qxu¡™Œ’d`pV‘‰©©|eT‡‰®¬Ž€b[uq¡Ÿ•‘Oaaf”¡ž¥r~bV‡{°…ŽXixj¯–Žbvhh˜––ŸljV`ƒŠ¥£‡VrnxŸšˆh`tW£”žžumh[…³Ÿ‰Od{o• ”cm^ ™—txs^~¦¤…]j~r¨ž”bghk‘¦œuV]’y¥¢ƒX^|~¦ ’b_d`©ƒ£¦c|kS˜|§¢Ž‡N^}p™•yak^ž—¡­oyabŒŽs†~s‡u€Ž|~ƒv†Œ†‡}€‰~|Œ…‡}x†ƒ}iŠz‹~Šn~vw„{wƒxˆ}‚w•~ƒzˆƒ}ƒŠmƒ}x{py}{uŠ€…„}€yƒŠ”‹–}rƒ~~~wš~…y{ƒtzƒ†’|tˆu}wn{‰y†tŽh„uv|}{……~‹}‹{r|yuˆs†‚{‚{Œwy‚sƒ‚p{‰ˆ{}{„|{„{~ƒƒp–‘‚†ƒ{ˆ{wks|x‡{Šˆv~l€{|{vƒwt|ˆv€‚|†u‰€ˆxƒ}{†Š…rˆkb€˜™¡cgbV•ž¥€{bV„ ¢Šƒ_Xgp“¦cwa\‘‰›®q|aY~€Ÿ–Œ‡Xfnf¤”•™\pg]—¡sq`Xy¢Š•dvld˜• ª_ohH|’¥¤~uT`ƒxŸ}–\`lj§”ŽhleY‰Ž«¨vŽQZ‚|©«Ž[`‰g’œ••hkgO•ˆ¬«w†Xl„¡¯ˆ‰X_l‡ž¨nm]k˜~¡šg‹Z]…€Ÿ©ˆ„e`jrž“›ohX\‚˜£vpW\‚{¢–Ž\bc`š‹‡™dbeaŽ”¢Ÿ„|gZ|¥šVd{p§•‘¢\giXŽ¨¦xxpqŠ{ž¤•’Xs|}«“ŽŒg]eX‰Œ¤{yZXy¥®u–Zfpp©•“¤no[]ˆ™œ¬oƒhg‡rž£‡‹[kl~—”˜ŒmrYc‘Ž˜¤bq`N‰u´¤„]\qm™ ™sjf\’~™§w„_^{€£›‹\^wtžŠ—žwh}]—©‚yS[rˆª¨…__o|¨žŠ¢rggX…sš•{udYq|“„sQbqgœš¨j}aU‰…«˜o~TmŒ} §‚[Youšœ¦‹jsWp…¥Ÿx‚Sb€~˜¤Š†iUhj†¢˜”lnKj›„¥Ÿyt_Rxzœ¥‰‰y{‡ƒ€}~ƒ“r~}sy‚wh{€…†ƒxryv~‡j}twƒ~‡„‡ƒ–x}€uƒqz}k†y‰}}{{}–„yzyƒ…„zu€t„„s‚‡|†m„†‚xŒ~or„y…~‹t‰{ˆgu`w†|‡ˆ„~”‰€‡ƒvŠ‚‡‡Š~…„Œzˆ|z‡„‡|ƒ‡}zv€w„}x‰…}Šo‰}y`x}|‰{n{xwrpyp{u~t„‰xŒjƒz|yˆiŠ€€’†g‰…–r‚ovk|€||…y„ˆq’r…‚v€‹†‡„w}‰…}ˆ‡‡xt‘~‚€‡tƒt|{x†j…u”Žpc[^{ª—‹^J{k™š†•ifgo”‘¡m}S\‡ƒ“³tQii›žŒ”mqZo‡Ÿ¡¥l‚a^Œl°¬‚[`uq¡´™[k_j’œ¨•]gS[ŽŒ˜¢~_]V{•š”ˆbenbƒ“šškmabƒŒ§ ‚{\Vd¡©Š—^jldŸ‹¤¤lh]Z‚…Ÿž‰W[†m£œ‰”ejdf’ž¡šsnNd†„¬š|XmŽq¢§‘’`\cy§—«–fvTg‘wª—p‰]\p†–šwVkhaœšœisL^‰…–¢~{fGbq£Ž]kh_–†§jyfa•‰zŽ‚tvx†x…rq‚‰}‰{ˆ€n„~€ƒ€‚‚†t€‰†…}|yŠqv}y€‹„†‡~€„ƒ‚ƒ€~€w~ˆƒ{z†‚zxv„†{†‚t‚€‡f‰}Šzztuy’kwƒ~Šw‚o…nŠ|ˆyr€xiƒ~|‰x…vbpx€}Š‚y‚q˜~€~os‚}ƒwqx~x|}tƒ‹‡“}}ˆtw{„pˆˆ‚w|v~}|x„ƒ‚~„zx}v~…ƒ~‰€Šwy…t…€r„w‰}orˆŒ„zwz‰|sˆ}„{zs…u’}†|†wn’‰j‚mˆ{yy€q‡\tzš–Žžkbff…§ždwd\Ž§…xZS}Š˜“™‰`pcoœ˜­©^tZZŽ„›˜}†Yflz¢Œ™Zgbw–˜—¡dx\`Š¢¢Š|Vnyy’–]gkd’—šlk_WŽ”¥ {ƒ]^{v›•šŽciod•–¥‘ifMcƒƒ—sˆ^MˆiŸ¢‹ˆgVkY”•¥fyYaŠ„ª£„vZYwf¦Ÿ‘vcat™‹¤ doQ_Œ‡¦¢z{^ov…››™„d\mešŠªke]V‹ˆ••w€fYri®Ž`am^—˜•¦ly`hŠ¡—{vd\w~ŒŸX€ˆ€z}{w†|Š|{…|u‹qx„‡Š“zz‰‡~}•{}†p}w|‚‹dƒ‰w‡~y{s‰‘‰ƒ€~Š|}vuz‡|…|€Š…~x~ˆŽ‚…y}…z€†€‡ƒv…ƒ„|{~…wz|ƒ€…„{ƒ‚{|~|Št”|~m‡‰s‹…Ž€„o~~‹€‘…‚‚s‚wŒz„‚…w‚~}˜ˆ†‰}}…xvz}†u„}ƒ|t‹q…‚sƒ{y|„‡y‰}‰yz‚‚†Œpwˆ‚x…mŠxuˆ†u‡ƒ‰r‚z{x†{ƒnxx€~„†~€‚}ƒ~†qqj|qj„ˆyzxsn~Šu…„y}‚‘Šƒyˆw||s“„…~z‡€Šƒ~‹}„„†t‚‡~Œyƒ€‚…oz‚ˆ‹ˆ}…‹•wˆ„|z~l‘‚u{‚u—„v—}„ˆ‚ˆ‚‚Œ…‡wu‰‚‘yƒi„‚~yz‰‚‘‹w}{‰o}}„„{“ˆ„ƒž{…y}ˆ‹‚~—†‘„|v{uvts„qŒ|ƒ}Š|}……†w„vƒx|w„†…~‹{|ƒ„zxƒŒ{{t‡‡rz}js€rrƒw‚“•Œ~~€}}ƒrw…•}…†l†w„…„r€p{~z~}w„’‘vlgj—Ž‰}Zoj~‘¨m‡[t„y¡B\sz‘“nt`iŠ§•y{\^©ƒƒS`mo• ˜¤eWu\–z¥pƒc]„¤–€zhYvi•£”mark’š˜©prYgrˆž¤„„[Xvy±œœ•]ddg–‰›™jwaOŒˆ™©…a\l“‘–Š`hl`—‹–¡g{^V€Ÿ¢}‹Jj|u ’ƒ–aznl”šŠqpNŠ|£Ÿ~…cpil§¡š_ijl¬š¦jwVg„wš«~˜r^~r—§•lkbi“‹£™rqU_Œx›¨ƒ†o]y{£›uwzr~‚ƒv„rtxp…‚ƒ~|z‚x€v|ƒq{›…‚Šn|~wŠ–jŽn„…sp‡‡u…q„w„|Žzyuo|„{”u{~‘€†…x‚{u~„||u{~vt…‚ˆ‚y†‹v„}‚„}ptw‚…}‚‡k‰…ˆ{w†‰ˆwyvx~ˆ{€~~ˆ—z†r†ƒxw{k’˜€„z€†t‰p††~}vŒp{}‡t‡‡†…}u‚~|~u~‹{‰~yˆ„€‰{z‚|x€ˆ{yuw„€}{„†y}{……’xƒ€~}ƒƒt„nz‚||„y|mp„w|‰}}wmƒ›lp`gœ|`Z}z¡£ƒ–kc{x”˜¥š‡tZg…|¥¥q†X\u‰”¢‘nddh–‰¡^pce« u{Z]’œŽŠ_ljiž—ˆŸokd^’’¨¢Œwl[pz­Ÿˆ“\€pe£žš{iicš“rŒ\owŠ¢ˆŒn\snŸ‡œbo^d„«¥r”^^…„¡žƒ‰`cms’˜¡jwckœŒ£—woZcyw›¤‡ˆbZ|i©•˜¡i|j\‡™¥m€Z^rz¢œ”‡^^gn•”²rxfe’Ž—¤yŽnQ~s£š„‰QOv\¡˜’•`d_p™ˆy}t‰}l}Œ{€~€ƒx~‰q~„{|‹‹zux{‹y~ˆy‚‡„}†’y€€~z|nz…’‚€}‡€ƒ„u|ˆ…ƒq‡wz{‰v’†s…~‡‰ƒq{‡}y‡nzxrpxz€„prs…wp}t††x„p{‚‚—{ƒ‡zs‚u…’}‚{†m}v‡…rƒt†}~ˆiq‚ƒ|‰…~‹tzyŠ~u~pu‚€ˆ||}‰r„†}†{w„€|—y‡{{”|Š†zk{‚‰Šƒ‚‡ƒo‡s{‡€ƒ}ry~y‡…r~€y˜u†Š|…‡w‚„}l{v…‡€‚vq†yvi„†¬²‡t]Szs¨”‡’debm‘ž¡ž|hh]‰~¥˜ƒ†Vcyj¢«†™fbgc˜«œwkc]ŠŽ—vŠY\yq¤²ž™h^jdš˜“‹tkgg•Ž¢¡rƒgmuj•›„_ce„¦š›¤dqi^‘s¦—‚„\Urz¦Ÿ…‘L`bgˆ©£k…eP‡–˜ryUc‹v   ‡b\ja‡’‚¡e}_m’Œž°‰z]erlŸ£’bigb™™š¡l|hX‹•¬£™ycg}€©®Š¥pe_¡˜¤ŽmZ^b’ˆ©Ž‹ueHsi¢ŠŠhab`›‰¦–ej\]†…¢¢‹WP|{š ‚™j]Ui–›—¨m^T_ƒ‰—§}~€Jzpž£”•i\on¡Œ¤§qtec“¬¯‡^P…~£¥—‚kcog¤¢œ¥tgi\ŒšwsW_|m© Œ‘d_r_‘ž•£rr\b†‹¡žzR`{Ž©£†›_u\g•ŒŽ§y|_d‹œ Šf\to©ªŒci_f˜¡Švk`Y§–Š^Xvož¦›Œa_[e™“›fsa]Ž¢ªs…RQu| §–—isjjŽ ¢^wXWŽ…Ÿ©|€]Yiq˜”‘}`jk{¤“§¡otoX‚‡–¡‡’YOqi¥¤˜Zjtb w…{ƒ†x„|yŠp‡Ž}wskx}vyˆŽ„‡{…r‡ˆ†€vx…’€}ƒ€yqsŠˆ……tw{…†|yƒ’}„ˆ|“‰|„ˆyˆy~|w†k…xzo|~ƒy€|q†yƒy€~z„}y†z‡ƒx‹vv†xx{{†€€„~q€‡|„‡p…‚‡‚‰~‰…x|~Œhkww{……szw€zˆ†x|€ow…}ˆ„…u„qx“}…~~~w{~z€…ƒ•…‰u|„‹{‚xvz…}~}Ž„s†xw‡}Š{‚†~†‹}{}…‰|x‡ƒyp…|‰}|~rŠ‡€„z†‚p}p~~ƒŠŠ}y…‰ƒw{x„…Šx„{‰ƒ{uŠy‡‚ws‰~ƒˆŒ~y„{‡zˆz‡yƒ~„xƒ|yztƒˆy~…{w‡t€w}ƒˆŠƒq‹g…ŠwˆyŒƒy’~y†…„†v}€ˆ‰xŠzzx{’Šw{|ƒx…x€ƒ{€Œˆˆvw‚„|~‰z~†€zzƒ~yƒy„€r~~|•t€y|…ˆ‰~‚‚vw‚~ƒx~}„ƒ…‰€}‚‚‡ƒŠ‡†„’z…tt{oq‡s{}{‰€“Š‚}Š‰„ƒ|ƒs€…}†|xz{mmŠŠŒ¢\jhW–—œ™rqPax–¢œ~…XS„q¥~dahd¥œ–gm\^“}ž‘„U^~v¢¤‹“`Ztjš¤•žqnSd‡¤£uuNUru›¤‹l\uf¥Ž’ gs_d…‡²§€xgQ||¦¦‡\_wl›’œžgyX^Š‰£®r[^sŸ‚”Okjj¤œ—˜[eXcŠ›£{x^c‡{“œ‰‡Taqcž’¢lsa^“§—~ob]ƒ«¢ƒŽ^kyk™¨—˜qeb\‹§™yyScsy¨©ƒ`^kl–›˜mfWlŒ…«Ž‚X`„ƒ¦©Ž“daei—”a…hb™ŽŸ±rzaUŒ}³©…YlTw¥–¦™]kje†”¢ewaTrƒšª‹‰R_vu ‘`saU‡ž–tyXa©›„Slne›¤“lh[iŒ‹ ¢qt\[ul“…ŽU`si”…™›mcZc†‰¢±k€TZz|›¡””Qbjq“£Ž—`ul`¦‡§¤x~Z`‡–—¨‹Œial}¡ƒ˜•mdjU•ƒœ›p{fIŽrŸŒ{Z]ikŸ”›–aq\[Ž œxs]Rn“¡‰_Ua[—’Ž ko\g”‚’zXmq¤ªƒŽdl}jš›‹—_mgkŒ™£w“yv‹~„~‚yŠyŒ}ƒ…‚t€}š‹w‚suwƒhyrnz€t{yu|v~lx|}~|xtŽ‹~€u|ˆs…yuu…}€ƒ~†vŽ‡}Œzƒ~ww~{‚|}ˆ†‚‡€x„ƒu‚„‚}‰w‚|kƒzz…y…‡qyp|„……‡††~{~}ˆysrp€€…|p’€Žq~€}y}z…e}†…z…v‘Œv˜}„‡v€‚Ž{w~wƒ~Š}{€yƒ{‰q†ƒvy††wƒ…‚s„xqz…x‚€…ˆsx}|r‰{~‰ƒ„x…z}{€€~syy……x‰w†~jž‹^Zpj¥Ÿ“‰m^hv“ž©Ÿptff…¥—Š}gT}w”¦‰”jagi£™—ix[]›{¡€[\qw¡©”•d_c[ž‹—¢bt^\Ž§£†~^_rmš‹ˆ’_gk^š—”|lce‡†¨–|WS~qŸ‚˜dZqY“¥¥”mlZgˆ‰¤£tŠZd~u¥•—eflbšœŸ–op]mŠ›œ{]Uym¤›‘eeoiŽ‘˜hv_\ˆ„¢ xƒ^_{} ¡––agbj––œžjtdVˆŽœ§{vb_rt¨‘‹\f\f›Ÿžqaid‹‚¢€{RX€x‡}v|‚z~z|€†ƒ‚}ƒ}€tr„‡€‰|y|r‚ˆ†ˆt}€|y{~~~„v‚zŽ‚|~Šv‚q}‡|…{„€‡u{r|{z„}Œz€ƒ€…‚||‚„…†yƒwyw€w‚}‚}‰†|†€‰€v|‚vy„|Švx€z„x}{„‡|vzrƒ†~‡…‚|~€x~€ƒ‡wp|w‡„‡wvy‡‹tƒ}~‰~‰yy„}…€{…xƒ††‡v‡z‡‹~‚‡t}twtrˆxˆƒƒ†v€t€„xv†}|w~p€|ƒo{v…ƒz~†kh•‡¢©iuc]Œ„¬£}bfqp ›œhsdh›¤¥q]]‰„¦¨}RYk~Ÿ¦“•bssd™’Ÿ€pc[u‡›•Wt‚cšŸŽ˜\ekh‰—›®ziPc‰ƒ²ž|…gUzi–¤Š˜^k`m“Œ¢™xnUMŠt¤£w“f^|m—™˜_cbk˜¢œo|^\†{˜°q„eWƒg¬›£ŽlZeo˜•Œ¦pxgY|s¤x]arvª”Zcg_“—£rwdhwª¢ƒ~R_qr¥ŸŒ–`nf`–™–l`\`€š¬‰‹`novœ•Ÿ–euhZ˜—š¤sy“j…†}z‰z~}}mu{uƒ…ƒxƒ|}„†Š{~ˆ}€gywŒ‹vn}€€Šwƒ~q~w~’t‰‚‚‡x€v‡u‰‚zs|t‡‡y…~xƒˆu†|x‰‚‚v‡”€…xƒs€ƒ†}v‚qwˆ‹Š|‹zvu}y€‡zv…xwz~‚}x€ˆ}Š„€„{…zzv€„y~v~z{xwx„y‡w‡sz„{w~xwi‚~…tp…z{}ƒ„‡‚€€‰‡ˆ~€p{}z„ƒ{€~ˆ”†tŒ}x}yxw…w†„‚~‚|ƒ†‚~ƒs‡vŽ~††ƒ’…y„ƒŠ|zzˆ„„z„n…ƒ‚†y‚xv€vv}uvo||‡‚„z‚uu€}d|u†x…|x‚w“zx†{ƒ…|€€}‡Š€€‰xƒ|Œ‡~v‰‰ŽŠ€‡‘ƒƒ|ˆˆ‚…w‘…ƒ„††ˆƒm‹u‚yzyz„t~€„‹„†y~~z…wy}r‡}u‚|‡xx‚u‡‚t‡~l…Œ~ˆ{†yˆ}|‹€…rx{„~rr“‚ˆ…zyq…vyy‚„s€€~z†vˆ~~y…{~~€†w‰x‡€}}€yx„|u†„|…p…x|’{~}y†ƒyŒ|‘wŒ|’sgt|™¥‹i[cf“–¦–kiXe…‡˜£‰ˆ`Zlmžª“‰dkbg›‰›©fzcUŽƒœ¨†^Vrƒ ¥‘‰_bblš›¡bkqU–ž¨Œ}db‚s‹“‘•\zpr …§£wlf[‰‡°Žq{Xhwnž¬žY]f]ž–ž¨ukbdˆ§ª{†Zat£¤˜xvbfgšœnŒWu€¤ z…[jg©‘‘ciYcŒq§–qr_S‹©€tqaSqy—ª› Mdai¢›œi‚Si‚£œy\Szkž©ƒ|fckk£y¥›fw]f„„¥¶u\\ur „ƒv|•†‡~€ˆ†Œe~u‡…}Œ†ž—{{™‚‹œz–ƒty‹w†‹wvŒpr‹ƒ~Œ~ŠqŒyƒ„‘v¢p}s„zŠs…vd‡uƒpxƒ„Œyp…{ƒr‚{|vˆ‚ƒyŒyxi`}‡r†„Œyt‚vz…ƒyrpr‰u†v„€{wxŠ„Œ…zzƒmgws„uzvq…tj„‡x~€z‰}rz€w‡}}s‡‚‰mŠ†z‚pa„wy‰t‚‡Ž‚Žˆ€—yq‡y‡ˆ‰„~b„ƒw€€}jq™Š‚Œz‚m}|Šs‰n‚Š}~|zjd‡{€}”°vi~S†z£—†~lxz…§“™–bbl]ª¬œoqiX}…¤¡š}Q^lj¥›‚m\g\‘‰›ºu{cRˆˆœ¡ˆ€Yioˆ›‘–“ke]aˆx–‘}z[[‹~“¡Œygl€}­ˆ”lLeoŠ¡Ž£…xcrŽ„¦kŽe_†uª¤z€cgq‘{¨£souWœ~©žƒ|eb‡q©¢Œ…\lob˜Žžy{Te}†žŸbƒQ]‡{œœ˜šSSe—“•¬k~Wo†ˆ £~‚f\y‚ª›”™bkf[—‡”ƒkVW~xª–—kbxk¨Ÿ’pdQcŒ–“”q]Zxv¨šu~WVypž¯–‡aEfq¢• †tfe}–z¨£}zd`}[‚¢•s]]i•“•œQ‚idˆ…§©…Ž…\my˜‰ˆbpq¢‡˜œfl`qˆ{¢œ„dMmw”²sˆcngc¡|˜ s{jl{ ‘u}QŠo”w•ikX]€˜›¢weba}– }ˆtVmz‘“•œ[ZUk†­¢£f{Z[Ž€¯š„‘Xpƒq£˜¤plcož’¬“^tjT’vŸ«yƒ‰`†u¡‰”Š[\xT Ž’sqV]˜o¬™p†[[lw™‘ƒacgj’ˆ˜¹xsyU€~™«y‹dqvzš’”q|x~}{ƒ‰Œ‡†r‡ŽŽz‚y…‰}zzu‡ztv‡…}xw…cs‡zzu†˜~ˆ€uˆm}‹m`†asƒy€…y€†u“uov‰w‡ƒ‚uoo€}p‚n„w–šˆ„‚‚…y€ŒŽs}ƒ…w|ƒ{€…w‚w~z~sƒ~ƒŒqv‡zŽ…yŠ}sy{‚uwŠ€}–„}‚r‰‚ƒ}…x…™~…†s~y‡|owu}ƒ‹}’ƒl…cŠƒx‚‰zˆ}n–{…}w…‡{k{‡y~p’wdpl€ƒ“uƒ†w‘}Žiƒ€†~~|~Š{uw‰‚|r…utw}}{}jŠxœ¨j^[dš•¦¢n~dSŽy«ž‰‹jdo«–]dbl†–cn_kvœŸ‡”ƒ\zl£«œn\V\’”žžhvg]k€±Œ„gmql~nblo ‰¥…`}bW‹† °€Ÿdtnj –„ `qkh¡›qklNŽ˜¥„vZ[tm±‰z—Tir`¤‘¥£txjX‡v¬©‡ŒScls§©°Ÿahe^‹–™©csOb~t©¦scMxn¢’Ž“]`mM–›‘xwga†f¤ ‹…cZv|¡˜Ÿdpcuž£œnvpWˆŠž¦u“_wpu¡Š‹“g[um†‰”ƒ‰‰w‡‹y†oz{Œj|–…‹~‚|{~ˆ‚vy~w||ƒqz‡t†|y}Šv}‚‰Š~sƒr‹x‚€„‘~r}x|{yƒ~€Šƒ„†|„‰v~wƒ€‚w{…ƒt‡Š‚€“…w„y„‡|y}~‰ˆ~}†‚„x}o}}rywu‘kƒ‚t{zzx…zw€ˆu‰…{ƒ„{€r}…Š{‹{yy‰z’t…ƒu„w‚w……{‡~…wˆŒ‚€€…w}yƒƒz{ƒŠ‚Œz†ˆ‰ƒ€ƒ€‡|~€{…v|…„Š~ƒ‹pyyƒ‚‡†jo}—¡ o‚ee•z¤š{€XZjiž—Š[y[b’Ÿ¡prh^x‹žµzwWYyuœ¥”šjzpV’‚¢˜mjK_q„¨Ÿ‹{]Xtr±–šdhok—š§uiXg}™£”|„R_ys—š–žajlg¦®œxfYa}…—›u”`]i ˜f_\l˜Ÿ¯–ixR_}¡¥w‰O_l|•™ ^`ha¡’–²q|fV}¢žv^ext£œ•blr]¢’‘šgy`a…‰¥‰ƒ[hdu°žžšecja‡• mb]‹r £ŒOc{j§§Œša[giŒ¥™p~v{ƒ„…r‚~{€~z„r„~{uz{~„ˆƒv‰‰…z~~ry|‚}pzˆx}||‡‡w}Š„……‹pƒ€~os„y|z}Šru~ez|‚†}ƒŽpx~n†vŠ|„ˆqvp…}p…y{„qx{x‚yy‡q…†„€€†xtz„y€…}‡„sv~…r‹w€„~‡~}}ƒ{|ƒx€„zo†p„w€}vw‚‹ˆ„†‰‚|…xnˆŒ‘{zƒvn€„p{Ž|~ˆ}Œxhzt†y†t…Šƒ~†|ˆ€„ƒ‚w‡u…€€ƒu}†q‡‚}€†vz‹‘k\kn§•–¤lpVVŠ‘¡¨~~ZZ€x¢œ€‰Tase¦–§šY`b_ŽŸ‘h|Y\‹}¨œŠ’bdk`š˜odgXŽ”¥¤€y][‹~™ ‡ŒcWvm©•‰šhxmpŒ¡–ez`W…|¦§‹^Uci–™œ”dpad’†¢šrx``¢¦ˆ…jUjs¥œœ—lii_ Œ’¢l`a{š¢~‡__nu ›¥•fc_V’™¢š}xZhy‚©žŠ[_oj¢Ž˜–hjg`†•›˜u~f`q–ž‰RTzp €cne[‹§¡~e^zz›¢ˆƒXjqvžx‹„|z†|l‚ƒzs†€}ˆ„…{~z€„m|~p‹ƒ|„u~„€{€z}y}€€Š†‚…t‡‹y„z‚…€}†€€„r‚€‚†ŒŠv€y‡~x}ˆ}‚v‚}v‡Šr}‡…|…ust€ˆ~…‰}‰ˆyw€…ls|„†‡„¡‡}…z…‰~s†vu‹‰†ˆxy‚{s‘†t„‰€…€sŠl~yux„{ˆxƒ{€…vy…€w~s}‡„{yz…xvvvuqƒ}z‚r}ƒ„€y€r‚u„w…qv|€zn‡{Šu‚ƒwƒƒ‚ƒ‘z„y„„ƒŠrŠzŽwt…– …|da|§Š ŸzlbW€t†®|…f_jp‘¨–¤]kcn”Ÿ¨l‡VV~~ ´‡ŒdWt›•Ÿš]]dR—‰¢ª~xkY„wŸ†‰Xirr “˜eciXž’œ¯~ubR~z¬–„†O`lg™Ÿ„”^^n[”žš©uŒO_†±œ|€RW‘dœ¦‹›efdOv…•”xxJaš¢m‚aci`¥¥”¯ggkf––ª˜|qr]|€ œŠ\a|uœ¤”šhi`e¨ŸŸjwf]~‡¨°‹‡`cw~’–‹•dngg•¥›ivc^‡¬œ€ˆY_nr›˜‰¬ivqu~ƒ…y…t‰t…z~€‡|s„†…zvˆ‰uu|v}„z{pƒšx†‚}„€”„}‘{†‚xˆ†}‰~†{v€€|Šw…|‘yy~{|‰{uŠv‹‡†|€jtv|‚‚ƒ|~…‡…}x…ƒ~}{ƒŒ„~~tƒq|vŠt}|‰}{w‚Š~~‰z€Œu‚ƒ•…z}‚„Œy€…‹•…sƒx…ŠŒs~wn„ˆ‹{‚‚Š‰{„Š‡‹x|{yk{€yq…vxˆ–}xŠ‰}†l‚vˆŠ~…~ˆ‡x€oŽ|{}…„wzƒgo†z}|‡Œyxy{w|y€|{€…vf~x¨¤‘bMso›˜•¢fse\‘–ªo|_RŠx¥£’€]Ueu­”›dkc_£––®tyfY~q¸ ‰‰bXll¦©Ÿ^gia”’¬§p}H`‚{ª¡~Œ[nˆo–¢“˜koiQ’ž£tw__wmžš„bUom–¤’ˆjf_p‹Š›¢vv\[vv¡¦‡‡T[pe œ¢œcaoX£‰¡•xox\ŽzšœŒƒYIlp¢™–•b`in…š“›rvTXv|hˆZhhi›˜~ejadŽ — r„\s„„£¤‹^\ve¥¨œmlwh“•¯›~oh`~¬~…z‚q{zx‰n…~}k†xq|y}yz–u}|{z†u{z…‰|€|y}Šu‹m‘r‚tƒ€s|~{“Š†~}‚r‚‡gŽz‹‰~ƒ€xŽƒ€‚ˆŠ„}uƒx‚w}|v{„ƒy“|w€‹zu„w†}w}v{yŒzƒŠ‚{y~~{ˆ•‚‚…w…Šwn€Šy€{}sbr‡Œ†v{~{‰‰v†yi‚z€ˆ}†zy‚lƒ‚}ˆƒzŒy~szƒ…{~y}‡m…†yz‡v‡}z|y‡~†|z~€‚vƒt|„w‡s€ˆ†‹€|…‰‡|wut‹‡y…zz€xƒy‰Y_tw ›ˆžcnae‘žœ¢fp\Tz€§©€ŠXPx| œŒœdcbh’™­¡ln^RŠœ¤~h^{v§¦•‰oZsb’Ÿ›wqjb‘ˆ©£‰‚`cr£¡—ck}]£ž›to`jˆ… ¡…p]fur¢œŽžgftT¤¥¡¤ljWgŠ¥–‡e[f…xš ƒšgvkcœ˜¡~t[e‹ƒ°¡‚ˆa]‡u š‡aXcm›‘›–df[v¡›{ˆ\X‡}¢®“‹fg_iž”•Qme]ŒŽ–±t‹sU{{£žˆƒgiel•¤|tgW”  ŒY_}rœ{uyˆs‚w‚ƒ‰~yŠj~rŠ„|w‹……ƒ€|{€‡z…„‡…‰wljs€„~z€uˆ‹Š•‹~ƒ†pgw‡‚ˆ‡}„{{shx}y…{wxsƒ†z…}‹€ˆ„u•~wŒ„}…z…{~‰„|ƒt}|qv‰oŒ„€Š}zˆwuŸi|{|v}~–|„~‰‡y€zs|hŽvy‡jŠŒˆxz‰€Œ{zt€z„l‚ƒyv‰|‚oxyy‚xƒ{wu…‚Œwƒy‰~y„x€v†‡~Šƒˆƒ‰…z€q†„u’}n‡€†Š{{˜‘}}‚ƒ‚‡œŠŒrjx˜›hpYc…”ž¯„…]Xylœ™’^kimŸŠ¤¦in^SŠ‰ž“‚x_Zr œ•‘^olf–ˆ–¨mkagƒzœ•‡‘c[ko§¡”Žfa|f””Ÿqh^tˆ‰¦–}ƒZ^€|’  gmol­–¨¥cwSW†}¥œs…\i~o¡œŽˆkdvmšŸ“cn_TŒ{£š|si_xp—£‹–fftg‘˜—f^Q†‡‘¥z‚XWpu¡ ‡’]pg_¥”¤ggh]Žˆ §ˆq\zs­‘‘\|wm —¨rg_Y§¡{~^]vw™Ÿ_hviœŒœŒXy]{Št…|vq”„Švr‚…x~sw}‚vŠ–~‹xw€€~Ž{|Œx‰{€r‰…€w„‡v‹y„~w‰€y‡w}}‚|{{…}y€ƒyyy|Š~€}ywŠ|ypq|zyˆz…„z…os‚mˆ…ŠƒŒ}thvvw„m‰vŽ~zv}Œ€{x‚z}}]q„xƒ|uz„x’wƒx|~}€‹‚}y‡–‹‹……}}‰‡{€~ˆ‹yˆ‚xs€‹v‚‰zŒ‡‚ƒsˆ~…‚t}vv†}v~|{‡u}‰}z{…ƒ|‘to}zrŽrˆe_jv˜¤~›\rqn›‰Š mjdh“›¨œ€bcŽ~ª§„‰pQzm¢‹¢ugk`£•¬£q€j`€¬¡‡x^Unmœ‘˜‘cbThœ’Ÿ“€jcQu{Ÿ¤|‹^`vi š•‘`t`m‰žžuzk[…€¡¨‡\oxi¢˜œ”aia]Š¡ ®„wmQ€z™¡ŽMiru£¡™©pooW•Ž›™xf^d„¨–Š‚Z[rs ”™gjaU–“™žpzY[„†¦¤ˆ‡X\wp§¡ŒRhh]‰Š ™n‡Wb†€¥ª…˜eS…f›¡—‘_safžƒ¤¨swbWt€¡›‘y‡p~†p€x‚…†|zpz|nx…‚}v…|wt‚z|~~~€}†xo}w}„€}‚~xvyƒ{ƒ{yz‚xƒ„tŽx{z|„}‡zv€€…y†u~u|x‰{†‡sˆxw€o…oˆˆ†‡u‡‚ƒln}‘ux…‚†u{vvr€‡~w}vtˆ…ˆ~€ƒ…y‹€‹Žv…uˆ~}Œ†ƒ‘~‹r~q~ƒ{ƒ}~zt“v}z‚y‡…‹………yƒ‚nˆ†zv{~Š}uzy€~v~‘—ƒ~ˆuxxˆ…“t}wy†„u~‹…€‚n‹k€ŠŒƒ…w}ŠŠt…†Ž–x}‚qkzyŒyvˆ{}€‰‹‰u~…xyŠe˜p‚‚‹ƒ}…uy„‰v„‚~|ˆŽ…Žy|„ƒzy”~ˆ€rƒ€‚Š}€z‡{„ˆw‡€s|wˆ~~‚ƒ}ƒv}‡}Š‚€x‡w{‡x‚…x‰ˆ}w€ƒxv„€wvw†zƒ€—v†{‰ƒv„†‘‹|w|{€…~’xv~ƒx’‚v•x}‚ƒ„‡lxzw…~t‡x„}l‰‚ƒ‡„ˆ†}r‡lz…y{„‰wˆ|s…s‰pzxm†tŠzzƒ‚‡|‹†wyu‚ƒ{‚…|š™…~ZK†q˜®}d^bv•¦›qypa‘‰³qbm~xœ‚bftu™˜‘lia]–”™²vvX_…x­ž¥^c\ ¦‘fz[eˆž›ˆh[k‚¯…Š\Ytu¡ª›kenU‹ª•|uVhyƒž§„—bgxn™››le[f‰¡•x‚_\€„žž‡‹q\to›£’hrml‘ŠŸ—o…]Pƒs¦§€\[e{˜­“atij žšgt_W‡z¨†ˆq_‹rª‘‡Ohf[Œ¥~€\fˆª¡|}Vi{p¤¢Š˜flgc˜¥¬xvZfƒ|§š‹Ngujœ•–idf^’›˜ž}X]ˆ| ˜€†_e‡kš†”Wmb] ”§pua\‡†¥¡‰~aQxm›š Žrdcp˜“£ŸhqeVƒ}¡˜ƒx]Zqpž …Xg]t™“›¥vdU|}¢¡€‹[`so Œ“dneb˜ƒ—¤urk_…£‚ˆ]lpq¥ž’–bgd_ŒŽ¡§twXVŠªžˆaSk›Ÿ‘Ÿ^b`[«“›štpVPxz»šŽ„W\wa›“uig`”§˜t~_^}~¢µ™˜pW‚o¡Ÿ–”eeik†Œ£xxfRs†ž§„Y[{j¥˜—“WoXo‡‹™¨{ygO‹|™Ÿ‚‰b_`n›–•bt]eŒ‰§£zobV€| ¦‰Œ[apiŸ””¦kinW†“šuwTZu‚¡©„“d]xY£›Œœgg^cŠ˜¥¤t}ii~v¡‘ˆThto¢™•¢bhdiŠ‹™¤y†\XŠ}¡­ƒ‘\bv^–‰Š„ˆ~wxxx{ut{ƒ~uns…}‚y„}ƒ‚€yu‰x††wu€€y‚t€‚pvk|‡~€ƒ‚€j†€}‰„‡‚{‰‹zˆ„w…{ƒ…{‚u}|‹„w‹…ƒ„wx|s…„…‚s‹x…~‰„€{{}‰z„†…ˆŒt||w…y”~x€z{~z’p‚ur~~}‹|k~Š{…}x€y‹}}y‹€††z†€}ƒvŒ„ƒ‡}€{{}w…ruu‹ˆxz’…z€‡{’v}ŽpŽvy†‚vˆ‰Œ‚s|€{~†€€’‹y~st{‹|ˆ‡‹ƒ’{{’ˆƒ‰xƒˆw˜ƒ‚‰‡y~ˆyz…ƒ…†€{x‚u€†€~…~yŠˆ}€‚yƒ‚€‘y~}€xƒ„vr€zˆ€{Šv‹tƒmˆ‡„…xm{wvt…€sxp‚„‘~‡z{†ˆ‹’u…}~€}wwƒ{{vu†zƒx~y€‚‚‹‡€…xvƒƒx~t‹}o…€p~pu…w{€—~w„ƒv‡y†Š‡{‚}z~yxŠk‰}€‰vx„‰‰}|y‘†„ˆ{†‡‡„‚Œ‹Œ|~„…wy„~†w‹ˆyŠ€}~y{yŠ……x}~‰„Žw‰y~~‡zzst|„{‚e„‡|ƒ}Š‰|m}ƒ‹|†’r“‹‡‡|y€}}l€j}…{ynw‡{zp‚ˆ{{‚‚‡Ž||}}u€z‚†ˆz„xx|zz}‹~w‡zsŠ‰~u}€zyx}…y€}…m€€‚ƒqw‘’‰‡Tlo`ª‘’™clfj…˜šq~iZ‰~¡—€^jnr–’£fv[e“Š¬‘x€U\Œu¦¦~‹`^vm›—˜paafŒ€›Ž{ƒa\w«²€‰aTpkœ˜žYtbh—™¡ wm]‹~¤®‰u^UnbŽ ”Žgc\\–„§¨mnd[†y¦¨o†Zdyhªš†p]ka‹š•ŸrtSktª¡…Ž_`}s§œŒ–dbchŽ–œ£‚h`[ˆ†¢šwŒYevž¨”jcle—žpm^S‹™”‚aWvd—•–Žllxg’Ÿž€‰d^‡y§¦„vONnƒ€‚{||m{€‡vr…z}„yk„‚lƒz…}’ˆƒ„|‰|‚}…pxuv†}ƒ~„z€yz‚}„‚wxƒ}wn€~n‡t„‡nŒ‚vŠ„y†‚€}ƒ‡‡y…{p|}€€…•|ƒ~†wu}‹c~v‚„‚ƒŠsv‚}|~~z“|y}uˆr|||‚|ŠŒvwqŠwu’‚Œ†‚u†a„†ˆ†„w…z‡‰—u„szv€xƒp€z‚{~t{ˆp‚v‰‡t‰{u‰r|{v{‡o‘ƒm…zx„xvz~|}‚~…†„…u†~n„~†Œ{€Š{}ˆŠˆ|ƒ‰u|€ƒ‚}‚ƒ‹‡o‡t~€~}z…{}u‡ƒ|Šs‰|xww‡uvˆuyn„vx|‹qŠ‚s{{zvxj~‚‚ƒ|~‰}ŠyŽy}Žƒ…~|„ƒ‰€‰||‰}p‡htwy†yt…~x|‰s†€x…‡vƒ{€…‹pl‚wƒ~ƒt…l{…z€w‚{ƒˆz|Šqp{‚wƒvp||z{‚|‚„€}{„zt€w}s{|yz…oƒƒ}}}‡ƒ}ˆ}|}}xwt|~~{ˆq~sq‰~}u~€…‰u†ƒƒ‡†„‹~u‰ƒ†~kƒwq‹w}€}{‚{w{xgƒŽ™¢gw\XyŠ—°z]\qk˜—”’qdhe“š¦q‚b`‹†¡§xƒ^buzš–’•Zejd•†£nl`j…Œ¬¡’Ž__w|¥¦–—k^oh“’•£otag†~¢•„}[^{qž¡ŽŒd_ah–ž–et^eƒyž¢€yZZqœˆ\icb—žš¢sp]VŠ€¥œoSyp¤žŒ•fus`‡Œ¡§ir`c˜‰¢©‚„Z\y•¤“_net˜’”›dtm_‡‘ˆ—}raaqz¤­–—[lfk“™•¡upk[|‰¢¤‚ZZz€¤¡‡Œcoc{›™Ÿ ovSlƒt„y‚†w…ˆz‘†z€~~~}ƒ€…y…{„€…Ž{’|q|v€y€y‹zŽx‰€‰„uz}l‡}{‹|ƒ…o†zŒ€‚v}|ss}}•‚‰Šxl}x‚{{‡v†zx€‡}†Žx„€ˆ†€„}y€{vƒ€ˆ~„ˆ‰~‡|~‚s†ƒ}sy„}ˆ}†|}{}‚‚€Šq}„}xƒz‚}‡z€tˆ‰yyxz}yzzvy}w~‡~t}{x‚ˆ‡‰x„m|x~t‚u„}‹k„€…‰{„yƒr|}~zp‚szŠ„„}…ˆˆˆ‚sŒ{„~~w…lms­Š“eUga—Š™de^g‡‰¦’oƒ`e‰u›¥v…eZkn ‹‘“ji_fš„ Ÿ„€a[ƒ|¥€ˆt[m›š’cuoZž‹” vuh\~m’¢’‰bhxo¬¢ƒ—[sj[¢¤ppLV~¡˜ŒXk„džž–›cnee¡¯¡qwX\{€‘¢ŠˆZ^va¡˜fgbi†¥Ÿ}rY`€£ªrY]xw¤“’gcfc“œ®¡xgbT‡s­£…cg|w ™™‹ijct}•¡¢u_V„¬ˆiXuo›¢…{pah“šŸ«poy\…ƒŸ¥ƒ‹[Z_vž•™™lmem˜˜¬kcK‚‰¡±…‡Ukk|¤˜¥nkpU–šo|Xc†x®š…ŽUS{b™ ˜zOs_”’šœl€al€xžž|’eVyX›œ‹•jeeZ—ƒ±˜vVi‰ƒªvˆhTxt“¨’|cr`m˜ŠžotsRŒy”{^dl„•œž™br`h“Šƒ¥qv_`w‚–z‘[fo{›–‰£nnn`š©t}j[”}«›z`Vyi¥“•–ei`b•žŽ„s`Uk Ÿ†Wcid”‘’dceYŠ”ŸŸsuWg€¦¥…X]ld ›•¢[fJ^ƒ…{ƒv{œy†‚ŠzŠ†}|{`}w~„‰{Œzyts†}‰q~‚vŠy~†{€|‡ƒmŠxŠp‰}u|y„ƒo~€q~j}|Šyˆyxz|p€nŽu…vzƒ{sn†‚xwv•u}}€€|u~~€}~€ƒ}šyx‚{ƒƒƒ‡vy~r~ƒ†ƒ…o‡ˆ…š|v}l~€vvzt…†l„‚wƒ}‰w‰gƒ€|{……Šwym„|x†{|……‚}ƒ}…†Š€s„x€€~~vzys‰„{ƒ}p‚u}|u}~„Š€n{}Œ~{vŠs„r~zy~‹•†„„‚…”r]…y—£ovPX|€©°¤‡_cew›–œ‹spqXƒ‚«pƒc_Ÿ©—…Gfnq±‰¦pfd^‰Žž‚m\\wx¤¡™ŽY[jiœ¦”ªonmQŽ£¯y|Yvxu©Žœg]qe‡—•“qu_i„¤©z†Z]{|« ‰“g[td–›—‘mp]b‚ª¡}w[\x€¤®‹’kaoa•Ÿ“j^q^Žˆ ªv|Yfh¢¢„‰bfl^¤Œ™dtZd•pscOvq¢ª‡¤S]jkœ”‹ ]}lM‹“yq_jˆ~¤œ†^epq‘’‰šjj\^ˆ‡“vw‚ŽŒyŠv†€r‚yv{†p~~‚}‡|}‚w„„}|{‘z’z|‡u‚{‘‡‡†v„u„}u{yŒz€€v€zz’xz{ˆ€€}˜|‡x~†xƒy‹’ˆyv‰€†xt—z”ˆ~xvvyŠyx‰c‚†s|‡„‡†„‘‡†‡Šu„€€|Šv‚|vzztƒ~‡vs€†…Šy~ƒ|…†z€‡tyy€Œ€~uuxwˆt˜y„~€ƒˆ€r€Š‚Šy†z††p‚‚x‚„†wwŒ‚‹|€}ˆ|}|k„…„~w„u}u€…}x‡v„}i€{}ss€†xuv“‰^]mk¤“ˆªrduTŠ“–©wlZ^z‡¢¡{‰P`{d£ŸŽ’e]]c˜™™¢xi\Q†…¡œ€Œ\dqm†£’›bdip“¡®ŸxzRWp¢˜‡xeUl|—ž—fsei›œ›®\|`Uƒ ¨‰„a`oz¦–•jymZ™‘£œrxhc“†¥‡‹j\sy°”‹‘^kq\–š¡©ip[b†Ž§¢Š‘iVwm¤”˜`njož“žª~w_\x‡›¨}‚X`}o¢”ŽŽb`bj™š˜”pkaX…‰¡¤‚f_€^ž•”•ekbl£ psU_‘y˜«€d[|r™Œƒr…Šk‡{‰ww…~xŠq{nxˆwy|Œs„xyv{z„o†}oz„t„€pwƒ{~sl{…{}„„…€€†‚|€yw~{ˆu€‚‚|†u|‡ƒ‚{{w~„q€qy‰†u|v‰xˆyt|}spp€u†‚„ƒu{|ƒztt‹z…oˆ€€||„{€zƒw€~{~‡xw€‰‰~{‡„Š~‰ryƒ}v‡w„ƒpƒˆ…ƒ†Œˆ{€‰{~p~y‚}w…€…tqˆwwuvuyrŒeƒyˆ|~†zŠ||x„mƒv‰n{z|€qu€…„†€|vƒ„~{„€…ƒ|||{…„~}‰t‡}ƒ‚…uŽv€{x‚ƒoy“~…s€‚|w‚„l†t~zx|€yyyqq|†‚‚xƒz’‰ƒx‰rƒˆ€„’}†€ƒ…z„„„wz}zˆŽ{zzwq…yƒ‡t‡vy‚ztƒzty~ƒ|t‚uƒt€nv}†{‚€{to~y~‚~…Šˆt€}‚‹}y{t‡xƒ‚ƒ~p‡t„…uˆ†€‹w‹€w~Š~m€ow…‡‚ˆ„„x†‡u€~€€‰~Š€{u‰‚‹v}oƒ‡xzyxvŽˆ~~€}x‡|‹‰y„‚‰{€gž©\Z{n•’cpbn„‘erVa„…¦µaTiwŸ£ƒhjaeŒ¡tjc‡v“¯‚^b€vªœ›Uipjž ¥qq[[‡›‚|\^~x¢’Ž”chin–™˜Ÿvnla„‰¤œx‰Ud†n ’™`_lq—š›šuo\f…«œuˆ^^}i©¤z’f^be”ŠŸghSd–}žªv…ei{yŸ¤]bf{‹™š”ul^c…‚¡žwz\f~t¡£…‹Ubht”™™œmu]c”w¡š{rc]w…¯™‡ŠclnZŽ£™’ƒpXe‰ƒž¢{‡Jhƒ‡ˆ~o„ƒ”…u‚y„‡z‚Œx‹„}z‰uwˆxyty†ˆ‡x~vƒƒ|€„‡z‹s‰‚|ˆw€~v‹Šqˆ‡{‡ŒŒ€t‹ˆ}‡~‰ƒ‹y}x„vƒyŽ„‡|‚{€“~{|x’‰‚‡‚yjƒ€yw~Š‡˜x†}w{|~}x”|‘„t…pr˜€q}‡yŽ…‚{ˆ†{ˆ…|w†s‚…ƒŠ„|Š…ƒ‚u†{tƒ€Šuvu‰q…y„}uv†‰ˆ}zy|~‚€ˆ‰ŠŠu‡€w„‚yjp„w€€~s…x‰ƒ‡Œ‹“zŒ†otpgnzr”€‚“†‡ˆ‰Œ„ˆzˆHn–™²¥lqX{‰‡ŸŽ`bqZ¦“’jnneœ“œ¨…o\a‚‰¥Ÿˆ£Sfyj¥›`Wt`¡¦”ž~p``or•®~O]zqž ~pigf‰ppKe‡–˜¦wŠn`sœ•–qm`‚œšŸky^`‰†‚²soZPyk©‰[ulv¤Ž£tv_N“s›¢}ˆ]dyy›|‘niqf’ž”Š\i]V‡†“¦zyLWhv°“”€\hrl¬œ’¢kt\b†™·|v\mƒn˜¥xajqh“Ÿš•‰wxjƒ‡¤kŠFQ€q¡šŠ˜ke{_…—’‚}…‚ƒƒs}Œƒ„’t‡}n†}•€…~Œ‚z”ˆ„e…w}{ƒxq‹{yiur‹{xŒx{_}‰yvvvzhvw|~|wŽŒz€{z‚†x{czwˆƒxzƒ‹tŒoxˆt†…~h~Œy‘ovy{sur„…y„†~l|ˆ„ƒm|ƒi“’~~ˆ}…|‡‡“ƒ‚u‰|ƒŽ|y€ˆ‡‚‚‚~~|Š‰it†vuuŒ~z”ut‡tu†~q|v{mz„}‡ƒ€z¡nvŠ€~w‚v}›‚{‹zx|zu‘vo€ƒu|{}svs’†…~|€„swb‹…}z|‹ |}Jdxt¬¡†ž{Zic’š˜ygReŠœšŸ„}LR†qž¥y™_Vwb—›œ˜miSh˜•¬—n€oWr›‡ˆXcUp‘˜–ƒRomdž‚£|£oYƒp§™–ŽaPp\£š™Zw^bˆ©€’ˆrZeuŠ ²~ŒUdxk¨‡—­nldZ„¦’yylQzw›•ƒ—kdma˜ ©zgil„|ž™~~i`‡qž~‚Ymuyš”›rtYZ…|¹¥u^]vzœ³œg^mx…”’§u€aVŒƒ°—…’Vxuo«£…‹dhqU¢›˜g~h^˜™˜žn{__zn–ªšŽ[bof—›¤žjiUZ”ƒ›{tm`gˆ™œ“\g{_Œ‰¤lfdT‡™¥Œ{Wbpw´“ˆ•]hvq„œ‘¥th^bˆ©Œ‰eb}pŸ¢““}Ws^ŒŸ£rxK`ƒ‡¢xtY{‘„ª¥Ššebo^€˜„›gmam’vœ‡q‰`Z}|œ‘ˆH\ie —¡˜ZnheŠ‰¡œŠ€WPz_¥žŠ”d_oU˜š“©h|Yf’£¡…yfLymž¨ve]ah©ž™zlk[wŒ¡ˆ‹~b^‡z•ŸŠ–OedW¡Ÿ‘Ÿr€]{|“–¤„`vy¬”œbifi–oŸ™ukvƒ€€^…ovzz€‚w…Š{šu„ƒpvm‡†‚ƒ€…ˆƒ‚yz†”€y‚‡Š”Š|•}‘teo€ˆˆ|l‰|xnˆp|qzis…‹h€t{‡vƒt‡ƒw†„ƒzˆwz„ƒ…~†y|†€}ˆmxx†|v‚‡‚†Œt†‰w‚}yu{}”ƒ{‚‚ˆ‚y€ƒ{„v‰z|r{p„‡}t€}wŒ|v€xy}‹s|{™„€ˆ‡w~qƒs™{‰||xƒy…w‚„‚„|‰“„tˆsv†‚|x{|~–s|†|…|…|u€i„qŠ|„|z‡yss…}{‚o{zk‰}}„u‚‰~w|}€‡‹|uŠs„{‚…~yˆo‡v€zˆz€x{‰wv|}s†ˆ}‚~~„t|‚x„Š†…‹Ž€ƒ|Šwu†}v{{…~ˆ€…ƒ|i€yƒvnvp~•t‹†|…}{†zˆk€zŒ}…€‚€Žo‚}€y}}t„}p|q€}~uy†u{ˆƒ}‡t|vzzzyŽ„ˆv~~„‚ˆqu}y|„…|ƒuˆ|{{w…x…q€‚„‚{„xˆ†ˆ…x…|Œƒv|‰vƒƒw‰ƒƒt‚€–…y‹zzhŒ€„w~z€}rz€‚u‡ˆ†˜‚q‚y|Œzz¢†jpQ”’ž¢z‚Gip²£Œ^R^¢—ž_oZa–‘¦–…u[cƒ¤›‰’_Yle˜¦‹œcd`a‰ž›{u^bp¡œ‡‹^]…¨Ÿ¤œflesŒ—©r]Qƒmž|”deh{‘¦¤mpa`‹Ÿ©omQgv†‘ž}‚db€m›“Šk[re˜¬yrb]ƒx£„‰QdllžžŒmWef‡Œ§š~{_^„‚£œ~Ž_guc–¦Š«gh^c„œ™tPdƒy§£‚‹\Xaq—«‘—lj`V‚¢Ÿunh^ŒƒšŽa]w€’¤•‘Trdbž„¡žqyfV†„š¤Šˆn]hl—¤œidU_Ž”‘§ivX]|©©q‹U_pm£”–žhfn]“˜¢jwX]z¢„^_{i˜“ftbYŒ’¡¥rk^[~‚©–‡a`yd›¡—nk`g{”¥trb_†z¡Ÿ€•][zh¢™”—]iZiŒ¤ŸxVM|¦¨ˆŠaWkx”¡••klk`‘{šœ~}]Z{v¥¢Š_bpp™ž‘—`wdd—‚¤§puc`‚‹ž˜‘†birf—ž•¡Zibb—–¤¤y~^cy†¢ ƒ€Xapi«›”¡gsfvŒ•­ur]]uuµŸŒ›dix}}ˆŠ{‚c‚wˆxs€rt‚}„~aŒz€uƒ‡|vt€|‡‡„}‡…p||wy}x~Št…r‹€wƒ…{„v€zŽˆr…sx“t}ƒ‹„‚pˆ{ƒ‹„~†€„ˆ€~|xƒˆrv„z†‰u€pv€‡€~€y‚yˆ˜o‹‰…zz|w|j€‡wxƒs‚„sw†‰~~t”–‡Ž‹{~y‚€‘wg~‚Œ‡Š„€„‰}€s‡n„…‰ux‚{xqzqt|q‚~~~ƒ~~‚x€|„€y‹zŒ…u}…y€uˆ€Š€ŒŠ„y‰‚…„‚s„„|{r…mcmn¥——gucc¨°w}_S{¤ƒŠ^gqw¢š™œbl\[ŽŠ’¤plcO|…›©„‡_[jbœ‘˜_lgY—©sp^d}|¡¥’‰\Upoš›˜“dqjT›‘¡Ÿxq[R… §xYhf¤“œ–pjXk‹”¨¨t}YY†ž£„Ž`Sqh”¡›—mj_d˜‡›tc_’`¡žƒƒkYk}š¤Žlb`hŸˆ—–‚tsT}ƒš£ˆ’Vwui¨”¢™dbjU––¢¯mucf‚‚«šŽ„h]tf›“Ž—lo^[†ž¬|UW€¨š„Tmiw¡~€Šx|‡‚€†uƒ{‚…‡‚…}{{wˆƒ€q~…‰„‚}|~ƒz‰tƒt€„Ž{~r‹€‚†yƒ}zg‚|{’‹„„€zƒv„…ƒ‡y†y{„x}ƒr‡|y…~}„}|}~„Ž‚~}xl}}‰{z€}€…{ƒ~{‚‚y}Š…‚vyˆt€€|yˆt€€€ƒ‚‡…‰}‡€‹ˆ|‹ƒ{{„s†s{}t„|‚|€€w{ˆp‘z|uƒw‡~…‚zs‚…‚Šsy|‰‚|‚w{…„{vy~‡†~‚ƒ|z~†}yy‚{w‚|ƒ{ˆ€Œxr|¢’tbaˆ†¦¢……R^vl¢¢“£Vr`[¡¨xuT\Ž„¥š|Žl]~j¨¡}œekd\‘¯¢rtWh‚ƒžª}‘a[l¦Ÿ†•g]la’˜˜“exas~¥­„‹TV„n¡š—|\`M‰”š§zp]Y‰r²®‡‰ZOvl™š–^gc` ›¨ex`b††¥«ˆ^]rpž›˜•\h}_“‘œžnoYZrˆŽ£€ŠcV}„œ§‚ZmfqŸœ›vv]c{|®œ†kYyn£¡Ž‘dfrg•“Ÿ”urX^~Œ¤Ÿ†`k‡ožŒœjm`j‘©–zp]^ˆz{‚r„{‚~y†tx{ƒr…€~‡‡~~Œ~~|Š€†‰„|z‰„†„z|n„uƒˆ‰{xƒ~’ŒuvyƒrŠu…Šxoƒ€…uvqx‹|v~}…‹Ž~t‹ƒ‡xw‡€†~}x|}~ˆ‰€{ˆ‚ƒƒ€ŠzŽ‡{|{t†xv‹t…‚|}ƒ€‡u‚ƒy{ly†~Ž|u€ŒvŒkx‘}‡{}n~‚{~qp„xƒo…ƒ‡w{€||ƒo‚~p‰|x‰zƒs€}’}ˆŠy‚„rxŠ~ƒxm„‚n}Œ{ˆ€y|}y|}wz}€ƒ}ƒ„|‚}†y}tƒ‡„}†v‚vŒƒy|†‹~†Žwˆ{€{…oxxxpz{ytwŠŠ—“‹ˆ€ƒwˆ|„‰€‚„„|yo}‚qˆ€~xu”}Š…Œ‡Šƒ…‰†…ƒ|v€}}‚y…‘{y‚pƒ~‰x…y|rŒp|‚ƒŒ}v…|‚|~‚†‚yiˆn‡ƒ{wˆ…†yŒ~zw†nfxwŒ‡q}„†‡†{‚ˆƒw€x“„v„ƒxŽ‚z‹|y{…z”†}|„ˆ~{‚„†”ut‚€Šu›„~„€g‡~’y˜{{€z„„”y}n~„…}|}|w”y|…zw‰yˆ~†{}x‚‹~ˆ…ˆ|‹~sjoƒŸyt`[{t£¸z”aJnn¥}me[oœ‡££|tgV{rŸŸ…‘[gn œ™”bviY”ˆrX\†—£‘‚_gklœ¤žšhoi_Œ”Ž«eU\z†¢š‚[vxc¦š‘”fcq_Œˆ¥|q^Mw‹¤¡|€T\kX Ÿˆ›Wq`U—¡¥~t^d‰„Ÿ¤‚ŠbWpq™“‰s`Xd†Š§™l€LbŠx £{Škqsx§Ÿ–o[lj‘‰¨o€Ymƒs”™ŠiWek¦›‰oj\b’‰˜¨iulW‰‚¤„†jcjr `ce`—‘˜¦ywcxv|}‚||‚Žszy‡wrx|‚ƒˆ‚xsˆ‹‚Š}y†|}…Š~ml{€z‚s}ƒ„o€q|‚{x…†€‰Žj…y„x€…Œˆ}v~|€{z‚Š‡ƒ~ƒ‚t}‚„‡‰„|~x†z‚‰‹•~|‡z~x~x‡€z‰€Šy†z€Šx|u{Ž~w||q€t†z|…ƒ„‹|h†|y}…~†|yuq‚{Š……‰ƒŠ}„~~vpyŠŽ„‚‚…Ž‡zŒ‘kq‚~u~„ˆ€s~~~{x|ƒ~{“zƒ~‚„€‚y„Š~„x{„‚‚ƒnxryxqu~{uzmˆp\|€¦¡~xXaru¤¦›’jYfb“–ž­pt\f€|§š‘…R^we¢Š‹œaneg‹´Žri\`„w œ†ˆd`mtž£šŒlXu]‹¤ mw^T‚~ŸŸ~€\Nvtªœ”’fhe_Ž¨¦y|U\…ˆœ¦{YRsg›Ÿ™›hpTcŸŒžª`Saƒž¦†}eYnkŸ’ŸTj_u•—“žgya[{ˆ™¢€ˆNfjx£›•emjnšŽœurbZ‚Ž¬§…Œ[ef¨”–”ghtf—–žŸqvb^z­‘ˆ}W[wm“Ž–`a`t˜Ÿgh\Qv”¤tƒ[[zq™›“gw[u˜‹œhŠT\ˆ“ª²z‰dkez—‰’`ltkŽ•—ªkyn`‰£©’†ZVtw§˜——thiY›¢šzoeS€}¡ |vQ\ad“’Ÿhhi_š…››onk_~Š¢¤|‚Yb]{ŽŸ“–Skhe„š‰­{„aYˆ¬~‚bX}r ¡‰¡tj`rœ’œ”r{Zb†}¡¦{Œ`avm™¡—˜j^^bŒ~ž™k~Z`…t¤¡ˆ‡`Uej—Ÿ–gi`a‘™£uqjYˆs˜°|ŒZXbn¦˜œ˜`utb‰‘—œsybgu|§˜„R_~o£š“§Xdkc‡‰{yvs……|Žt‚{~lsytx…{ˆ†zv~{ˆƒƒ}|{ˆ}ƒ}~~t…ƒw}„‡{‚yu†y…‹ƒ„ƒ…†u|{ˆ†{…€€ƒ|€†€t€†ˆ~x‡‚Œq|~Š€x~xyj„…v„€z‡ˆszv„}~w„zw•vˆ{l{|}~€}‹{Š††…‚y„f„xz„€~”…‚ˆ~‚‚{…Žz€xˆ~ƒ…€|ts„}†ƒ|†‚{ƒ{xƒ{‚‚wŠ€zƒ‡‚…~vƒxuxyƒv|‡|u‡‰…‰{„}ƒzr…‡ƒ”{€ˆ€‚v{€„n…nƒ˜yhp‹‘¡pyk]•z§šv‰T[ˆr¤¡›…hka`Œ—¢m~Xa‚©¨ƒ†ckiz•Œ”‹lf[g™’ ›nvaX†„¡¦‰}Qekv ›Š™ibll’šŸjzbg‰wŸ•‚zMXk|š˜‘aeff‘‚ž¢reV[ˆ€¢ªˆ„_[|o¦š‘œlknl” žxt_f…¥Ÿ{†Uc}~—¡“˜dbc\–Š ¤s~ee„}ªŠ‹T^n©¥…‰kbis–”£›gvRb€ž£{’e^uu“žŒ“]ehu¢•’mvZX‰Š˜¢€zXcm†®Ÿž…ZohT˜–“Ÿ€s~ƒx|€‡uƒ……€~‚€s”|„uƒ~txŠp‡‡}„€†„u†s†‚‰€}ˆqŠv‡v‚x†‚ƒz‘†wv‚„†yt†zzszx‰x~|“x†‚y}ƒ~|‹„uyq~‚}€}}„ƒ€ƒy‰wux…rzŽw‹†ˆzz†‰ƒ‚|}ƒ‹‹y…y‚‚‡ˆx{Œwy}wŠ~y„vzyk…ˆ€Œ‘‚„sŽtƒ~~z…‹~‡{v†€s{n{x|ƒt|…‚y{|‚Šz“n‚…{z‰}w…r„„}r…€ztˆw„}†v„Žž‡„eW†v¨‡ƒWkgc™Œ£¤nqmQ—ˆ¢­y|Wrumž•‰’Tj^w™ž” pa[Q†–¢©{ƒZdrz¡›”‰_brT‘•šœire`…ˆ¥«qƒVf„p¡£‹Že]po¥puif‘€©ž‚|T^nnª¤…“`bknš—¡šgxcaœ¤}€cc~u¥ Ž—i\wo’ ˜fjN_’‚§Ÿ{{m\‡}¡œ‘km\mŸ¨¡ggbU—Š¡²}~]ep€—¨“‚Ynjb¡‡¡žxycV‡”–³~Qbs|¢‘Šegw^Ž™‹ž|im`‡Ž©‚€TRupƒ†o‚tƒ†}ƒ{t‹†…Œ~ƒ‚yf‰p†~wn„sŒ‚{{}||‰~}‚zy}}~”•~q{†‚p„‡m€|Šƒ…ƒ‚{”{Ž„€v„|zwzŒŠy|Š~…€‰ƒ}v{€s{yƒ€t‡uz„{w‰y„wy€l€yz~ˆyƒƒvn†x‘…|z€‡~vŽwŒ‚y€}r‡Š}x€‚}x„‚}~~‹„v~Ž…mƒq{{}„rvx‚Š€}{ƒ}‰„ƒ}myuuu~|~v„Š„pq{‚tŠ}‹…y‰z|‰y„o„~ƒ…p|‰„ˆƒ€}‚Štt}x„}{ƒmw]‰Ÿ‰\\fk“£ˆ™mfau§¥sƒU[zg›–’˜jfkp•”›œkj_T~ œkwa`€€¨›~r_zpœ–Ÿ’[goSž‘™®wwHXwŽ¬›‡`_rb—‰–ojab‡ ª{‡__}„¯˜‘Œ_Xedœ—‚›iffR“¦ª}„a]u†Ÿ›Ytvd•˜˜¢anaI…‡ž—~Zg†m™ž†^dt`©œ•¡cf\e§žv}_V…s¬¤Š‘\`xož¨œžtlXc€€¦¥r…gZ‚x©«}Š[pkŸ¡‘dhe^…ŒŸ¥u‡dh{¨§˜ƒ`}xoy|Œx}wƒ†„‹€|†vŽ‚‡€„yt‹}vƒ|tz~w~}}twpxyƒ~~†‹}‡„y†}{™yr€yƒ}wŒ}Š~—…|…Š‘}|‘x‚€|n„r}Žˆ‰€„{€‰“v‚}‡}}‚l}…ƒ‚|‡‡j}yzƒ‚yw}‚x‡ƒˆƒ{ˆ|Ž‚€‚€€~|{{q~…vyz‚’}w€~‹mx‹‰l{pˆˆoxztp‚‚„y}p}}~x’ƒƒ‚Œ‚}v€xwƒt†w‚~x}v†t‡€€€y‰yy„z~‹~u€‚w‹ƒšyzu€œmyeg›Œ¨ª€waNzt•£œa`jh£•›‡frd`™¢¤udf]z|£ ‰†\jmp¤™›˜fljbx‰¢tw^S}uŸ¡q”\jtd–““hj_jŒ—¤¥oya_„n§¨ƒŒ]Y{eŸ£f\c`ˆ‘™¢r~cY€xŸ¡‹ƒ]hkp§¤••fh]bš’¬’nuZ]†s ›}‡Zggr¦¡•nejl•‡˜ntTav‰ª­ƒ„]`ql›ŽŽ˜jgf]¬žtugb|~«£“ŒZbpi˜˜Œš`ji^—›žŸvhaZ„¤¡†Wvkn£‘–œafiW‡˜‰ƒ}}ƒ‰ƒ„ƒ†‡w•uzw}~}n„‰}€‰‹~}~~‡{†~z‚v~zu}pŒ~tƒ|}†|ƒ}€{‹s{{}’ƒˆ…w‚x|…~u‚x|yŠrx‚v‹€‰yx‰|}~‚ƒ}†}~ƒmzx~v„t‹€‚‚lƒ€x…n‰ŠyŒv€s~„„ƒ„t€‹•{‹‘}†ˆ€„„x€{ƒvz„‡„~|ˆ‘ƒ…}‹q€Žzw„s„‘~†‡ˆ†}xƒ„~w{–€Œˆ‚|ƒ}‡‚m†‹ˆ‘Š|‚|}ŠŠ€}‹Œwˆ…‚p„n†„““y’f—zvw}yyriu‰uso‰‘vS[vu§˜Š†idfb‡š¢p~n^„Š¡œu~Muq~£¤’”gdpq–¨“{t^i¯ˆq…`\ƒtžªšmaph¡” h{]e”ƒ¡˜}ygL€vš¤‘†aZgož‰ —ilg_“‰Ÿ‚|RLtt¤†Ž^jfd£Œ¢–dbg^‚ŽŸŠƒZ`„|¡ª…–jmzb¥˜¤klfUŠ‹´¢‡uY`~{³¢yœWpjj›™†¨ukiZˆ‚œ¨~ƒ]d~z¢–ƒŒcdj`””Ÿ–inSoŽ‡¡ w‚[dŒrœ¤…cVljš•›et^[™£}uq[xyy†‡ˆ€v‹‚t{{€Œ|†€w{„‚sl‹€ƒ}yz‹…‚x|z‚w†vŒ„Œ„sƒ}‚Šm€ƒwz€y„„†„‚}„~~€ˆ|opxtƒƒƒ|wŠz„Š}…‰‡€‚q‰|„†|ˆ‡‚ow}rŠ‡~‡v†…}~}„|‡{„…x”y‚ƒ„~~‡ƒ‰€Žu‚ƒzuˆ‰€˜†}|ˆy„o‚|q€„‚wy|}ˆl—s|~|ƒ{“{yƒ}m†m~ˆn‡~{„z€‚v‹ƒ{‚y„x|y{ƒƒ{„„…†€ƒƒ€ˆ€}uƒz…†zwy‡„}ˆ‹€ovež hqY^ y«™uqVY…vŸŸ—†cfcv”™—dr^^š•–®u‡ely¢¬ˆ‘Q`oV¥•–™[`kW—›¨šsr\\w†œ´Œ^\vp˜šŒg[q]’‰™¦{vXix†³¦ƒˆhWqª˜‰ ljjk“£ŸtsZe„¯¤~„ZXxiŸ˜˜œidhl’ˆ¨œrtX`„ƒŸª~‹dXwg™Ÿ““b\Ua••¤wvWJ‘¨¨‚‹Yao{˜ž“’^r_p—Š¢˜yg`€~¨‰Žj^ey¢¢Œ™`|iZ‰‘¤£up\_¡Ÿ~‚Qbov¬¦–Žbx~~v‹Žsx|{xˆyrƒm~ww}}‚„x‡y{r}x‰rƒwrvz‰}|ƒ€„„rz„€{†‚|’{‰~ƒ‰‚…y|y†ˆzˆ“~‡n‡‚ƒyŒ‘ˆn}w~{Š’€vq{s‚rtxˆ|Žkƒ‚}wŠrŒly‚‘|€‚y{ro†ˆx„zz}p~q„†yƒ‡ˆy~€„|{vzy}t{ˆƒuƒ~‚†‚v„{{…pƒŠy~ƒx{Šy“Œ||€yy|{„ky|~x|}~‡}usv}ˆ…„…zq~‰‰Žww…ƒ~~{zzž~~s}}…||†…‹z‰ž~sX„©šŠ„RUwj¬–—bega™—Ÿ¥wshSw‡™Ÿ…`c~l¥™‡–ghjb–š£œ|q^\}‰ŸšˆX^tm£ŒŒvQrh”ž˜m^b~|¨¨yŠUfwŒ¯›‹hfhwš…’ nwf`‹¬r‚O`~qž˜•g}hd˜˜™©`qcR…†¥ž‚x`Xtˆœž–„gapg¡™™¢qwcV‰Ž£¤‚vQRzy£—˜gtzZ‚’œemXbŽ§‚†R^es£¡‡žYguWˆ”Ž›lrUwz’£«ƒŽ_]wu«¦’ [hqn•Ÿœ°osj\‘‰ ~€•ƒ‹€„„qv‚xˆyxŒs‰vr|{‰{}†kˆ„x‹rz„}oru’p‚~ˆo„to}xr‰{s„y|Œ{…‰ƒvŽ}}}w†y‡ˆŠ{…}ƒ„‹~ˆ‚€„‡{„‹‡{~~|‰~‹u‚}…yˆty|‚v…€|…~i{u€wzŠqwnqz~zw€u|xoˆ~„‡‰nyhzz}uyƒ„ƒ|ˆ‰‹„}„„€†~Œ‚€€~|‰v‡v‚rz…Œ‚€y‹ˆ{†„wƒx~…„„‰w…„u„~ƒ‹~‰„fˆxqˆtzˆo‚t„ƒ€„Œ€x|ƒ||‰w‚{cžžŒ¡bjyo—ªŸ¤siQVwˆ¡Žo}SaŠv ¤…eRaiŸ¡¡dpO_w…¢š„YZz|§ˆ^h_p“’“_q]Wƒ}”£y~T^ywš’•‡c^ll  ¡X{^P‰…•«€{iWv€¡‹Œansi™‘Žfrah†Ž”ªyxYZ€© ƒ–Yjnh¢›Ž¡goha…ˆœzcgzx£œ—\p{b™¢™—gcMu€‘™ n{]j~q§—’][qZ•—’X|d]™¢usOa€yŸœš‹cMrk¢š™›kvgd™‹¬ªt}bgƒo§˜Ž’aloŠŒx€wv‡†Š{y†‹†„~y‡‡†Œwr„‚t|}‚Ž€r~†r{}wyˆ€‰}z‹}…|v|}yz}r„~‚|xˆp{otŒ|}‰|‡uq{yƒ‰ƒ}wsnr€z~z‡€‚—€€ˆ}|€€„l‡{ƒ‹…x‰Š€vz~ˆƒ€u‡x|‚ƒ|„y‰„w~t~…€}„|ƒ„‚Š|‰yw‚sˆ„tƒˆ†ˆ‡~‰z|Š~‰x‡‚y‚€€yuzz„ˆu‚‹y„}qxuzˆu„‹€Š€‰„lˆ„„xxz‡g†ˆw‡w„pz…‚ƒ~yp†u†…ƒ†uŒyjˆw}z‚~yw†‰€‹†……ˆ€ƒzŠ|Ž|‚r–t‚}uy‰~u‡t~~~…„m‡{s…€‚{Šr€|„ˆwƒŒuˆ||ƒˆ‚v„‡m{}‡‡o€~€sƒyŠ}~ˆxŠ‚r~†tx‘ƒ…˜y{†‰„{~xˆw~{‡yvˆ{„~‹}…‹„Š€†ˆ‡‚…}|†‚†w†rƒˆ|€~|‹‚‚…q‡}‡{wy~~}‰z†v~Š€zvqvqy‚|…Œu~o~€†€y†}‚ƒz†}zƒˆ‹„p{‹‡yŠvx†‹z~{u…~‰i„}z|rx‘¢ªurZZ‰œ¢‹‰Ybvn¤›‰–vbjd™¥¢”s_N^Œz¨“‰Œb`Žo©˜–s^eT—žip`TŒ…©©KIyrªœ‰Œeigp‘œœj{Ua‚o £€aTss• ›‘ohabŸ‹¦«i†[W‚ §tƒWbzx¥˜•’_kmf–’ªqped‰‰ ›~‚Pfr¬£™\iiX˜“¢­jogX‹€‘Ÿv‡[`{¬›ŠŒV_nmŽ‹ž˜b~WTŠ‚Ÿ›}wlYqw›¢‘ŠZ[]d–‘œŸlp[bˆ„¨¦vƒbg‚p¤ ™a_hw—™œ¢ou[N…œµ|reV|¦‘™Qoba ›’¤`{l^ˆŠ™ª€ze]ww©ž’b^ieŸ‘¥nf^R¤§~x[^požœŒ—a`mk”¢“§prYZ…‹¦¤k„]_{nœšƒ‚gjlo–’œ™knlW’ƒ¦¥xˆYZ|p¢£‡–bYqh–¦”¡kwdb„ˆ”§„`VtŸ—‡“jibj—˜–—nzfa›‡ ­…jWt„›“˜[dq`™šiy`b‰zŸ…^`po”¢››bYeZœ‚ƒgv]]€¢ Œƒkdvi ‰‰–igs`ššœ¬leVŠ„¨£ˆ\Xul«¢”œb^p[˜’¢¤vvTgƒt²¥„‹P^vj¥¤€œbbke”¡£oyMe‡‡Ÿ uŒVYsmšª—hu]h™‰¢•kZQ~|ž£……eZnnšŒ—pplW™”™¶it_YŽ¤¬…{o^r~§‘˜–d`fY—Ž™rliZ‡¢¢Œit~|†ƒv†ƒxy†~|„}wyŒ…vw€{w}‡€…‚uŠ„wwz„ƒ…zƒ€{}{…„†ƒys‡y…}}|yŠ‚Šu‘}†mƒ|€z~}†{x„…†oy†{ƒŠ‚x‡vr†{tŽ‰‰Š‚}y~z„st†t„‚ƒ„ƒxƒ|vw‡w}~}ˆ†x{zƒyŠ†yix‰s|s}t‰‚„yˆvˆoz‚Š~Œ|x‰|r~~z‘~|†y}€tŽ}wƒy}~‚€„~}‡vŠƒ‚…€}ƒ}†‡ƒŠž€“‚…ƒo„–p{t‹z~~~ˆ‹–‘v{{Šdvfu„~y€wˆŽ‰œˆ~ˆxy‡†u—x‡ˆŠz|‚u‡’†y‡ƒŠvt‡„„lzŠz~‡td{†z†…}|ˆ„¡}{†€v~~€]{€s€{l{€‹f|xw„u……izcq‹‹sqn~n„ex}€q~Š„›r€Œ…‰pŠ‡„`yp|ƒyw‘xˆzgƒ}v€‚n‰f‹„}ˆtzˆ™o{~t~qu€mz|ƒ“tw†x‘nŠ|w…‡‚†q•s†’ˆ†…€‡˜kwm„ƒoy„…|‰z{„€v€x…‹Š‡ƒ}}y‚{yeˆ‚|x„€q{lgzˆu–q|™x€s…w•}~ˆk…‹}•†rwxrqx‘r…x‰b‡rŒŒˆpŠy‹p‚xvd|…†‰}…ƒˆklu…xx„ŠƒYsyw~…{}†z“o‡yƒ„v|tmŠk‘”ƒy†‚~~–j†~…ƒ|€{t“€ƒjkph ¢¡lakXŽž˜žm\^d†ˆ¨w„h{h{•© _Qjv„™‘Ÿjƒ[g{–­x‰Xmbrœž‹^g`¡›žm}Y`˜±{|_Wjz£ŽIapj˜•ž¤t‡F\‚ˆ¯¢|zSWŽm«œˆrjemœ¬¦ fe^„Š¨•wSh{w›Ÿ†ªgmlg”›•”qz^u|£–o|Rbvv‰£–_kyh–¡—¡zw[a’Š˜Œ€‚kf€|¢–Š‘qquc€¥Ÿpof_‡Š¦Œš†l[~xŸ“ŽscocŽ†ŸpoRdu„¥§ƒ|Ujh›©˜Œxˆ~ex…x}ˆƒu~~Š`sxŒ„ƒ{kƒ€ƒ†„}ŠŒ‡‚ž~‰†‚{†~…~j~„ƒ‹qˆuux~‰x‰‡‚vrvj‚|jƒ‡rƒt~Ž|ˆ“q~|u˜i€lw~‚~Šy…‰ŒƒxfŠ‡‚w|Ž|”aƒ‚‚„zƒ€‰on|‡€€‘Œƒpv–†‚†~ˆƒz‚lt‰z€‡vxqs„}{|…|kƒm‹ƒ}{‡ƒn†}s„€}y}˜{{‹‚„†m{xŒƒƒ{ƒ„Œ|€ˆ‰€x}{wˆvˆlx{xŽa‹…}‰Œ|}†ly}xƒ|}”~–}~x‚„s‡cu„xx~x~h‚ƒ|ˆ†{„d|o~‚ˆ„ˆtkkuŠ}wƒ{‰ƒŽyz…‡€|€v”ˆ…o„…}€sˆvykz€ˆ|w|mh~ƒn€Š„†„b˜zz‘„€~{…Šƒ‹z“p}‚ux‚‡ˆŒƒq~ƒŠ‰}h}€y|ŽŽ}{–Ž||Ž„…ottf~€oƒy„vvks‰~„{‚€{{šuw˜~|Œ|z†ƒ—Œtw…~Œ‰zr}w‹x‡…z|w}s–†‚|vŽ{…~˜‹Š}n}w‚‡tl…g|–{„€ˆk‹‚u•x{„„ƒƒŠƒmƒs‹–}…‘€eY‹˜¦y‰Tkir¢‰‡ Sob`Ž›±™{ƒOZ†u¡šˆ[wsy¨—žhleOˆ”¥quY^Šu“‘€c_yp¦«xU[Vf’Ÿ£pziR–{¦–ƒ}Vlp|´’Œ_aajr¤”k^^}œ¥Š…VKq|¤£”’[jheœª—¢{vc^’Š££¤|\[xf—”€–jei^’ˆ¤¨xcgXŠŒ›Œ}idtr  ¤`cn_– ªkvcX„ƒ¤›r†Xhzv œ‘–afZn‘Œž§fuZp€Œ£¦{‡_Oymªœ •cbdf•”˜©skZX‰ªŠ…Šm}y‡r‡tu†šyˆ}{{w„yŽy…s‚ˆ‚uŒvyj}€}€x|…y„r€‚‚…wƒ~yˆŠ€}{…•‚„z~x{ƒw„xyƒ…{€‡xˆ„„~}ƒˆ…x„y|‹z€~ƒ…ˆ’‘yzƒ€Œ€sm~|‹„t…tt}yy…|…†uksqz|„{‰|Ž‘ˆ~ƒ‚„„‡„~ƒˆ‰€„ˆ{ƒˆ†Š„xƒ„yŠ~‚ƒ‹€‚†{‹ƒ}‡zx…{~{„{ˆ~‹€||r‚€u€‡|„Š„ŽvŠ‡|xxz‚†‡x‚y‡{z~‹Œ~t‡†z‚}m…sxƒx„y|TŠŒ•”heaa†‚°œ{[\us“±Œ’j_pv¦ŽªžfuYc’–¤¢†_j‡{§±ƒ¡igpi…Ÿ’gibgš”’§t†omt¬¨Š’a\_w¤™”aqfbšŽ´i~^V|wšŸƒ‰]^ks¢• –nZ|W“žbnWdnŠ§œƒ‚bWzb¦‘˜›gimi†„••xxTg€xŸ€~cdunŸ¤y™bcL_’Šž¡…ugUn{¦‚ŒR\n{•¨–il]b¢–¥œ\|`O~†œ¥…~USwo¤£Ž—Odbaœ‹¡œmzpS}œ­€afeo•‰“_qnd—›¨w{gX|wª£€‚W\~mœ•‡ ddj]™—›§buWa|ƒ¥Ÿ•‰I]fuœ¡“Ÿjbp\™‹¡—wqScˆ—¦›ˆˆ\`wn¥ˆ£–dljY‰Œ³lT]…¥Ÿ†…XTmh›š›^kisžˆ¤¡qoW`}o¬¦€‹`_qo™«Š›ce^hŽ‡ žsuRW«‚_]tmŸœ“’`pfa‘“§yzd^~¬¥’an{i›˜‘šSphV¡‰ œicak™–‡‰Q]mdªœŒlkbU…ƒ¢onLc|€©©Žš[`_›¢_a]L‡™™xw]X}¢¥yymƒ{‡~sly€ˆ†qr‚t{‘t}}…‚v„xq|yzw…Œ{‰‚t‰yyƒ€Š|z…{†~|‚…|y~}v|†zw…yŠ{{{}ƒ‹…}y†tƒ‚}zˆ‚~‘‚‚ƒ€x…ƒmƒv‘y~x…Žwz…f{‚€u‰†~€m‰‡x‰ƒˆ‰‘qŠ}ƒz‡‹€ˆ‹€p„…}†mwzol‡}‹†xxn~}}‡{Šv~x“ƒ„lxqp~|qˆw†ƒz|…xr~„r}…‡†yƒy{‡„ƒy~{ƒ‰uy€ww‚z|Š……mzŠ{„}{y€„Šuƒ¥p|`T‰x ©ƒ¡Xmd†”œ¢iua^ƒ{¶w{Y[u}¨œu‡U`zqš¡Œ©ptkZŠ“¤¡_yVn~y¨ªƒ’mW…c§—•˜fm`nˆ¬˜y|dd…~›¢ƒgYqa¥œ•˜fj[g±›pnae‡…§Š“ianr¤š¬•av^^«¦r„`P…|™¥†^Roƒ¢˜£–jfbe‰ª£z][~ƒ£ªtlVkh £†£`l^ZŽ’©š}jPgw~¢¤„`lze£¤“œigh`’Ž›¥wwWeu¥žŠ‹Z`on œšefaU‰›Ÿ©_y\eƒ„~€r’z…Š‚…‚’Šy‚t‚}oƒkz‚uƒ‚{„vzq€…€|…vz|~~|Š„„‚‡†‡‚~‚z‚|ys}w†~svx{r{{}~‚{o{†‰€€y…wm‡{‚z‚ƒ{…–{‚„u{„“„iv€Š{zŠwƒ‡Š†‹~u}Œ‰vyptˆ~…tqwo†…}†wš„vwtxƒu‹ƒ€z„‡~~„u{‚„}Š}‚xz€‡w{o||ƒˆs…†}up„x„‡hy‚ƒq}x}Žz†}v~…‡†kƒsˆ‚ƒy‚‹o‚lg¤˜•|kf`‹€¡§O\trª¡‹ddapœ£›gxX`}ž¡z‡Zb|šŽ‹^bffŒ›„žvwc_‡‡£ ‚_[~m›¢’”ecfj™•¤£nq[]Œžu€eM~x£¨‘’vgmc¦“£–jt`b’—¡§‚}[[{„¤’—„fdpa¥œ– i_iZŒ” •ƒwabno«œ‚œTinqŸœŸpoS[–‰£ r‚Mov—ª‰•e`wl—‘–’jrUf‚g^g}{Ÿ¬‘fRwn¢ŸŸ¡{[va—~¦ª‡}vUzoš›‘‹h^upš‘š‹nym‰~~tƒ{w‡†”‰€tƒ†„€w‰z|u€‚†Œ€ƒ{~x„q…wƒ‡Š„‘‰ƒŒx€‰‚|Š‡‡‡x„ƒ†xu‡…}…ƒŒ‹Žzn{x|‰€w~€ps}~xx}€€„sxzyƒ{y}~{ƒ€x€‚„€{{~{ŽŒ…~‚wŽ†~“…‡€ƒ€ƒ…Žƒrƒs‚‰‡{~vt‹„‘|‰Œr‚‹{}~}‰qo{~ƒs}q‚z{t|v‹u|„|€u‡o|~y‡ƒuzxs}qx…}€€q„†vŠt|z‰{~x|€oŒˆ}„‡„„„ov|‰~ƒ€z}ˆ}Œ}|{yvŒ}„|t|‚zx‚„†€qt„†…}}|„y„€ƒ‡{~†w~€‰~‚x€…Œ~|v{‚qxˆ|u„Š|‹‚vvƒ}ˆ…Šz„‡}††‚jn†|ˆ€ƒyt’€ˆ€„ƒ|}ƒvˆl€pw†’}inswˆt„tŒ€€ƒxyxt…‰‘‰ƒz€p‰x{ƒ‚z„q‹€~‡„…„ˆyswn{„}€€}|„qzyr‚…Œ~z~}€~yw{~}w€n†‹‚†„~u…w~}v}„‡plƒ‰w„„~uƒ}•‰u}ˆ‚Š„y€_u{…’tba\˜¦—¤bz^f•¥ªt~SWtyšœ—‘hsse™™›’klib†¡®„€T`nz­ž‹“ebs_¡š“—kiaS†Ž ¨‚WW|s¢šdbto—‰’jm_YŠ˜“ˆtubs{¨®ˆ’^hch˜ ¤—mkXZvƒ¡}]fqlª•ƒ‰a\iz‘›ª˜€m]d•‰¦£wŠLP}x¡¤„hUcu™•—_k_c•‚¦ª|ƒYQy|¥¦’‰ik^t¡–˜ž^nfTŠ˜¬oaeƒ£ Ÿ‰Ohorž š”Yhga‰–™yzQawy¤ˆ†\Zwežˆ|„~‹|rwwx‚z†w„ƒ”ƒ€}y}‚l‰t€~v}…xw‚Œ}|…zu~~ƒ|rŠu†|Œ{zŠ……„~‚ˆˆƒu‡j€‡ƒ{ƒ‚ˆ„Ž…|†~‹|€‡—‡†ˆ„|‚v‚ƒvƒtu‹ƒv†rx{~vˆ|~…n~}x|€‡ƒ‹†‰Œxz|~~k|z‚€‰…„€zu~~z~{‚„€ƒ|~~|ˆ‚‡ƒr…„v|ˆu€~‰vƒ††q–y…‚{w‚~qˆ†ƒs‚t}rŠhwˆ~th€z}kŠ{‚„‡v|”„{ƒx|ƒ…”|i}~…Œ†n‚x©~k`\¢¢Š‡Naro¢›ˆ¥hbrgžœjbZ^‡‹¤§‚jUˆ}¤›‰_bdoŸ¦š›ojdd‘|ž¢t„\`w…Ÿ–ŠgkghŸª—ie`]•‡ŸŸ~€cPq˜¦Ž]icY˜’›¡ezYVŽŠ¨ª‚t\W}{¡•ˆdil`š‘¢ ohPaŽ‹¡³gT€s¢š†”Uegš–™fjg`‹œ¢€}]`v£Ÿ€dXyl™§œ“rdgl…¡˜e„]Tvrªž…—ibai•žžjaP\ˆ‰˜¬x‡ffuˆ«‰œbkpw’¡‹£bldxŠ|~{l„„„Š†ƒƒ†…†…†Š†‰‹w†v}}Š{ƒ‚~‡„zˆr…}}zqyt„|}||{~ƒˆ{yx~zy}‚x~sq†|{~‡|…‰’Š€€ŠŠˆƒŠ†}}Š„q‚€wˆy‡ˆƒ{”~n|„ƒ‡z{‹{xrx†u|ŒyŽ{ƒ‚—zo{”{Œˆ|}w~tu…swr~x~yw‚zŽwv|Š‘„„zy‹„‡|‚‰Šz‚…r{~‰ˆ|…w~~vqp{qƒƒwŽ‚xŒq€†ˆ~…m‡~…ƒ~uƒq‰†|y|€Œ|ws„Œ{{€‡paup›¢•Œaeeo—–¤™hqXc–‡ ©u~gP†w¡¢’‘aflb–¡—mub_‘’¥©bTzu£˜{N]ppœ”’žvrvS}~¦›o}Xq‹{Ÿ£•‘chgc¬›•fh[W‚¡ n|U_tk¦ž’ahdiš¢™¢cg[UŠ‘™¬wƒWb€t›¦’c_ui—¥˜¢htKiŒ‡«§yWgv}Ÿ‹˜gVqpš˜§•nnfi‹w nƒa[nl“¤…Venp¡¤’fnf\™Œš¢…yfi|†£¥‘cUme¤—§™ezaTŽŽœš|tbaz{¡™‡‡bbp`˜’¢nce`•¥™w†[e|€¡¡ƒ‰mbtd–”žnrbe”Š¨£{‰\h„†Ÿ¡‹’]Zh_Ž¤‰—hn]rŠ¦‰w~b[yq —‹”PaYk‘˜žmr]l‡{¦™{‚a\vˆ¢¯cdfi¤•¬kwec–›¦}{_VznŸŸ˜ˆj[riœ¦¤op``ŒŠ™¬ƒŒbY{¦¤—Zpf`˜—‘§jmaqsž ‚‡Ucrr° Ž•_sejŒ”_gf[„¬£ŽQb€k¦™‹–Z`ti——•{fdX~¢¤rZLw} ›Šf`lk–— ™qq]ftŒ€zƒ„yƒ‹|ˆ~…y€ˆ…~Œw„ˆ{x†‹{…s~‹{}ƒvŠ…„p{~€€†}„ƒ}Œ„Š…€€‚€n†…“x|{~‚x˜‰‡}}}otwvuƒ{|…ƒzxz„‡w|w‰‚y…†‚‡ƒ{‚|€~‚{„zƒŠ|~€zzƒ‚{{}‘yŽƒ|zƒ€t}z…ƒ‚|y}‡‚rw{{€|y‹†„sxz~w„Ž}ƒwu‡Œz~‰‹}ƒ~{}‡}~ˆ‚…|u~…€v„t‡‡rz‡{ƒ|…}„~{„zrx‚s€v~~‚€wƒ~€|~p„m~‰ƒ€}w‡~}ƒƒ‚}‡ƒ|u‹~‚‚€„„|k‘l……~‡‹€ˆ†w‚‰…mtŠkxŠ{{}ft–t‚x†yows‚{„p…„€‹{€„ˆ}w~y|zˆ~‡~w}…€€u{„€zƒˆy‚y|„Ž†w€wxƒ……Žƒˆw}ƒs~‡€€ƒx}€}}‰r—t}~x‚Š{‰c†…v„ƒ€{kvw}}zv…€ƒv†|‚†~€Œ‚Ž{…ry„zt€z}„t„…~€oux|z‚„rƒwx„†€{‚s|‚zz€yxyƒŠ‰†~†z†|u…uz{ƒts~y|ssœŸŽ™U_lu£œ—Ÿgcg]“œ¦ž}}R\v£–c`ni£¡—kcXb“«˜lyQ[€}¨ŒjazmŽ•™_ke_–’¥œj_T††¢žŠ‡b_jrŸ™™—bucc–”—§orbU„{ ›‰zj_gn ™›˜ezh]š‹¨žkvJco{ Ÿ‹„]Rjf¡— ffqc†–£šs^]‚£Ÿ}ƒY_vpœ ‹‘m]mZ“„¨œxt_^€v¨ €‰Yeoq˜¥• hih`‘‘¨¦u‰[Vˆy­¬‚‘bRof’š–™hjai‘‡¤x„_aŠ…¢¥‰v\Pkk˜•”•_UnSŸ›inbWy„¡©‘‚cfjjžˆ¤•bgplœ‘œ«qtcR~‚¨œŽX^nn¢™›“glfd”—–¥~{Va{†­¢†‘Seyj³¡’˜rqkt‰ŠšŸst``ƒt™œ‹Ž]Yofµ¡ kmS`•‹©¢x}aZ}¦¡u™_ypaž––hddtžŠ¢¢pxW`~w‘|cUm_£‘ŠYe_^‰–¥p€O[y€¤œˆ‡R_sg ‘“coe`•Œ¡®€~]_xs›¤‰ŽVfgm¤—’¡mooS‚€™®ytVVt…ª¨’Ža]|g¤¡ «ye^ZŽ¤žˆbx††‚…v†Žwooy€„€ƒŠx‹uzq…{~zv~„ŠŠ…‚€‡‡‚qwtz…jpzkˆz{„‚ywy}|…z|m‹{t„~†}q‚p€‚~ƒy„tƒuƒ‡vy{‰}‹l€€pˆ‚i†{”“„{†|ƒu€kzv||„‚vzrˆhz~€}……ƒ€}zz†x…~uxo€ƒz€‡ƒr|{„z}~}€‚Œ~†m‚}v‚vˆƒz„r†}~{{ƒq‚u„ˆ…||ƒhŽ…Œ™{}‚„{ˆy|rƒ…Ž€„‚‚Œ}lp‡‡uvur}}x‚…|„|zvƒ|w“‘—’Zjg[™’®qw]Oƒƒ§¨…‡Yc{o›™‰’fam^‘©›rp]`€ƒ¨›‰€Xcrh¡žŒ›igi^””™wv_s{ª£„‚e\|o”¦˜ˆiap_Ÿ¡—©uyeWs•±uŒcXzj˜•‹šgwgi‘•¢m~T^š‡¡Œh^sk£Ÿ˜’fda^ŒŒž¢jw`f‚‚”«}…[\tr¤—bda_ ’‘§bydY‡Œš¢†‚TSsh§š‰”Z^^c”£ ~i[c•§˜„\cur¨œŸ“ecrd¢’¤œ|sYU†Ÿ ‚ƒUe~i ©™£fRh{ƒ‰yŠz{€†~{ƒk„‚s„„}‡uw‡€utŠ}‡‹‚~{~z‡w}xvŒ~†x|Žqw€|~vr{s{~…u‚„rxxv‚z|ƒu‹v}‰v„y~ƒkr‹~…†|‡uˆ„|~~~|€}ƒs€…~}‚|€ƒ‡}ux{xq€ƒv…y‰‡‚„ƒ~„‡}|z…{€…sŽt‚ˆ}v‚„z„yzƒxo…wyz|‚t€„†…‹{‹z|~ƒˆ€€Ž|ƒ~ƒq‹‡w~u}€wznysxyw~}zˆ‚t}qpw~vk€w‚}x{n}v‚yŠsŒˆ‚ea}‡œ¥ŒYmxrª¦–bmom—•’–huYeŠ€·”}‚aZxo£§•˜lbue‘Œ£žsrbO’r£ž„‰dYzr–œ’‰aYch”«–rwVT…z­z~]^kx™•’•V|\k˜¡¦jx]R‰‡¡©~ˆYht|££‘šhslX–’¢¤{skXŽ„¡œ‰‚`f{f¢™”“aglm”˜¤œnfPTx—wuNX|m›”–”]vTb“– q€YR|££|Ž\`ry¯ªŒ‡[jkmž—ª|lYU‡€š¥~r\Vww š…hhld”¦g|eW€›¦|€„ƒ‚‡~ƒ‹w|€xvxu‹{ƒ~ŠŠ}‡}{€ƒxx‚myw…{‡„†yœz†{~‚nƒ}kurw{y‰‰Š†…|‡€y}…|z~tŠyx}~ƒƒ‡ur‹u}„u}…€t~w†€‚‹|†„„‚|tz€Œ…~nƒ…‚~„€|€ˆwŒ~zƒv}‚…‡ƒ|‹ƒ‰yu‚‚|op‡y…†~€€nu|‚w„{y~‘€Ž~‚v‡’ƒ‡‡v„pŒ~‚{‘€|‚}}‡‡yŠ„{zzy‚|~~‚ƒƒ{€s‚‡‹ƒŠŠx€{‡sƒy}‘€€…†y†…‚|„‚}w}s{‰w}z}~€„ƒuw‰}„|z}Žƒ‰ƒ|z„‚€ƒv{†Œ‚y†pv‡tŒ}u|~n~|x†v{…yzsx‚‡x„{z~nvxx~z}z|{Š{Œ|„{ƒqz|u†xz„‚ƒ‹~syyŠ||‰…x……t{utvyww‚z~x€†v‚€€‚€t€‚x€{y|ƒ€‰}‡ƒƒ{‚wq‡ƒ††€‚€}ƒ‡€‚‚v…q„ƒ}€‹ˆ}Žx‡‹„…o|x}uƒx‡vw|zuz‚‚t†‚w‹‚„‡…Œo}yŒmƒxŠu“v…ˆmrw{u„ƒqz‚‚‚w„w‡‹’}uhY•Ž°¥l`YpŒŸž˜„icnk¥…‘£aƒWX‹œª~y[S}}£–Ž‘`dpn–•¢ lm^Zƒ‘¨›{|R^m¢ŸŠWgua•“¢˜jcXaƒ”¡¦z}W^uk›¨‹–nYil–¡—–lbRgˆ¢™~z`gyx§™‡‡jarh¡š¤ŸiogZ¢—y}YTw{ …ˆZahiŸ–’ko`]„¥©~€f^w¦¤‹†b\wdœœ¢myggš¤{sdkzƒ¡›Ž‹Z`mn˜›jlaVŠ”«€w^^€{±¢†NZwi¤•¥•taZ_›t}‡€ˆ~x€~~‚…€yšyzzŠ†…ƒru‚z‡†yz|{~}w†~|†s{‡x}€|†ŠŒƒ}…wŠ†}z€p…~}‚}{~uwzzyx€ƒwt€}†{Œu‚}€…~‡ˆƒŽ”}yw‚ˆ{v„“}‘„{„z’€ƒ{z~w†qƒy„€‚}„‡s„„z‹…†}‚€‚x‚†t„}x†……|‚~{y|~ƒy†ƒh}qwƒ€Žz„Œžw~tŽ‚€~˜ƒ{€}}u€qp{‚}ƒx}toyjx…wxzr…‰yr…†wu‰xo‡‚‚„ˆt—•‡cbyi®–Ž ijzb“˜Ÿ›wle^†…¦–‰ŽW_~u°¢‘{_ob“¥š\pckŠ{¡¥n‹^^zlŒœ–ˆ^d\u’ˆ’•`v^d‰€§´uSV{†š¢›^bge£–“Ÿbu_uˆ¥¦z^a~sŸ¦Œ—dawi¤œ–¬flY„ŠŸ™z‰g]g­’ˆ‰]Yp_ ”›gcZa‰žzt]`}qœ™~‹hntbž›–rjag}ˆ¥™~{VXwi§™i^mnš™‘—\yh\Œ‘©§|weX}¤¡‘jlXqœ™£“_jh[‰ˆ”¯x†Zdqy¤•™‡bcll£””¦bv`c”§vl`\w¡©–™l[l_¢–«km`\‹™¦›~xVcquŸ¡€˜Wap]¤ž¥pbhkˆ‘œ’†\Y„nŸš‚‹g[{c–™¡’kq\l‡‡¥Ÿw†mVm—¤…_cax—Ÿ–tli`{•zV[spž³”“kfle¨™­’oheb”‚¡®q„YUtx¤›–‘jlkj‰˜“©dw^b‘¢xYYui—£Š—Zfle –¦yj_XŠƒ ›~}\^zs¨™Šdig^››š¢gl^V€€£¢†‹Z`us¡‰hhvi€™’Žyˆ…‰~‰Ž~‚y€‚y‡Š”Š†}‚vˆ‡|„ix…}sƒx|‚‹~‚v}‡~yƒzyzu}‚|€„t€„w‚z‚vƒnˆy„|z„x~‰uz‚‰‰„fˆ‹|Š‰|ƒƒ|Ž‹}…|~Šz†‚„‡„tzxw…‚ƒzy†y‚Š~uŠw€v||…ƒ‡‹‹†„y‚…z‡‘€ƒ‚ux~o€€‡Žx€o}‰x…~~Œ€sƒ‚z‚|~‚™~‚{{u{yuv†t€x‚€w‡zhttvƒ†}~„p„r|m†~„†„n…~‹vz†~Œ€~ˆ{}}€}‡ƒ„†‡}|‹†u}‚q|‹Ž™¦ayfd˜†žªw{QR{‚¦¨…„]cn˜’˜dfuY”“…¢u|`]}‚¤±’‹V\s^ŸœšT]]`’›¥Ÿ‚xWn†š¦…ˆaetWš£•—goqqš~«žrmRa‹Ž•ƒXUu`—Ž£•jpcg•”¡œwx\a{š­……fSoxŸŸ¡fg_ež‹œšf{^I‹ š‚ƒg\hx¥™ŠŽXk`d–”¡hj`\tƒ¤¥‘‘h\fm¢˜‘”`kYi‘‰™œjm`^qx¤£ƒ‚^V€œ«“™gqmN•˜¨¦rwZ_‡v¬¦ƒk[^zjžŸ”˜sSfl„‚„‚‡Šp}x‡}€w|…†€|~„uyr„…~†Œ…uƒ{€‚zo†‚}Šy~„ƒ}}‡sŽu‰~w€}€n‡‚z‰x{Š‚{iŠ€p~{zz}v„Œ|†ƒ†~|‡eƒƒ€y‘‚ˆ‰‹‡~‚nŠ~}…ŠŽ‡‹wzƒy|h€–|…€‡rƒ€~„’~„†ƒˆv†p~z‹}ˆ}x}u|ƒuƒƒt|‰|‡‰ˆ~xt‡w|xt{€yƒvˆ~‹…„|zz~|{†ym€|„‚†}w‹v‚~y€„dŒv|ƒ}ƒuŒl„ƒƒ|Žw}|ˆ}›‡€wˆ}†ƒ‚lŠz„z`mu£‰XZwd®”šqix^†” ‘p{`e€o›|…S]fc™Ÿ›iu`qŠ—¥ x…]pu„Ž¤€•hhvy“¡¥¥d`daŸ‘² ~zec„~§°|™_XxjŸ™ŠnafdŽ}¢¬rzdcq¥š}‹ebqh¯ž‡hhaZ‹‰Š¨f€\V}}¦«ˆ’Pcmp¡ ‘¦ilrZ‰Š©¬p€TX…¨Ÿ„‹j]xlŸ£œndk`‘•œ }xXVŠ{±ª€”YawhœŠ‘sbP_‡¢‰j{\R‚n¦¢ƒ‡r_hl“¡šnTi\”‰–šf{VjŽƒ¦žˆ…gˆ‰{•Ž|z‚|ˆs}{€~zˆ{‚‚t”r‰vtz…xz†~„ž„‡~‚„€}€x‚†{†„Œm‚{w†{}†z~Š‚‚†~{‚vƒy|}‹o€†{~r‚…•~{“{Œ„‚yŒy{~‚‚tvx‚}€w‹v{zv~}yƒ„…‡‚}|}ƒ‡z}x‘ƒyŽ|y‰y……ƒ‰‰|ƒtˆz„q}‡~ˆr|„}}w‚ƒ‚}…{€ƒ„izƒx‰ƒy~x…u~ˆ|€…€wv|‰‰ƒ€„„‚‚z„‚}†€ywt|„|††‡z}„„Ž‹q|x†~{€t…|}|‡|ŠŸomjpŸŸ’›frc_‰Š¢Ÿs„b\ˆp¬¡†Šcglnž––]jdX“ˆ‘¡{gR{ƒ£«ˆŠdYrg““jbnT›¡nxlP…ˆ²¦Œ‰\bm_››™žnfgj‘›™ sˆbYƒ|¦®€’Z[ph¤•dbbeŠŽ¢žxqUe‡ˆž¤ˆh\tb¢–hkakš†©¢m…XS€¤ª‚}_`mw“š˜nqaj–Žœ¢z†b^‡‚›†ˆa^sqžœ™œ^v\_’•š›rsfTŠy¥š”ŽWbte™•Ÿnkl^‘‹¥­|€N\£ž€ˆ`Yjl¦‡€y~‡iˆˆ~ƒ€}{Ž“‡|~wzŠuy‹‘‹Ž€y‹{ˆ€…u‡~‰„†‚†¤vw~uƒvz—‹…ƒ|‡n|y††}‰zyuz~„doˆ}ˆx‘‡zom„„†wu™†y–††{sƒv}ˆ“~‰~ƒ†„€‚ssy…x‰vsnz€_ƒ†‹yzuƒ…™p‹vly…w|uumny{{w„{{†z”‚pw„|€yŒ“}€rv€y†v‰wxŠ}‚€ryz…—r…„v‚Šx€Ž„‹qm€qŒqorr|v{}Ž~yŒ€u~‰€€{Žq}ˆvjzv‹zn†„~~ec}¡kheW—|°©u{e\yt€”šdprz£›–ŠŠn`h…‹˜¡rˆ{Z‰i¡¢{‚YhS|‘Ÿ—“pmT]º¥t‚Zgˆ}ž­„“cYmfŸ —‘tnj[—€ ¡t‚Zgwƒ§¨•admwŽ¡qwdg‘‡‡tŠeiƒŠ™™ŒˆXipn¦‹šdvm]—˜«¥~‚[Xwo¥·~•Z^txœ”‹¦ukwcŽ•¨š{sidŸƒ˜ „šabpX¨¢œiobn‰pœ˜vYZ}œ³˜tTst˜–›fhTeˆ¢¥ltRb‹‚ª£zŠTjw|‘¡—n{dox†r~}{‹eƒrq}s‚w{yš—…q|Ž…‰‚q…oŠ‘v…ƒ‡†{‰rŠv|…‰{ˆq‘p{w}s…yƒˆ“d‚y‹s„|rxoŒ}o{€ƒ~~ƒ^f}zƒ€{}z•–†‡y{„…|}™q{w…‚‚wœl™x†‹zyŽ‡‡‡…z„Šƒ€€„{‰‹{ƒos~~l}pvŒyx‡‚uv‡‡h|ttt€l…~i…u€vwyu|“Šxw€‚‚m’p~‹…„~Œxrœx}y€‚nŠzn’r†|‚z€{„nnx|‚|p…†€vso‰x~{{‚‡kxm„‚‚x•ŒWn‡~§¢€”Q[v~œ¥˜‡e`ei“ˆ{”fz[h†š‘£„~bOpmŸœ–“dqgh¢™›juaU…‡¶…wYYuœŸ†‰…a~f’Žž‘kgv]“‘¤‚\Qyg—žŽj`njž©™šqf^`–Ž¦‰†bcupœ£‚‘mkj• ¡•o`bZ~‘ªœ€\Z|_¨œ‰hbpfšœ £bq^hš†¥}jY€t—¡dgZl˜ž¢ahjn‡—‘mqYyš©‹Ž`U†n¡“žžpqiWŠ™•}}d`q]ª—˜^mtr‘–¤§†i^[ˆ† ¯€z~‰|‚yr‡u{Rwƒ~‰x†•Žp{€…vyyw‡“y…|su€„zl|„ˆ|ƒs{zxŒu‹‚{|‡‚‹Œoˆ†z|€„‘}‡Št‚lw†xz„o}‰‰|’~uz…tx‰…•”v‚{ˆ„‚tu~{†ƒx~„joj}…Œtq~•€„r{€Šƒ†…}m›v|q}„†~‹€‹ˆƒ~x’„y€‚o„€wm…€}ˆs‰t„„…nŠ~sz†w…{‡ƒ{ˆz}€wŠz~|…~†{{sƒ{€}ˆ…€z‚z{†{|zz‚~~w†‡‚†wƒ|s€‹ŒheovŸ”¢hkjX£ˆ¥š~oeX~|¨˜Ž‰^Ugj¥ž–žuse[•£ {ŒTa†ˆ ­†•^_d Ž‚rj`X‹†¯špWcy¤Ÿv‰U[zmŸŸž‘g``^‘ƒ˜p~\^vŸŸ‚ˆb\nh”œ¡rmh^šƒ˜¤mvUXˆŠ ªŠ…Z^jv¤£Ÿžotb_œ¡z{Vaz… ™‰€aYek šš™Zfjhˆ‹‘œ‹qXezx–“y`Wuešœ”—‡jcj‰”¡§vihWƒ{¨šˆ‰ZWu[ Ÿ”—fgcf‰‰Ž—yx`Xƒu–£ˆ‰^Yqd›tp€{‘~ƒ„}‹y‡uuuƒ|yƒ~|„ƒy…~…‰~ˆƒz„~“‘…Š„|}w{€s}p†~…xƒz}€oˆ|ƒ}}„†˜p‚y~‹…‚{€xv„{”sjtoƒˆ‡}y‘{~x}ƒ‚syszrt}y„|wy}|q{k|yn…†v‰z‡{vx~€‹x„‡ˆt|z‹yƒzs„x†zw‚v|}}x}ŠrnŠ|†ˆ…wˆ„zumzm‰‰{‚‹y†‰‰}|Š‡r‚y€{t{ƒyƒ€j‰‘l†uzŠx|…|q{h|}vv‹„yujw‚~€z{pO{“–‹avZj‰Ÿ•²k{\bz‰™©‡ccq{–¤¢fsekž’ Ÿmqih–}­«‹x]`qv”™”naffŸ¡˜txch€{¦£†€Y[i]¦–Ž‘_mdaˆ•œ©nlYfu…—š‡ˆj\np›¨¦gyg`’”|lXn†¤£u…d`„i°• iecežŸ“e|eZ„~ž¡…TPspžœ •Y_v`ž†—{n]Tƒx¢ªƒ†cYlo–ˆ’eiZgšŽ¡šlr^a… ¥‰x\[uq£ˆ’›Xghe˜‹—šqtbX{‚œœ†€X_kp§œ‘—[rs…~sƒyw‰‰|‰ƒu~x€{wˆƒp†{r‘zŽy~‚}ƒ…‡…m€x„y„wu…„}}qˆˆ…ƒ…x–x€Ž€€}„w…z…‡ƒ†‚{…ƒ„v†y€t‚ys|‰‚Œx}}}…‘~ywy„|yvˆ‚€s|€€‚†‚v…€qvˆ€ˆƒ|y”|…ux}yƒx}p€q„†p~xw‡yy|‡~wˆ€|‘|ƒ„€~Š~j…{~z{u…‰y{tuƒ‰y€zzˆn|‚Š~‡|…•~‡z}zyƒ„wr…rŒ}}€}}„€‘~~†{}|y{~}ƒzŽ‡vVn{¬€LfkuœŸ™¦fmbS˜ˆ›Ÿnt\jƒžŸƒ‰[kj˜ˆžfekMœ˜¡pmYaz®”‰qbfsg™—œge_e–”£¤†\iŽ‚¬¢†’enquŸ¢ —flee‹˜¤ˆu_[ƒr–£„ƒd]mpž–›žcc\g•¢œi~e]~|¥‚ŒZRz¥–›Žio[aˆŒ žvzmd‡Š£¨‡‹[eiq—hef^ŽŒ”vx`bz‚©™€rcpcž–™œbja\‰”¤Ÿvthh}“ ™„U[ilœ´‹j^maŒ§¯w†c\‰€§ Œƒ}ˆ~€€…„{…ƒˆ~{†ŒwŠ{‚Šy†y}…|…p}}|ƒ…‚ƒ||qut|{€‹‹y}w†rƒ…t„~…’{ŠzŒyƒ~tyv…‰˜y}…yƒ†—z‚{vs†|ƒ•‡~‹€|‹€|‰yŠ€|†xyv|~z‡uƒ{{{yt„uŠ|yv{ˆ{}€‰†Œ‡z‚‹zŠ‚q~|€{w‡|‹„„…“ˆz„{z}‡†y}ˆ€ƒ€nƒ‘|˜vz}„†‰‚xt‡‰‡y{‡xˆˆ†~xwv€t†{}†yŽw‚€}€€vy‰…‚†…~‰w‚|ƒ€}€x„~‘„~†Š‹z{kƒ||}zn‡€ŽŠ’ƒy…‡€‚u˜‡‹yx‡…yŠ{Œu„}‚t}}Œw€z{ˆ‰†{~x~xŠwƒzˆ€vv€„€{~|†y|…y‘|~„u~€ƒƒ}…z|…‹|yŒmxŒwy‘ƒƒˆz“~u†ŠƒŠ}~|tz}|pyŠ{s{vv†Š‘Šq„n€z—”~|€}†u€‰s}€x†‰„†z‚Š‚}~}}Œ€…†‚ƒ€|ˆ}tx|ˆvo†ƒ‡‚|y{‡…|…m|€€ˆv~ˆ|–‰y†‚{…|n‡~’Ž|o^ožƒ—”hya]zy—«‡•XXns£¡”–Xq{d—’›¢s|]Uy¡ŒƒZeso œ–™`cZaŽž¥xs_l~‡ž ˆ’clye•ž‰˜cfh^œ’¥™~uSfŒx¬ž–[^uiœ¨£\id‹‘ª¥snSS…~Ÿ¤xŽVdkr£§’—j\n[’‘¢—nw]_Š{©©‡‘i`€p¤ª˜icbd™‘¤¡w}ZS‹€£¦„ƒO^np ›ŽbbWe–¨“su`]€•¡ƒ‰cftsŸŠ“_em_—ŽœŸxt]`‰‚ž—††^arož‰‘dhjYƒ˜™eqX]Œy®œ||eW†rž§˜˜bdoV˜Œ snS_„‹©«ŠŽe`{gš¥Œ^diXš™¢¢uqO\††‡ª…„]az| ‘ Œdmbo’šž©rwaNˆzŸ¥}‡`Yvk› Œ”bjbl›¡§xrjNv¦ …Šddlv¢¦–c]rf©Ž”fueZ‡¡©‡X_jtž–‘Xbi\Š¤œ¦~lbR™¬ „YZtp”›Ÿrgck‘’¤k‡\_Š~© u„``\h¡§–rSdQŠ–¥r€VfŠ®£Šd[yi•ž”‹ddcd‘†ª˜j€Va£¤Œ]Ssz¡“ Vrg]š†¢¤nz_‡Š¢ŽxeT^h¥”Ÿ^hggœ zzhXv‡ž¤‹„_hysš”‘—gklb˜’¤­j_\x…£“ˆŠ\fnl£Ÿ•˜roed¡¦w~Vc‚|¯–€ƒT^vpŸšŠ™indd‹‘š…nZOƒ|•‹‚‰„†~r†™{‹~~|„ˆ†‹ypzs}ƒ}‚”}y€q{‡{€}…rmŠw~v€€{}z‰v}}Šzƒ‡„„uƒv‚}|Žvyƒƒ€‰||‰wƒ‡‚†x~|†u|~x‹„q€tm‰zow‡ƒ}k…w„–sy|}w‡tnyy‚~ˆŒ}r}ƒ~Œt‹tq|ƒ€†‡‡}ƒrƒˆz€s„~†‘~‰ƒ…ƒ„~‰‰xˆ{ƒ|‚wzŠy€€Š‰€|†v€|€†…}|}†ˆ€}…}|„‚}€v{“z|yt~‡yx~jy†|{}u„ƒ~—}x†‚y}xz„‡„€…tˆ{m{tz‚‡p}„q}wyˆzx{Œxztmƒƒ{†{€z}…€€‚|†|„„w}}{|‚~€y|ƒu‚~~{‚zv€}p„x‚‡w’{zyƒu„Šq€tw}{x{u{~u‡‚}w€…“—„w}€€‚‚ztw|y„ˆo‡“}}Š{zo…Šrzn€…|–~s•u€„}wŠsˆo…~ƒƒ~}w~vn‚„‡„†z}€……u‚„}ˆ‰g|‚…†……~ƒ…vw„ƒ‰†n„|yŒ…xrz}~ˆ†~{†‰z„}zvw}{„~}„}…˜~w|xvy{‚y†}{†uxzx‹†‚||wv…zƒx‹{y‚€ƒ„ztzi„‹r~}x}Šz‡v‹‡€„ƒz‰}x|xy‡†}…}Œ‚ƒŠz{‰‚Œv|}‚€„sˆ}„‚~}†€ƒ}}s‡v€y†˜~sXR}z¡’MXnk˜Ž’^mbbŽ‹‘ rkWczƒªš{‚WilvŒ¤‹›h\fd’’¤w|Zh‰ˆ®›|]c|p¤¢’Œhbhe˜Ž¢›pzbUˆˆ­¤‹Œe]r_¬˜Œ‘cqosš—„›qn`b}ƒŸŸsQNwm’¢—“ZhPe—›˜vsaKƒ„š³}’YoxtŒœƒ›[mdkŒ££nt\_qŽ‘¥„ƒ`d†i¬“•f[oh œ¦£xnj`‰®“ƒo`e|k¤Ÿ–cZyf•š— zu`Rm¤—tŽYY…‚Ÿ­“oaih‰š”fsWg€…yx‚„€‡„‚try}„z‚{ƒˆ~v}~szyy‚xˆ|x‰ƒ…ƒy}‡y|‚|‚oƒqˆzˆ~ˆ‡{|z…”}‚y„w{‡q€~…}u}€v„w}Žw…„}†|xv|y}z‹Œ„„‡~†ˆ}‡zz{€ˆ‡y{„…Š~v…w|‚ƒynp‚~‚€Œ{ˆ‚‡wy}w‚uyƒ„|}|~ƒ‡~ƒ}w~‡sˆˆ~~‚uŠƒ„t…Œp‡~{|w†ƒ{‹…~|€}†„|Š‚xt|~…|‚ƒ‹…}z~Œ|ƒr†„|†‡€xz‘}€|p…w‚€{p‚yƒ†vƒ€yvsh‚€tux†y|{|{}Š…€zq{„u~ww‡vy…{}ƒ~„z‚u{yuzzz‚ŠwŒ„z~~x‚x|…|ˆ€ƒys}†wy€€€y}}~‡†uˆwu„}……s‹‚ˆ|~ˆ€x|ƒ‚†ƒ}z„y{~„„r„{}vr€ƒ{Ž~y‡zwƒ|y~|‘|~z|†‚o|{z€~twwz€|†x€‚ou€y‚x‚€€t‹}wƒƒq{|u{…{Œ|Š…ƒ…€zx„€{€€w}z{ƒx„~…z{£ŸyiY`€šŸ‘ceku›–Ÿetg_ƒŒž¢r|Y\ƒ{²¨“Š]\|r ›¬—opV^” ¤fqX\„| ˜ƒ‰^lctš˜Ž™\k\pž‘©•m{ed‰z£˜†„Wimpœ£”‘efa\—ˆžžry\]†ˆ®¦ƒXUvo¢—•u_]k‘“£Ÿs{b`}£›}„d[~j¡ ’gabh—‰™žmxZ]Ž‚ ³„†_\wv¡¨£hceeœ™¤msS_‚™ ŒgPqp¥ …gehf••¡™k}ad…¥¢Œ€`W|r¢•’bfl]—““©xdx}†xwqvyƒ}}‰{z~‹~‰v€{€Œ{{‘||}„ˆ~†ƒwyyt}}‚Š~yzƒx†ƒ‡|ƒ€„t~‹{†‰}jm~vŒz€Œˆ{‚s€ƒƒŠzv‡€€…~t†|‚z}ty‚|ƒ†‹„}Šƒx{u“wŠ‡‰z„xz‰r}tz~tsr†‡„n„x„{~|}‚…‡†…†…€|‡‰€†}‚‹wƒ‰‚€xy†€q€xƒ‚‡~„‚y‰„t‹}u|‚{„ƒr€y}‹Œt‹r}zvxy†r‹…€€wyy{Š{~sp‚xxr„}~‰yŽ|s}Š~ˆ„ˆt\i„œ ˆŽ^p{p¯Ž¡›^l`S“•xg_‚w¬™š’p]oX¢”—œblZbŒ‡¥£ŠyZSwv ¬}Š`Xpl–¡›“cq[lŒ†¡‚V\zv—«‚—bbre¤”——bq^j”¢¢{cck «–c\ow¬™šŸjpb]šŠšwzl`ƒo§™‰‡^djo¨šŠbih\˜«st[Wuq£¨‚Y^kr”œ‡¤fwgcŒ†œ•vzX`‹r¤™ˆŒPbsh• £liu^ŽŠŸ mYXstž£†“S_sw™ ž—nfa^¤›}|Y\…x¢£‹dXqmš—žnimd}™q…hU‡z§‰xbY^o›—˜]yja’—¨mqdds‹–žŽ€[[dk¦ŒœœfkXdšŠ¢¯uzY\|~ ž‹‹Yekm›œ–›oh\[…Š¢ yyVfz|£™…™YZ{dš“žif\\‰¡†p]Q~s¨œƒŒSZig—¢ŠnqRe•¨¡€|]Z~}¡§”Šf[og“˜–Ÿ[l^a‘¢žv~hTo”žŠa]pnœš“qwcd™‹ªšxzgd|ƒ ®‹Œ][snœŸ ”eoee˜…”¬s„dZ}€¦£œˆd]gožŒ—`pdZ~…~ƒ‡~}†~}uxz{„|…{†ƒŽ‹{€ˆ†…Œsxwv†‚~ƒ{|…‚y†xŠ|‚‡w€‹‡„Šz…‡Š…u{rv‚}}}}t‚†}†{t”…ƒ‚}}ƒ}ˆˆ•w…jv|„zƒu…{ƒ~xx‹‘|‡„†€”l„†z|‡‚~q{€…€…s|†~kŽypƒj†|ˆu‰~w„tz‚„ˆ~Š}h‰~‡‚€lz€}{w‹|ƒ“‰pƒ€‰}wwsƒ}€{kƒxƒ…ˆŒ|Š€ƒpz‰Ž¡‚r€~‰„…€“„wvƒj€xyn‡r……ƒ‚{„ƒsso{Œzy‹†u›}„ˆ‰mb|}ª¤sYfvi•¡“nlihŠˆ¬†nYXw{¤¥‹]kre•“rfi`†…¡œv€de–y¦¡Ž„_ciu˜–š“co^j‘Œ¥ª{}i[{›·‘‡b`no–œ–bldZš¢¢iu^O{{Ÿ‰”Uhqo§›—š^a`S†˜©u€]Z{yªž‚ŒUbtp—–egad†ŸŸ¯~z_[…|«•Œ`Yir˜—œ—numY ™iXt€z©Ÿ‰†`Vfy¦›—›dgdU‡™myX[€Ÿ¤‰…Saxh™“‹œfpWq˜‰¢˜sy]d‡‰™ž‘x‚u„…‚z‡y„‰z~„}„xyŽwƒ‡|q{…‚}{„~€€x…}Š‡Šsƒsy}…z…Ž†‡…}†r{„‚†~€‹}{„{€€qt„}„z‰’x|}ƒ€y||rz|x{…ƒs|{x„pz~‡„€w|w}w‚ƒ†Šv{‚ˆ|„st~}€„~€z~„vƒ{z‰xŒ‰u‚tr‰~{€‚{Ž€€oy{sy€wlv†ƒx‚w†“qƒtz|†|„qs•zz…‹„—y‰‹|}Ž|…swotƒŠz…z‹yz}t}xqƒ€…rq‚{‰v†~†zŒ€o‘~ƒ„l˜Ž©jxer™Š¦Ÿ|~ZYŠ† ¤zaWxz§«¤…ddg`œŽ žg\ZS„‰« {loVz‡ˆ‘‘bZQQx‰ gmiYy†•£Žu[Tim¨†‰Llcn—œ”©wf^TyŒœv„Jhuq“¨’˜qkzlœ“–¤uykby¡ }Šoj‡~¸˜Š†_Wgj•™‘ug^X‹w£ s€MMsg˜˜t—ijuo•—”iv[J˜z˜¢{‚eardœ–ˆ’fdgcœ¦ yqaTˆ‚’©~LWx}œ ‚bRZnšŒ³cvO]˜Š¦¦Š„]pfs“š‰‹fbjd£…s~€‚€‡Š†€„‚€z…„†…‡‚u~ƒŒ‘ƒŒ}v’zˆ{s…‚rzy„€iuˆ{„~€t‰oˆxv††}w‚z‚…v„y‰z†‚‡„yƒ‚}‡~…r‚r|x„~s„ƒˆ{‰„yovqp~{xmŠx„‚r‚vŒu}}oˆˆ~}‚„~ƒx~†‚€Š{‚~€x‚…u‡vˆŒ„‰~|„€{…„‡rwz€x…}s‚gz…~~}~q‚yut‹‚{y‰ƒz„˜wŒƒp€~{†sˆv„t|~q‹~s{ƒ|vƒˆy‡…}ƒ”c}‡s„‚‡}~l€y~‚Š{}~ux‚‡z™ƒx€wˆ{†‡€ƒ€€„r„u{‚x}y†t‚u‰}s…†‚€‰‚…ƒyv‚kzz‰m‹ƒ‹ˆˆwŠs{ywˆ…z…{}…}‚y’zy‹{€Ž|€†’ƒ}upuˆyvxnƒxˆ„y„„qˆ||€Š†…vul†‚„ˆ|‚s‰„qšxz‰ys}w€„rw†y…x‚qyzx‹‰{|†}w|vzvz”x|…w†‡{€}€|„z‡z}‡€€x…s„€€uw„tˆtz‰…x{‰€q…€„~Ž{‡‡wxŠ‰|„z†txŠ„ˆ€t€rƒ|zƒŠkŠ‰x‚{kmŠ”¢—g`pf–”š§ioY]‘’«¢‡uTPpˆ¨›™iarzššžthRi…‡¢u‚Y\ƒx£ž•aijp™œ–kuZi‰’ª vzYZ…o±£…OWheš“—šdlZ]…Š™yw^`€}¢ŸˆŠYhdq«–ž˜lbeoˆ¢¢„x\_{w£œ†–Lism  ›™`Ri]ˆŒ¦˜…Qc²§Š”ZVtk§“Ÿ”gae\–Š ©cu_išž—t[lu’›Ž j^lbŽ››y…Y_…{¤›†„\Who•§Œctqf˜Š¦txaW„sŸ£…‚`oo†y|{tƒ‰„Š{…‰zzyŠƒ‚…Š—‚‡{z‚~m|x’{}†~{wuts|~†yŽ‡yzhpˆ|Œ…x†‚‰g…zx|ƒƒyxr}…„tv|…uŠ{‡†‹‰ˆuuy‹€m|o‡{~tz’yt„|}ƒw†wm|‚wŒy–…~‡u~ƒƒ˜„{nz~}||†sƒxƒ„€€}‹‡z…|yx‚|‹}ƒ„‚zsnƒ}€ƒˆt}…‹†j}……ƒtr}†qšs„Š‰Œ|{¡nƒ€…{’€ˆ}r’ˆŒ†z}‡„kƒn|}~vŒ{zso€…{y„‰x‰e‚…“|vb–§¡–jbd™v¨€„hVswœ£•ŒfWhc¤¡‘{vlV‡zœ«‡†[`y£›ƒ~UYll¤‰•§vydVx‹›£|[hoy‹“zŽ]qpg—›¢¬ricZ‡†¤zH`tf¥£‚ŸgS„h™•£špxXP†„¤›‚†[eyk­˜•__p` ™ž oy_b……­¢„‚_Ptj¨“¢\pbj––•—bgf\—‚¬ž†“]\xv¡¬•–rac]˜Š¦jo_`z˜¬ŒxgUvw¢¢tŽ]o]mœ“ž«ckZ`~ž›†•]cyrª¡ˆX|os––š˜xfyƒ{€nw€}‡}Šmrt|u}……Šj„f~}ir‡{†‚}|{qoq†yvŒ}yŽˆ~~y€{u…„u††uˆˆ~|…Š‰{v€}„|…g‚‹{…}‚ˆtusw†Œy€Œ…|s|†vŠorƒp†v‚‹zx…|ƒcsuŒz|Žƒoqy†ˆˆw„~~yx€‡€tt‹t††€tŠ‚|zƒxŒ„~|yr}yˆ{ƒ|z‚z€s~‰‡„~~kˆŠˆ~ƒ{t€rƒ~‚ˆ}}‚„y„wyvˆ}…w{…|‡…€}`‰{|zzw†‹kr€…}‚«ˆŒURr~£“—kNia””—¦vufXtˆ™˜wwRahz¤ªŽ˜`jvZ ›”®lljW—¤ zt[exq©—b`x\——Ÿšdc\c|˜œ‚uaYwhœž‚fUfg˜—˜˜rsXS—w¨¬h„b^w}¨©¡‹ihYlž™”§^u[W‰‘›¨xpsbt€£¢ˆ”^Wdmš“Žšbr[LŠŠ¤¦u}g[ty¦˜ž“\fs_œ““ƒn\T€‚˜™yŒUctp¡Ÿ‰Qfzm¨’”opl_…Ÿ¬yWVws¢£‰ŠeWpl„˜¦lxia”ˆ©¢y|ZW}}œµˆoibt—¢›wi]pŠ‰¥žx‚hMŒw’ª††Vid”¡›\oXbŽvžx{`U|l£¨¢“d^cg•„Ÿ¥Vv_Y•’œ­~x\m~s­ž‘”Zrlbª’•¡tsq^—›ž€{aX{p«ŒŒ’`eo\ ¦›¢ln\R…±¬€…VWzs§¢Ž’gamiž›”žmc``Ž£žuYKŠwš¥‰’f_ig˜’ p|U\—‹ž½n†_N~„­¢Ž‰Mloa›—œ d\_YƒŠž£}~]jpy”›Ž—Wƒbf’˜¥lmd[Š†¥®…zXbvo¤‰ŸUec_‘œ¢[t}‚‡{}‰{zx|Œt}mrv€‚w’~€Ž€sm~tƒ€‰{…„~x„|xvˆ‡†xƒ~}†ƒs‚†Œzƒ‚x„„~sut{{yv~ƒŠ„‘‰}|€|‹xzzz‚ˆwv|z~}†}{…‚“ƒw|„x{Žv„z}Š„qu†x†egƒ€wn~zxv……‡o†z„ˆ‰ƒ{|‰}—‚†}x€ƒk‡€l{‚x‡x|€w‹†l{{z„€py‹†t‡sy„p~ƒp„‚ƒuq„…w|x~Žƒ~†„—Œ„…x}…‚„s”„€Ž‹‰…‰f…jƒq‹~‡Še„p‡v~~…‚svtzw€|}…ˆŽo|z}€`‚oxx€€x‚‹p„{€…Š{zpwi„l‘~†tŒ‹‹‰€y‰ƒŠ€Œ‚„‚Ž‰†•z’{‡‚p“‚…~ˆv‘€{„‹}…|…yw}}{ju†~†vv„„z‡mj‡“…€r‰ƒ‚xz’}ŽŠ‡o{…„zy„€‚‰zy‡„„…ƒ‰~jˆ‹~“‡ˆ‹†y‹y€„z€Œtzw‚g‹x|{€“ˆŠ‡~o…‚x‚tttƒ|Œz€‰y„tzt‚u‡xr~Š}|„„ƒ‡z}ƒ€Šz{tŽ}~|s…y{ƒ‰Š~ŠŽsƒŽy‚ajƒƒ°¢‚aMpy˜­Ÿ•`\qd§›‘¥yowh“£š‰z^Xvu©¨ƒ¢dsra£˜œ›gie]–™”x`giŸ‡‡b_waš˜—daj\Š–©“oyTW€{²¤¢jlum‹›¢ŸitSYƒŽœ²{}gS—u¡”Ud`š‘rnXd|§™l‰WUy ®“›WavuŸ›Œ›t[l]™Š–¤€|f]r¬­„Wwpk–¡“¨ihch”Š¥­~v[[ŒŠ™§†`flW¢Ž“’fg\a‡” •sx^[„ƒ¡Ÿ…•zalf˜™–•mXg`‹§œssYb€~¢ ‚’W[`k¥™¨›i`fa˜“«…wbX€Ÿ§‰¤fj|fœ—šgr_\•™¤i€k_†‚£­‰jeth™’’˜m`\Z—˜«t~_[ov—§‡ƒVrlm¦¢š˜aifP–ƒž£‚t\[w|¡›„“bi{h”™˜¤hjcY„”ž£{€bh~y¬œ‰‹Pbvr–›‡Ÿoc]iŠŠ£›{z\^wcŸ¤ƒˆe_qb•¢£frca ‹®‘}u^Wu}œžƒ_Kkp›“—ždrZn¤Œ¥¥w}_P‰¡¯‰ddcg˜¦’wn`g•’›š„sqZ{v—‰™cjq{|p„t…„|s€ˆwxnˆ†„†€Ž|{ƒy„Š~ypx†z‡}{ƒuŠƒ…ƒv‡†„„™i…w}|{xf„i‚zzv|q{’|™€„~„“Œmy~suˆŒhx}ƒ…‚Š}{‚vw~rv|„ryƒ„zŠŠt‚fuŒ€}zƒd‡€’usw{xxot^ˆ}{w†…‡Œ‹‡—Š„‰{†‚|zpˆ„…q{y|rmŒxƒs‚‡_Ž}w~oƒ‚qu}h‰Š„wsz€zy‚‚y‡}w…—wŽ„…„ŒŠ†{n|€x†u‡|yz‰ˆr„ˆvƒ‡‘‚Yˆ}”œ†„bhlx™ “Ÿklhf‹|›¥qSo~z ‚Ž‘bwv~˜¨™ŠjN†¨§tƒcI€Œ‰¤{xycj}Ž‘•zkqk]‘‡™¢uhyqx„¨–’[Rzb–£Ÿpflh” ªžmye_«« ™g_qf’š‘xlb^’€¡¢€{ZR†v ™ƒ‡`Xp˜˜“b`d]Œ|­”~ybYi©¦†¢\Wvo£¨’qv[]‡s¡§q~bP‡x¢ˆ“‰Y\mk—™ˆpcWŠ‰¥ip_Psƒ«¡›•`ZeXˆ ŽžinhY†“‰¢€Vh~«²€“lt}v‚„‚nms}ƒ‹yy‚sŠ„}‰€‚Š…ˆ|ˆƒ‚‰xŒ}zrw…{†xv†{r†}Ž…ƒ‡‚˜ƒ|€‘Šv‘”†|„}ˆŠ‚„uŠt’€}yy{yv†i}’~x€l|„›{‚ƒ†zst’}Š|†‰|t‰y™‡ƒ}€ww|ˆnf‘||‡u‡ˆ{„\q}w}……|‰’…†Ž{‚~~ntrŠ†{‚‰‰‰‰‰xnix{|€{ƒx}{ozs„‹~Œ}p†}|lj‚|‹u…p}€†~vwnvw„Œ}„sŽj‹ˆp€…„wx}{—†}ƒpƒƒ~ƒe“vŠ}ž‚ageRu†“ªljae‡sŒŠf^hw}š¡©lcgg¢‰›‘yucTŽ›žx{Nnu±¢€•mgnW’Š„œuhmn•‡°›Œ…[Osfž¤Š„}^ku•¢¢Œjr`^‰r–’a‡fW€w– ‹vr]lw¢—˜oqxT•ƒ”¨‚‚[d‰r²”gfek“—w©qv`WŽ‹›«uxVgrt—Ÿ‰yRvr’™œ dzppªœ§}y_]n¡’^hiY—§­qlc[„•©œxP_}…ŸŒˆdpam‘¦’žcq[Z–Œ™Šru^W‹pŽ‘V[cuw‡vljgy{r~†|‡g‰}‚‡‰}‚…Šw•o‹‰ƒ‰ƒuorh…€~‡‚o‚|‹|„„’v‡y‹}}€pyxƒŽ‚|~~us†vv|‘w€v}x…•†{}€}ˆ“|„~€˜~ksx}z}~|f|“…ƒ€t‚||œxty…~€Ž|}„œ|’tqŠpƒ„–o’b~Šz€‰~~gx‚€€st‚s€‡X‰…„„ƒq~|tu‚|{‰}‡‡Ž}‚ƒ‡t†ƒ…{ay€p€twƒ‚i†xi€to{’uƒ…my„h‚qxw~€€vf€tztŽ‚†m‚€Š}˜t‹t}†}lŒ€}…‚ƒz™~‡u…~{}{˜Ž~€‚‚q~“„’t~€‚uo}yyŽ~|Š~y||€i‚jxrtŽui‚p}nlk‚xƒzwdp™ƒ}iš‚}oˆ~„~u…‡Š‚~„‰Ž‡“‰v†ˆxƒsxuŠŽ~‚‡qŠ‰ƒ‹~‚ypw†€€Ž‚{‰{‰Šw‡‚x…†ƒ†‚„t}‡|}‹}‚t~}{~~€}ysyvˆsƒy|}˜‚{}ƒ{xp|~k|~‚„zƒ‡{q{l€€sx{u|Œƒ˜‡}}rn‡ƒƒƒpw}€|s{z„~q‚a’«Šf^eo’•fmUe—…›ž‚o_M…‡¢§‡ˆdcpq§šauki•†™Ÿuv]Q‡ˆ¢‰I]syœ‹—\egfž˜uƒ`d}‹¦¢ˆŽ`[pxŸ¨\lVb”›£tu`s‰v¬ z”bb~s¥§ –z\fh~Ÿ™lU[ƒŠ¥«€QU€n£®ˆ–gXo]—§™npXY¨§~r[Su}š¡–‹aoplž£©mu`Mr~—¬‰‹aNqp™Ž_eaf›Ž’›yn[_| ‰oR^oy¥ª„‹\s‚a“Š™›z}fRw¦¨ˆ|aglwŠzˆ‚n‚x…y~„{t†}‡~ˆv}„†x‡ts|Žt‰}}†y{y|z‚z|„“t…}Š€}yzw‘€|o…~€‰‚‘Š†uƒ†ƒy‹|‡œŒ}{yy{”q€„r{“|~vopxŒ„sxpˆ|x|q~oywotŠzzoˆx„yu†zw|€~ƒz’}v‚n‰~…€o~€v|‹u„…‡xƒy‹ŠŒ‹Œ}ˆ€ƒ‚xlˆp|ƒ…ˆe‰t}}|y„~x„}w~ŠrŠju€{yƒm~v„‰w~„un}w†‚yyŒ”‰jol}¤¤—U_jnˆ«—‘cNicš§š˜ko[i†„•«‚‹YVn|¥Ÿš”ghgaš“—wxZhƒ¥ªz`W€{ž ˆ‘^o^a—–•¬vkdS†  ƒ[`r~¯¢•–\j\f™¤ž¡wi`Z‹ˆ©­†€bZ€q¦˜“`c]\—œšdn[€š¡ž|„UZ„˜§ˆgce`™¢• j`i_Œ‡¢¢xuTV†už¬•eh~sš›¨”lxWbžƒ¨ª~ƒihyw›„•`aai•§ž—htcbœz¢‚`Kusªžˆ\Yic¡’“¢^hXd…ˆ¨ yƒ]`mk›œŒ—jbkWŸ‹‰dg\Qƒ„®°rPaj¦†‡”]kge¢œ–«~ccP}„žœ‹”Qk…p§¦‡’TvazŒ•Ÿwi]Z|™§yŽ`^}u™¨‘”k_kn——›”ht_^Œ{•žmˆYWxx–¯–Žveai“–œ¤svc[›°o~fVx‚—–‘˜Wfuc¬””¢jL[v¤¢‡vX_w…¢Ÿx›\em^™ƒ«yp]‡‰¡¢’ŠW|r¤™Ž‰j_kr~‘ž¡mdf]†”¸¦Ž\^|†¥~Ž`koc–Œ§«pUgƒ›Žbd‰r˜š“•gc_b¤š~u~z‰ˆ~~oƒz{}zr‚un|{zwz{’†o€vˆ~y…o„ƒf~€„€r„€pu}~ˆ€~€t}ž‹ˆ‰†zp†‚‘Œ†z}~jˆ„u‚nz„‚|o‚{~–x~~x€Š{Š‡Š€Žv„}xp„{v|‚yˆ}u~‚†{nˆƒ}ƒt‚‡uv~w†{|rozy|{zˆmx‡—ƒ‡sƒu}j}~z‰x„‡Œ“yˆ{rv}q~‚Ž‹—Š{~†z††pm}z~{„~u‹†…~|‹ƒ|…„}‚x€q{‚…‹xŠ€ƒˆ||…}ƒ~‰sz’•™žljhW•zš¥ytZYy†¦‹{€fctl›•œ©Vm`c„—‘›}yMcy€«¢ˆ~N`t_››•šk\Zm…™·ƒo`S‚qœ©~Zg|m¥ œ”ygjeŠ™§ ss_RŒ} ™k‚f_ux¡›„ca]e‰Œ¡žt_lŽv£§‡‚faj_¶œ‘•hqkb™š« uw`b‚‡¢¦‘‰e`us¡œ”[s`[š“– ~‚bck‚©Ÿ‚…Niql’›Œ¤hcm]‹‹©£xt]_}€¦›ˆZbyy›¡‘£mma^™››£ju_f‚€™ „cZybŸŸ jqbŠ€|~}†„~l†xz†|~ƒuˆ{mxs€{x‡y|Špz‰‰ˆtr€z{x}|~}y}ˆ‚€„v{|€vwƒ~ƒ‹‚ƒy‡…~{w~o„nyz~Š‹r„o‰ƒ|z‘w„‡ly{ƒ~€ƒ„zƒxƒ†vw…r…ˆƒ‡u}x{Œ‚zƒ‚€j†zmkˆ}„~„Š~†‡kˆx||‰v–us‚x€‹uz„‚„‚‡€~}ƒuˆ€‚‚ƒ}†„~}p„~xŠpysp‚|x†|x{•ww…z„}•}k~€„~z‚€w‰‡……€‹w„‚„„†p€|xˆ‰‚xƒs~‚€~‘x˜uyigˆŽ¦švy_\{wž¨‘˜[dugŸ—¥•fmT]Š†Ÿ£xRs€ˆ¡ª‹ŽaLrnŸ†Ž‹cmeRŽŸªn}fY~…§¥“hflkž“•khWS„‡¨™qoZ_~rœªŒXapd™‘——fho\”™ªpz_^€‚¤ž†W\{k«ž—Ÿea]`€’«~vZUy}£­”]r{g˜£Ž™hjhkŽ£Ÿp‡Y\†n• zˆcept™¨£Ÿdgai–‘§’ss`Vv™p…gbs›‘£“in]u…ž¦vsXK~kŸž‡`cec¤¥™ž`el[’‘—‹{wmˆŒƒsn~}€‰‚…„„…ssv|ˆ€}…~ƒ…ƒuƒ~„‡zpŒ‚Œ„pu‹~‚‰r‘Š‡Š†~}~}o„‚|‰wvˆzu†u}tŒ†||wz€nzz}z…‡|s‘u„{xˆrstpgxz~}xŠs~’…~zy†}ƒ|{“}‚‡ut‡{‰x||zv‚†~…{ƒˆ‚yxv„„ˆx‹vŒy{{…z}‚}ƒwyƒƒvz‡{‡„uŒ…v‚s‚}ovŽstˆ}{‚}‰{iƒ|wŠvz{xŠ‚‡z~‡{ƒ…{}‡€}ƒ|†ƒ{€s}†~†„†|ˆxup„“‡ZcmpŸž—Yqkl—…š x}]V‚|¡¨ƒearjŸ•£e`ea“’›¨…z]_~¥­’ˆNevo«¢’rznx›Žœ—uwI[ƒ‹¯¤‡‹`Prn“¸ˆžecul‘’˜¬s}\\}¨Š›bU†m ¤––[fjo£¥zyZh‹w ¢ˆgVvpšš•“`jbfŠ“¢¢yq[X“§¤ˆ„\ivu¤ ‚š[lo`‘£©i{ZWƒƒž­~‡]j†q –•—Tnku†‘“ wla[ƒr›ŽZ`us«¡Œœd`e^Œœ«˜ugT^‘¦“v‹M^{†wƒˆ€„‚€wƒxyŒs†}„‡v„wo‚‡~~}y—Œƒƒ…„Š€u}‘Š€u}…Šy†ƒ„“ƒyƒ…}‰‰|r|~‚{‚{xs†}‚yw|}ƒ~ˆ‰}……yƒ„‚x€zt‡‚z‚‚„{}wr†‚€z‚€‡ƒx~~y~z‘ƒ‚{„}‹‡vˆ„’x}vxxwry„ƒ‰†v†q‹z{p|ƒ~{yˆ•{†}…xvz†„oƒr€~‹}~ƒpŒy‡ˆ„‡y‚rr{„zuŠp‰y‰tx€„ƒ{†{|x}€†y‰p‰{ƒ}|v‚n}s|ƒ‹|›o~†¡ hwRZˆw«§‘a[„t¯£“jOkp˜««®lg]|¡¢wƒhW‡s£œ—…VYckœŠlykW—œŸu`XržŸŽ’hqke¥„ž—axY_ƒ†‹¦|ˆT_r†›¤ŒŠ]jk`­p~jnŒŽ¥§‚a]xs©šˆˆUbl\¦——ŸgdbX”|©¡Œ„\Wwo¤Š”W]o[‰š”žmhSW|‡¢£zŠRYnt£¦„ŸZnp^”š™ŸmoRr…¢§}ŒW^{n¤ª”¤jfsi •¥£dua[’‹¯œybZxl””‘gf]d¡££šm|mŒ}zx}ƒ€z{Œyy”ppzw|ƒ€Œ‚eŠŠ‹r„~|‰s||mw‹x}Šs†‡|p‡ƒ…‹…‰}‘†xo…y||„„†|r„v†…{n„„…‡€„~‰yv{v~ƒ‚€‡…€wyy{y{€{~‚–…„~€…‰prƒt{wrs~n…tƒy€…w}ut}~x†||zz‰ƒzy€‡‚€‰€Š…€…yw†pˆ{{pv{†ƒyr‰g|x|}‚{z‰Ž‚Œryr~ˆ‡}€}Š|‰|v‡}€yŠ{}ty€r’‚x‚w~x}‚…xv}–…mZWŒ‡¤žˆ€bVu ¢‹Dhgh–––¡m{SXƒ‚ xyRidyžœ…‰Y[nk ž™kidV–Œ¬—{r^_rª©„†l`€lžŸkmbc”‡¥›†^]}›¦€“R^uf’—Š™eo[y’‡ “pˆU[‚gŽ¦…cpdt–y•«joRcŒ’©“qŠbY…t¡£“’U_ma¦“œfhcW ’•§z|eR{u›˜„W`ik“ŠŽšcsgT’‡¤ª{yXVyy ©\ckpŠ–£nvdXˆŒ••miR{sœ£z”NZvjŸ™†jcY\y¢‚}t…m•r€Œ~}oˆˆmwz|{€sh€ƒ~•—~‚yn{vy’…}zŠxttz‹ˆ~z„†x~ƒ‚~‰tzx}ƒŽtƒ‰m‚y}Žu}{zzƒ€}†z~ˆ{}~ƒy~txx‡~{ry‚Žy||‚ˆx„•€…€uŒ„ƒqxu„~‰ˆ|ƒ‡utvl€ƒ‡|q~yr„„‚~s…o|…ŠŠ~{‰wu€‡Š{~|†Š…‰y†wŒ‚y†{‡x†}|†{Œ|‰€„{{Œx…ŠyŒxt‡Šv‹}|ˆrv…~€vpy„{t€w‚ƒx„ˆ~dˆg€†vƒ‚vqˆo~…{}ˆœ¤„…pd|p£¥’mi‡g•š§vvYKuŸ¨{“Zbƒh›¬‘tjaY¢§·rnZfŠxµg‡N`~i®š††a\\i“›§ qthe‡}–˜{cTsv¥œ”ƒ]udd–’¥rwjV„s•¥‚}Zfhz ¦‰’dln_›Œ·zƒZ\ˆŒ¬©€shY…zŸŸ‘“]fhg˜–©“iu\bŽ ž‚{Rdyu£ž“X_ceˆ’ £pq]^’€·¡w†VZzw¤œ|˜]fmn“–ª¤trYSƒ…§§Ž…YE~u¦š‘gen^³”—›fr[[’—¨}[^n}‡Ž{zt€zƒ‡‡ƒx{t‰‰ƒw{n„‚ƒyˆrƒ‡}ƒz€vŠ{x„‚x”„~{‰}€|„xk‰zƒx€ƒw“r‰{‚‚~v}s~t‡€~xz€|iuwwz}p‡u›‚ƒwx~}rovsŠƒ||€uxr{q{ƒ†v}„|‚l€|ƒ{„wqywztvxy|„{rŽ‡yŠv{ƒ€…x~q†{wp…Šsx{z…vsuy}{yr€†ƒˆlz|x~~q‚u‹s€}yxvur‰‘ƒˆ|‚ƒ‹}’Œ|‚‡€}‘v‰}oyŒtŽ‡‹}{…|‡}Šu‚vŒVgŽ“©h„f^v†–¤‹‰abhuŸžš‹ge_`‡¤™iƒ[TŽsŸ­‰\[px ¡šfq]g‘¨²nr`Zz{¡£Œ‰Bamn©’Ÿ•j`|Y¥’‘°|r^_…™Š]fdl–‹‘`gcd”˜›¶x~Zau«“‡ƒ[_mp¢¨Ž–tellŒŠ£švkW^”›œŠ[^|o¤¥–efad”“¡¥oxec…k¨¡‚‰aVxgš£›\c`g’‹˜žfmNPŠ€§®zT]i† ‘Ÿ”ihfR£ŒŸ¡p~_^€w¬¡€…Wbly¥Ÿ‹’Rwtbš†“«xŠqx…Š„‹„s‡|x‚|uu‰ƒz~|~Š‚yw~||‡s€x‡‡{„ƒˆ„…‰uƒŠw‚|~{r†wyŒ~~‚u~‡€•wzu}¡||ws{rŠ„kŠ‹‰‚‚‰{€›z„‚w|‚|z{…‹Šv|€‡€Šw„u€{}{„xŠu‰}w€ƒzˆ~‚‹vy…qƒyˆwyx‡|vzu~uŽƒ~s}„z…wˆx‡€“†t~…{zsŽ‡w~„‚‚yŽŽˆ‰{€‰{˜|šƒŒrpe„ƒ›~‡t{†aryy„uzv‰y}xpx„~Œw…lj|‘ywx”‘_Vhz›¥Š•jobn•ˆ ¡~yZ[†‡ ¬ŠxhVyo¨¢˜Ÿgqo[ž“”¬‚jmaƒ¨¢Šz`auo£žŒŸ]uqrŸ™t{U^‚x¤¦‡ŒYcmš˜}“ghgZžŒ©‡tai~…œ°~UOkp™š‡’__bc£¤ts^Y‰ˆ•žˆƒ\Rss“œ›“ckbl“—¢žeqX^ƒ†Œ¡~…X^ys¢—Žejei––¡¥qq^_|ž¤Ž€bMnx¤„’_dik’š§ow_aƒ»ŸˆObozœ’ƒŽ^ma[Œ•—¡nsl]ƒ~¦¢ƒƒ_]so˜|sŠz†~ˆ‡ƒ€‡}u‡†u‰€~†wˆ…}{„}y˜xŠ~wŠ†ƒƒr…‚ƒ‰r{„q…ƒw‚Œˆ„‚z‚€Šˆs‹xz„u…py‚r‰~r~vˆ{vhy~Ž}‚ƒsƒ‰jŠ{w…zˆ{|vyˆ|ƒ{†ˆw}†y…ƒ~~}{}v}~yƒ€z€„‰†}}†|{ƒowƒw€{zwƒ„v~}x…ˆ€ˆ…††y|†w‚ˆ…‡ƒ~wr„~|€|w~z…}}y‰‡y„………|tyzyq‚}y•y‚‰}}Šx}‰~†v„v‡t‚{ƒƒr|ƒ|Žrpyz{ˆy~…g‚~~{‰{ƒyŒ~}}vsn~oz}y„Šˆ…†…ywŽ‡z‰}}yz†„‡zƒˆ‚ˆ€„|u‚{~€ƒ{ŠŠ~‰ƒvˆs„~Œs{ˆw‚|x‡wu~{ƒ„{„j{{r‚}w|~w|{|‡xw€Š}ƒp‹z€ŠwŒ‚~„|ƒ…z‹~„€‡u…y‚…‚}tŒˆ}€…‰‚s‚v€n€yƒŽ‹{}ƒ‡rƒq~zx{{~xŠr€‚~ƒ€wxwy~z|t}†„‡„‡††z€tux…~‰v‡yˆ‚’†Ž‚}xŽŽ~„‘ƒˆ~|‡r–ž„„\sxw©‘‹—fW[e“¡˜lzX_ƒ££n…YVpjŒžˆ‘kdii“™—’gq]Zy£ž€‚bUxs‘™—hga^›„™žhiZWƒ‹¥¨ƒ|lY~fžŸ“Š_phb§›±¥roc`•ˆš©„ˆaVqt£¤†”oopd‹™¢¬mlaV…‹¥¢zRfƒt´™‹‹a`n`Œ›œ™qidc‚‰—š„‰YZ|x²ž‡“djhf”§¬œ{mWbŠ‰¨”{yS_x{ ¦™Š^Ok^—›škp`u•…¢¡~‚a\‚›¨’^aceŸ£¡¤oq^`”€›ªwuf\o|›«—Uiee¨Ÿ craY‚Ž›¤…ˆ`i‚£ ˆŽ\cjd˜’—¢tbc^ˆšŸ€€Zazl¢’Œ˜bhkc ŸŸurP]…‰²œŠƒ_dl¥£‰jiflŽš™ftfg‘„œ¤m†`X€xž³ŠdflpšŒœ¨wseX‡n™œt‹\_un˜ŠŒ\r]s›’¡q|c`Š…Ÿ¡z{ce}  ˜“b`gk›œš©jt_]‰ž…[_vs¥˜–œhhm`šœ’¯mo_cˆ¤¡v}Q\xwŸ ˆiksc¤˜¤ntZd‹–±˜„‹Pezl£‰‹efeh“•¬xƒ[^~…¡´„€cOo§ž‘|boVŒš¥›nyjf”j •~\Xwi £™‰eh_iž¡¦¢g„^]†y£ž~WdnŸš›dhjZŸ„•¦h|hW‰ˆ¤£…‚_c|`š™Š”]gsh‘–¥›rsU^{„ªš“Uh}o¢¤–§Zjr†…zz‡zzzˆy†xu‹~~v…}„‚xy{€rrƒ|z~‰Š€‚nh~Ž{€{q~’Š‰€|tz„y–€q}z€‹ƒp†ˆƒ‰}††}‘zŒ€‡y…y„€€„†t‡{~‚‡Š€zv‚‰t˜}‡~yqw|„g€ƒ‰{v„‡v|„x}y}‹|l†‡Ž†}z{…‚‰„j‚‚ƒ…}„€“ƒ€x‹~{x~”{›‡€z†y}‚‡y€ut}‚~}jx‹„zŠ„‡‹tl{y†~~…€ƒt}x„y’„yymn‡ƒ}‚|r~€z‡Š‚Šs|w‚}u~€y{ŒszŠ{‘~…zyƒ~€~”…€x}~ƒ{†…xr‚„Š||yq|{}‡z€‡}‡„Ž}|}{ƒ|tŒŽƒˆƒ|z‚z~ƒ‡‹„…t„xyŠŽ€Œ|z„tƒvz”{~…€tƒ…}‚xŠ€…z‰ƒx~q€}ƒrw€z€}}z}{ƒ‰{‡€…ƒ{†€‚‚ƒyŠ}|~„†‡vw‰{|uŠu†y€y{z„q…y€‚‚…zˆzxr„~†€‚||„‚‚…z~qŠ|‚qƒ€~ƒ{…{w‰˜|†}z‚Šv‚„Ž}}‚{~z~x‹u†{ƒyz}ƒxƒ|‚}p}{|“{‡}v……rŽ€„†Œ€ƒ{~‡v~…z„†€z‚mz…yyq‚rz‡€…}}|}t{u}†~…„xƒ†ƒzwn}‡„y‹xŠw„~{r|xˆ‚y†‡~ˆ|y€Š…‰|{Œ„tj|‘–||sv„w‡‚„y|’¢— eefh‚ˆ˜q|_iq}¢–Žˆ`_ks­–˜‘Tgg_Œ‹¡¤{za[„ƒ¡–wigki‹–Trhbž‘¢˜|hh…}¤£ZVyeŸ¢’–]cq_Š‘—§uo\c}ƒ¦x…^ck›’‚]^ld••š¥jrRRƒ†¢Ÿ~`\yg˜š––bdiX}¡£jv[\€ƒš¢˜|eZptŸ™™nZna–•¦ŸbsbF…€§«ƒ‚Ygwu¡—›Y`bi›‘—¤xu[R|Š£¢‰Ž[err—œŽfmmd“¡œmr`[‡y¤•|„OdtkŸ¤šfbv„}‰{ƒxƒ‡„‚|uwŠ…†}o‡s~„‚|}‚}z}|‚‡†{|‹vtyu}}‡z‚‡‹‚Œ…„ƒ‰u”†y€{€wƒ‚{}x†}ˆƒˆ{~|‡…ƒ‰€€z}…v‡z{…y|ƒp„†„Œ{s…u…~vw}‚Šu†~t‡w‚Š~l}ot€u„ƒ|ƒv„{~z„Šz{ƒƒ„€‡z„‡l”||ƒ~‡†u‰m€ˆ}‡z‚„‡‚‹‚~x‚~q~jˆ„y|‡yy}z€~tŠ|€y‚‡~y€{„…{{…}wvx„„}|{€…‚‚x‚„z†rƒ|†}z‰y‡„|r…vv‡y€}ŠŠ‰w€‡v‹nq}q{{…iƒ„zt{‰††‚w†ƒzƒ‚|†}‚ˆxl}{p~vx‡…xu|…ˆx€ˆ|‰|w~€„…yrzjpƒwq‚…o…†„‘uzvy‚x|rvz{{‚xwƒ…‡}„~xyt‰†}~†„€}‡‚{‹…y€tuwu‹€‚‰‡ƒ}“v€|l~{wƒŠvƒŒk~|‰|v€tv~„{uˆi‘|{{ƒ{{ƒq‚„ƒ~~„Š{™†‚€Šp~ˆqqy…„tƒ†|„q†Œib{vš¢[aykœ’˜œjk^aŽŒ¤œz}Wb‹}¦ ……b^ne“”†sk^j–Ž§¡vyQX~~ž‚ˆbVav‹š¡–amej—–£–m€dVŠ†­®†Z_ll¦˜•‰lbqi–Žš¹w€eU‚}ª¡‰‹RYri¤—‘œmk^bŽ£“vmaU‡‡¡ž†`dtg¢¨Œ•cnnh›žs~Uhˆu°}lVys¨¢›‘cbdd‘™ ¦s^X‚¢£‰‡iavx–•—^jgh•‰¦¨fzaM‡€§§|u`Qq§ž’˜gloU˜’š¤tt]`ušŸ„€u„„€‹vy{€„{s‰xƒ|~‡€}€ty‚ƒ‰‚~zdw‡t~|ƒ}…‰z‰w†‚s…}€p…{„yƒsˆv†ƒvxyz„{x‰zsƒ}ƒ‡‰k„qz…ytwƒ…xˆy‹Š…{w†€Žy‰}sœ†zw…}•p„•~ƒƒy}mr~…r€‚†Š‡n–srƒ€†w††t€uƒyx{ˆ|vzvƒwx~x‡uu~kŽx{y†xyyxtyrˆk}~~|}ƒy„vˆzŠ|€‚†z”z~~y‰…z„‹‚Žrˆ‚†{†„…†~‘wˆ€‚ˆ‡y~}‚€pˆzˆ“”omXX‘‡©¥o{RTxž¢€‰O`nxŸ¦œ˜cim_””£«ny[Z{ž¢Šaguk¥—™šahha”„—Ÿos\eu«•‚ƒUcq[¤Ž“Ÿagm]ª–‚uVft¨œ~Œa]viž• ge[_Œ’¥Ÿvw\X‘s²¨‚`WmpŽ¤›‘cnXd‹‡’œl{\WŠw«©uŒ_\xp¤Ž˜coll”Š ¦nxh?†˜§}‹Z[sfœ¢‘kifaw’Ÿrl^Nƒ…£—ƒ[atp¡›”šlcn]Ž‘˜œjpZV‡…Ÿ¡ˆWfpt™˜lrj]–™›ux``€¥¥z…Zasƒšƒ˜kfda‰€“nz[b†w¦œ‚–eXol ¤ž›oy[c–‘¢žipX_–s®š‚†cT{cš“–”^hd_šª›iqbeŽz—œ‡ˆbYin‘›™žqed^¥ž–mhZWŒ{ ›‹T^vs¡œ˜›j`nZˆ•¤utUgw‰“ª†Œ`Q~_ ŒŒ—pfh_†“—˜†u\`ˆ ª‡]TqhšžŠ‹grgo•”¢Ÿ|„S^Œ{¦§…•Val˜›•–gc`a’™¡unWax™¥‚ŽgWwm–˜–›ci^]“Œ¥¦r„ca†€¡¨†‚mox„ƒ|‰~ux|Šv‡‚€‚{“†s|z€…~z~vy|€vƒ}wt|‚~{Šƒ‡ƒƒƒz‰|€ys}ƒx•w„‡|€‚zu‚v‚yxzƒ~{v‰t†i…Šˆ‰{…Ž‡…~zu~z‰‹~—w}u{~‚{~…“r|‰ˆ|€ƒ†w€w‚}}z‹wˆxh‚c}€z‡wzz‡|€ƒv~…z…†‰ƒ€~€v|~—€€|z{v‚xŠvmvk‚Žz€„‡†g€…sƒ~Žˆw{—yƒ€wzsy˜zˆuwtu{h€m‹{†y‰ˆ~’}}ˆ„„ˆ‚{|…”ƒv€}spz|—Ž‹^^…«³‚rh‰d •Šllfx›¤œzp\g‚£ ~†a^pmœ¤˜šotlb˜‘¦’u`Zz–¡‡[lej§ŸšˆchcfŠœž¨jz__Œ§£‘Yp{p——›_m]q¦”t‹o_‚q„]g|u•”¨”hxZb’Š£ w†bW‹x£›u`las™žš–nad|¦—pyZe†…Ž¦sd_nhŸ©‰YkniŒ‹§¢s€a‡¡§wŠ^b‚yœ™—_nZlš“™šmfb‰w›y†eaj{š”–‹Yt\aœ‹£­m~XJx‹š…vqƒ~p{|xŒ…y‡qx€…€”…x|~{‡‰ƒƒyrpy|}{x‚‰sxpsŒŽz†‹…xˆ\‹„‰|‹€}jjyw…z‚€dfƒŠ|}uŠ‹ƒˆ|‡Š…€…yŠx~z…€~v~€‘ƒ~€ˆ‡v„v{Ž{„{oz|†s‹{{€e|ˆˆ}ˆ{€yvŒ{‰i€v’€Ž~‚u†h|~{‚˜|uh|{‰{jŽumŒmˆŒ}„|ˆ‰~’p}Šƒ~z~‚fe|„zx†€_ˆe‡€‚o~tuyŠp|‚|xwa~~{uƒ|p~Ÿ{†€x…zs‰šwcn_dœŠž–g[`T‰‚ž˜‚Sn~{š¥•”dleVš™•yaoU‡Žœ±‚\sqn£”‘›ZlfQŠšªsypZŠ…‡žyYetm¥¨‚¢L_jb‡œ‘etFjŒ„ Ÿˆ‚l˜uŸ“ˆ“udd]«‹°—dvkhŠ¬±‚ˆUa{w—©‘”Oa^q¢œ¡m„x^‘~›–w„VZo~©“š^n`o—•”¡qySWy™€ldc\sž™–|[ff^¨£§rpkX…„§¢ˆabwx¦–•sXkfd„–Ÿt|pƒ~ž£}ƒck`t‡¥“™annz~]o‡‡‡‰x‡‘„p€}ƒpx}“•’|t†€€lw†|—–Šv‹€„v†‚{ws~r„ˆw•o†‹wƒ€z}vs|{zŽn…{ƒ‚z‚gŽ‚ƒ…ˆs‡svz…p„l‘š†~}‚vƒ€‰|Šw{‘y……™ˆ€q€}ˆvy†_‹mw‰„zˆ}’•…x€…vx†„—jzz€ƒ|xw}f}‚}‡‰‰‰ˆtƒ†Š~s‡‘–}€•„‚†|l„{}v•z‹|su‡tˆŽ…ˆ‚{~qi†•‚{uŒ†…‚šj|„vƒ{|ƒ†š„ˆˆ‚}p•r“€{€ƒ‰vŽu‹|ˆy€zzp‰€x}{„~}fqlu‡{z†~ƒ}y‡}†‰|ƒ†ww•€v‚€„ƒq‡|ˆv|‡€x„†yšy€}ƒ…†‰ƒ›Ž„‚„|ŒvˆŽ`|‚nxŽƒ†‚q‘ƒ—twz€„vp~c{…x„u†}vƒ¡y„{uƒ~‚ƒ„p~rt’ƒ|~ŽtŠ‰c…}ƒ†xz~w¥Š‰‡‡€p‘mˆ†ˆ€}†~“~ƒŒŽl~€h…‚Œ€s‡x††Žz…€{ˆvˆo|}‚‡ƒ~wˆ„v‡t}…€~…€}}…‰y†‚yqp}pd¡£‰™m`sd—œŸdo\Z……£›„`a‚r ¡’f^nh’Ÿ•¡nx]d™†¬ zƒ\Vt€Ÿ‹hXkh”š§ms_]ŽŸ£v†UQmu£¥šlgfl‡ŽžšapaZ—¢{}_XuzŸ—eedbž˜’im\Z’ˆ¦¨~yY_v~²¥ˆ–`^ri”””ŸskbcŠ¢©y{Wav£¨ˆddlt‹¤˜¢hs[k‡‰ªšWm‚…¨¥šthdh¥–œhlLeŠŸ©wŒ_ors¡›Œ“njfQœ–¡˜ef``‘ŠŒ›p€kU„…ˆ£ˆ„v„€|‰tw|sˆ‹w~Œz„„‹†w{„ƒzuƒˆŒ‚z|Ž|‹€ys|’ƒy~‡Šv…„ˆ|‰z|urv„xx†„ˆ€xyx„}ˆ€…€…{z~…z~r}†|~€ƒzts„iƒxƒoxoqswp~r€oyb†yry}t”uk„yƒ|ƒ|Šu††~†{„~ˆŽ„zy}†xŒy}‡}‡˜€Œ‡~}Œ}†yzˆˆ}€…ƒ‚†w~‡‚Šsƒ…wrŠvƒ}€x‰{}nmqu‚†€ƒy‚vtwŒƒŽ•xƒ~|}ƒŠ‚„œ|‰‚~}~wy’Š…‘‹– }‹_cŒ‹’­z„j\|z“„l`f`žŒ©’nhdR˜€¨®vrcX|€£››kgje¦¢™xkd`‹‹¡³spaY|§¢ŒUjxk§œœfwbe‹¦¡œ…|SdŽs¬t’S]wd”¯’—t_`cŒ¢£m€Rfkx¥—†—Wgsa—”ŸŠwl^a‰±©x†`c‚|©šVOsk™’œnz[`•«¢r~\X„yž›gbdu™—–šotn^‘‰—§u]cc‰žŸŠYal~¢œdl`Y…•©owYPs{•š’ybcpb–Ÿ˜­diTfŒ‚’„~uŠ‰‰|z„vm{~z|mˆ‡~‚xp~”€{„‚‰…~‚’yˆ~‚€vzy{…€„€…€ƒ‡{vˆ„…ˆ}rƒ†€†‹„‚uyŒpuph†}}…~Ž‡’‹w{„‚~vxŒs€ƒ‚€ƒ†}†‹w|‚‰x~|€Šv„zw„‚u‚z‰‹vƒ~…ˆ~€ž‚…}yzl„•z„{}†Œ{‚ˆ~††{†r|}ˆv€†|„„}{|~„}{~{k‰„~‹v‡z~yz…Ž{‚~€ƒ…q‰‚w‡}€†‚€‚Œy‚y}z{‚w“y‚ƒ€…{zx|„|†‚{ws‘„™b`dm—žš–rqbW…ž«zƒbcz{ž ’˜\lgW”˜™Ÿlic`…ˆ¤—ˆ}Whp|™ Œ˜_bqe“•›¢n]Z{² {|]^xs¡–b\jl”™¡qjT]††¥œ€Ž]aym ŸŒ“jdjsˆ—Ÿ˜rwYe€y®£z„Z]{x¤¡›|cdb¡§˜¥p‰k`‡‚¢žˆubb[qš”„bkod†•¡np`Y›„  †‚XYqq™œŠ‹FpjY¡œ—¨pfeUˆª¤Š‚Yg~{©”Œjfsf››” mf\a‹‰¡¥|WMi ¢„•]Ypo„Ÿ‘™ppT^‹¡±}~T_{v—ž‘p]jhš™™_jvV•†¦y}`bv‚¦”ekjg–ˆ›rw`\ŒŽ›–t„d]yy¥Ÿš_fma‘ «qs^`Š©©yzabrzšš“œgccj˜™˜¢isc^|† ¢‰‚QotvœšŽš]kkh™–Œ£nv[\Œm“¬,ÿCÙû,ÿr@ e¿ÿ-ÿ‚ûã²ÿWÿ +â54–âÿ[ÿ²àÿƒÿ'ÿºf `Äÿ-ÿ†øÛ²ÿVÿ ëŒ;:çÿYÿ´×ýŒÿ(ÿÀa_½ÿ+ÿˆÿÚ®ÿ\ÿå”29‘ç ÿRÿ·ßùÿ1ÿ¾b hÁÿ0ÿ€þà³ÿOÿ à•44”áÿ^ÿ°Üÿ…ÿ3ÿ¹f _Éÿ.ÿˆùÜ´ÿVÿ +ê‰98ìÿ[ÿ·Öþ„ÿ'ÿÀYhÀÿ,ÿŒÿߪÿbÿÝI²…¬]zv|‹s|}vŠ‡ƒ…{ƒx‰l„…ƒzƒvsnx‚‹„|wx„“€„qzx‚g{ƒ€‚†t~ƒl„r…‡€…€„yŽ€†|}ƒ‡vxwoŒ}ˆ}€|~~|…€z{x}‡€†…~•‡ˆ|y‰„ƒ‹iyƒ}zƒ{v‹|m…~}€‹yƒƒzŽƒ}}~€†ˆ’|}†€€n‡t„y…„€‚|†~~wwy|€~y‡‡€„‹rƒ‚~z~€„‚~„vƒy}‰vƒq||{‚|xƒ…ƒ‡‚w„†||‰~—ƒˆˆ…€w†wgv€‰~r‚rlt€{„v„{uœ{€|z€~{x—mŠ„Œ}{ˆ|vˆ€~…~|‚||€y|‡ux‰yvsv€rzƒt…x€~‚‚|~ˆ‡ˆx|„m€w}wŽ|~‚|†„v‹gƒ‡€ƒ…„z|€}}ƒŠ€xˆp„‹†\Yq]™¢“bq]o”ˆ¦›ljeR‰Š˜µƒ…^_mpžŸ‘dnqe˜”š­ercX‰„ž§|~Udsrª” Žbbi[Žžš¥soeb{£™}ŠRXh¯§…`ZuZ¡””gmgaˆ€ ©…†ZWzo¢®ˆ’gflf–—¡˜usYj‰‰¥¢|€V`ts¦¥‡‘^ehk™›—˜poXcˆŽÅ`§$“ÿoÈÿ’ÿ[ÿ êœ;-‹ÛÿQÿ¨ãþŒÿ5ÿÁk V½û$ÿýÕÀÿ[ÿ ì—F3†àÿSÿ¯Ýøÿ2ÿÌb Z¶ÿ ÿ€ÿÕµÿ`ÿæ™83‰à +ÿOÿ°æö‚ÿ3ÿÆh _·ÿ-ÿ{üà¸ÿYÿç“:-‘áÿYÿ­áþŠÿ'ÿ½g^Áÿ*ÿ†þÖ¯ÿWÿ íŠ5=ê +ÿUÿ»Øû‰ÿ*ý¾_m¼ÿ4ÿ‰ÿ߬ÿQÿޑ-7žæÿRÿÄÎÏ©sˆZ_gª¤•pja_†¤£vrYU~oŸ•Š¤md__…Ÿ§‘jtu^Žs”•zYVruŽ–jaifž•‘hbV\|Ÿ©†Šdi}ržŸ•Œn\cd—•ž£jŒ{ƒ‚€‚Š‚†Œz†|}€ƒwˆŽƒŠ€€‰}o“|ywut‹…{tˆr‰†€Œy~ˆ‰Œ‚…yŒy„™Œ~Š}†ƒ|z„‚{zu€k‹†qzux|„†€Šs{s†xy}~‚Šxv€‡m}…sv‚‡~„‰‡us{y‚ˆx‚‡||€}s||~|‚€†t†{tƒ††ˆtŠ‡wŒyƒt†|Š~}y€|Š…‚‹„†uƒ~ykƒnyƒ~}|€Š‚’~w€€…vr~p‚y…|‹ƒŠ~…~x‚€p‚ˆƒstz„•voyjz†tr‚nz~xˆ‹{ˆ€|v˜‘‚sY[‚˜ž€ŽTiojž–¡mldWŽŽŸžˆtif†|­§—‹Q[qpŸ–Ÿ¤sa_^‘¡{ui\}n©ƒ‹`^ko–­‡pm^h‘‰¯©syUU|}¥Š‰eY~s™˜–˜bf[\ˆ“– r‡Nc}w¬¦‚]\qo˜ŽŸal_`–— ¯~i[„ˆ¢¦ŒŽfekj ’‘bhf[’—™¥{y[R‚x¨ ’{]MhvœÂ¦oÀwGö#ÿªÿÅ×ÿ|ÿ*ÿ¶ZmÄÿ1ÿ…ýå¯ÿOÿݐ-;”å +ÿ`ÿ´ßÿ}ÿ*ÿ´\ aÄÿ2ÿõß²ÿMÿä…5?”í ÿaÿ¹Ðÿ~ÿ#ý¼UiÄÿ0ÿûá©ÿUÿڊ*@–ìÿ\ÿÂØÿwÿ(ý¶YpÇÿ;ÿõê«ÿEÿڃ,?£í ÿiÿ½Ïÿyÿÿ¬Q!mÑÿ7ÿ–óäŸÿIÿÜ|*L ÷ÿgÿÈÊÿpÿô°KzÀÿL¾a€J©’k†t~}{|~|—w‡‹{y…{†‡€ƒ†wŒ„{ˆ}~‚y}…ƒƒy€w…†}zs}|€€}„€…‹qyƒ}z„u{ˆzƒ}r|€ypeŒ¦œmg^o¢‘z~Tgwy™ —S`nj•– ˜urSf‚{ª¦t{cTzt—ž”‰[_orœ‰˜žliee‰š k‚aU†~—£‡€\]coœ ›šo`fR•„Ÿ¬ƒˆg]ƒt«¤ˆ‹Y]w`˜–…Ÿ]qZg–”¥¤uwe`zu¡š’R^v_«›“”bba[‡Ÿš«l‹Ve€t§–ˆVlbj˜šœ[kbk€“£ycf~d¡—‚’iZig““wq_hŽwŸ£udU†s¡ ‰’Zjdxž¨¡œviajƒ”–¡n}^`‡ƒ™¥…Œ``zkŸ‘•œc{u‹‰Š„|~†xŽs‹€…ƒuy~}{‘|y|yz|Œ]w~u…vuˆˆtytq†}{‹{Žmm}s‚€}‚ˆŒŒ…–{vŒ{‚€}†x}‡…‡Ž†„Žq{„†wx~zˆ…zv}…}~{x†‡|‡z‚y‡z…‰ƒ{|}xv‚ƒ}€sˆƒ~ƒ…ƒƒ†~iy‚}Š~‚„v‹txu{„~}…}€z}‡}}||s†|v|yƒty|n~Zэºý +å.¶êÿ]ÿ·Ùÿ}ÿ%ÿµ^ +eÈÿ2ÿõ߯ÿMÿæ„3>–ï ÿ^ÿºÑÿ€ÿ"þ¼YmÄÿ/ÿþà¨ÿUÿۋ)@˜íÿ]ÿ¿×ÿrÿ'þ´ZnÅÿ:ÿõé­ÿFÿڇ-=ì ÿfÿ¸Ïÿyÿÿ¯SnÏÿ5ÿ›óä¥ÿJÿÜ}'KöÿfÿÊÌÿpÿõ°MzÊÿ?ÿ–òñžÿEÿÎ| H¬ñÿpÿÅÌÿkÿù¤Y(hI•ˆ\Š‹„‹‡z{‰Œ{zƒ}ˆw†q†s„‚”q–ˆ~rtŠt‰‹‹s‹t‚ˆx€vz€~qux………jgt‰´œŽ•\kng•˜ˆžehhT‚‹¤¬h{[csª…[[rh“–žwojnˆ¤¡|€^arv’œŠ—carm‘˜——kmcl†‹©œm‡__Š•®•hWvn©”œ‘un_j¥¨n†VSr£—ƒsqhhš—¡šimUW}ƒ—•lhZYug—¡Œ”\aelž ¢šdkYc…’“®txci€Ÿ]sjl”£™p^di…™§©‡wkV†}¦œƒ…_btj©“–˜loef{‡ š}vU]ˆf«‹‹„^Mtm™˜”ƒleb`~ƒŽ›h„Bd„}«™„€t…}Œ…„|ŠŒ“{z†€˜€q|o†……Ž„u‡€‰Œ„x‰u‹‡‡ƒ„…†p††ƒzz„|ƒ{€‚~z’}Šo‹wƒwy‡~€su‹x~t€„…q…kƒ‰}}v‰‰€š}ƒ‚u…}vt€y‡wuyz’|vˆŒxˆ~…“|…w‡~zŒw€ey|ƒƒ{q•Š‡€|{‰††~†yƒ‚…€zsn{ƒ‚Šx~‹ƒƒ~†€…{€…~|‡xv‰tl|€‡†{{p}|x‚vK_ÿbËÿòÔ7/ŒßÿSÿ¤àýŽÿ*ÿÁiX½ÿ'ÿÿÒ´ÿ^ÿ ì˜B7‡åÿNÿ´Þöÿ0ÿÅf +`´ÿ+ÿ€ÿÛ³ÿ]ÿ æœ31‘ßÿPÿ±âÿ†ÿ3ÿ»i _½ÿ-ÿƒúÛ»ÿTÿé<4‘åÿYÿ­×ÿˆÿ+ÿ¿`cÀÿ'ÿþܯÿUÿå3<”ëÿVÿ¸Ûúÿ.ÿÁ_ kÂÿ3ÿƒùè¯ÿQÿ܍.:œç ÿeÿ¸âÿwÿGòÁ¼yymGc‹Œ¡¡|xlM€j˜£ƒ•][lj‘“˜›vh`eœ‹ªž~n[w„¥£ŸƒWhlk¡™¤¢yka]‹‹˜¦€‹]\ry¤—’’^mph§Œš m}\nƒ‹¢¥Š‚YUxn¦ž’“fat_§›–¨ukaW„y°›{~Oatp•ªrcZkc•¦re`d’ «rŒZWxp§—Ž“gaip’Ž¢¢ftbS”‡®{ndHy}’«”oc_t ˆ™œrq]\ŠŽ¬™y‰_]kª¬•˜`\ca•¤kv_^‰›¤|„a]~x¡˜£™Ydnd¢”—¦mor[‡}¡“„]^jm¤‘‹W__h“’¦jmaZ‡ƒ˜™ƒ†a^vr ¤Žm}‚r‚‚€t…v…|~v‹€x€wj|y†ƒ‚‚zj„‚œ{‚†€…k}~…’~‚ƒ…|•‚‡‡…ˆ†y|ŠŒ‚€s„Šy†z„zŠ…}€ŠŒ„w~{vx‚Œs…xx‚‚‡‹…Š‚‘ƒ‚u…ot{{htƒy…‚uhw‡{~~y…‡‹Œ‚wy‚}r‹wŒ‡xƒ~ƒn€u~Žz†~~€€z……sŽw}}ƒs††‚~{€†w“t{z~†}ˆr€‡}€w{Žƒ|†y„ˆ„xw€ˆni†…x„†~t††t‚•„…yŠ†sP€f!ëÿÄfÿÊ©[ i¿ÿ5ÿ‹øâ±ÿNÿ +â‹52™ë +ÿ]ÿ³Öÿ„ÿ)ÿ·`gÃÿ*ÿ’ùÝ°ÿSÿçŠ3=ðÿ[ÿ¸Ôýÿ)ýºZpÁÿ-ÿ‹üçªÿQÿݓ(?–æÿ^ÿ¹Úÿyÿ+ÿ²^ iÌÿ6ÿ‹òæ¯ÿFÿވ2@˜ì ÿhÿ»Ïÿ|ÿ ÿ·M hÊÿ3ÿ•ùà£ÿOÿم(Hžñÿbÿ¿Õþoÿ#øµRvÈÿBÿ”ñí¥ÿEÿ ց H†“¦…udbsj{uyyur‚‚‚|}Šzr|s‰y}vypu‚ƒ‡‚‚ƒ~vƒvg|{‚z~~r{szŠ{‡x“w‰…Šz~ˆ}‚‹ˆ‡ƒ{{u„}z‰w„~ˆ‚…~„€ƒƒ€€€z‚||…†€‰ytƒz|‚Šxzx‡€†z‰€y€ƒ‚~~z„ƒ‚yƒ{‚„ˆyz‰}{{Œ‚xywf~ƒ|q€y‡~w}„~ŠŠ‡„ht~€v}ƒ}‡„ƒ~€y„~~ƒn€„€…~‚†}u‚}}…xy|†‡y„u‡y…z‚‚z€……€‚y{{s’‚‚z…}…|†uy{‚}‚~|v^‹ªžztaN†ž´w~b]€u¦“‰•Pema“ž™¦y[Wc{Œž§‹ai}€¨¡‘š^}jo“•Ž£sxVlƒ‹¦ª‘‡[[dt‘¥Žih_dœŠ¥nw^a}›©ƒƒn[t©—–Sbo^£™Œ—eslc˜¥°†‚ZXpo«Ž“^heaš‘ž hjdV™|£}]]gq¤¢•\tlh¥Žœ¡wljW‡‹š¡}‚Zj}f£ ’™l_n_ššž›yz_a…} ¦~ˆ`^yqœ¢|Ti^kšž©{sbk‘}¨§{†bVxr¡¡Ž‘koei‹ž¦›j|o}”qz€y‹€nŠgo=ÿbÒÿöc?uÊÿ=ÿ’ñî¥ÿDÿՂ)?¦ïÿgÿ¾ÒÿuÿþªV pÐÿ:ÿ˜ðå¨ÿEÿÞ|-HžøÿhÿÂÇÿuÿ÷±M +sËÿ9ÿ›÷éÿIÿւ"G¢óÿeÿÊÍÿmÿ!ù©PyÕÿCÿ–íñ¢ÿ:ÿÓx$G«öÿsÿÅÄÿoÿù¥K)xÙÿ?ÿ¥ìí˜ÿ@ÿÓsW«þ!ÿpÿÓÂÿdÿí¤B$‡ÖÿNÿ£èù˜ÿ4ÿÆ©¸como‰°¢‹oHqa˜•£`oTq‘™¨¬u€i^’xœ§ƒ‹dhqtžšš]p\_•‡“™ixeXƒ‚¬†Š\cpr©Ÿ—šqebWŽŠ‘¯tkWYp…¬¨—‡XYk¦—“–acgg–™³|xa[Š}˜{~[cp€£¤—nphxŽ•Ÿ’u„[[†q±ž~‡dZnj™«“fjfk—’™›_~Za”}¥¯‰Ž_Zgv›¤ž•^eaXž•Ÿmxa^‚…š¤‡Ž]_kcŸ•cqa`œž¤ht]W}¡¥†…a]on¦–¢knqaš†›¤xwae~ˆ­‚„ptw—u„oo{{ˆ‚–|‡Š€x‚‚v‰p|€}}‹‚xp…‚ƒ}u„Œw†Œ‡†~u}€s††t„{}‚„n|vn{’~t…€‡Žrxs„‚Œz}ƒ‰uƒ~…€ƒ{xz‰u~~sy…w€ƒ‚~zˆ‚†w‚zŒvŒrz|…k…yz€u~~‡‰|zƒ{z‚q†€|…€‚t€{’€n€ˆ„€€…|‰„‚~€}ƒ~u„y‡‚}}p‹†‚zˆ|ƒ~‡p~ƒˆs‡sŠsr‡w|qƒu„vu€wtt€u~q…q|uvwu€€s„}ru~x†zusƒj}ŽšŽ\dnl›Œ­mt_bŠ˜¢«‰uUO‰ixá3ÿ®wÿ­N&EœöÿdÿÀÎÿwÿ!ù´P wÈÿ4ÿ”øê¤ÿPÿֈ%EžîÿfÿÀÖÿoÿ$ý®VqÐÿ9ÿŒïí¨ÿBÿ؂+C¡í ÿnÿ¿Íÿuÿý­N!mÓÿ;ÿšðè ÿIÿÚ~-P¥ôÿdÿÓÈÿqÿõ´I zËÿBÿ—óïÿDÿÎ| F±òÿoÿÈËÿkÿ÷¤P,|×ÿDÿ åï˜ÿ<ÿÔq$U­ÿÿuÿÐÅÿbÿ8Ú°¯c—{z{~vr‚rr„}dtˆ‹v~zŽ„zt~†‚}y‘ˆ~y‚†|g‹u„†Šƒ…‘€„ƒ†Š†…v‹„yv‡yƒyv‹|Œ„}†‡uty„u…{l…{‚x|v†wˆ}€‚yv{‚z…y€„“{~tyx…|z†yzzpy€Š}ƒƒŠ†€{ƒ„}}†|}ƒ‹}y{zrx}~Œ~‰‡„ˆ}†ˆqn„Št‹qt|Š‹‹}y‚Š†s~u‚m€x‚z‚‰wz‰‚‡z}‚vw†}€ˆ}‚Ž{jvy¬žx`hqp…‡cddd–Ÿž”qvcbŒ£©{}UZto«’Œ“Z_md˜–“¤wzgW›ƒœ¤rxeZr€–ªmalvš‘žœhxV^Žy ¬vŠ[]w¤Ž–|^jhj¢‹•™cbUjŽ‰©¥‡_f‚w¨Ÿ†”Zgj_¬›š¦nj]^€°˜‚Z]{w¤†ŽWhml—£’•rbeY’ˆ²¡}aUq«‹‡bai^›¢šoxX_ŠŒ¥’x{Vj€w›¤”c^lpœ™¨˜mkV_Ž‚¤žw‡_R€v›™Š}peik–”¨•e‡Z`–‚¤³z†}”~ƒw}}}ˆ‰wŠl€z€„qxƒjp€~x{‰{|†‰x|rƒ…r‰s‚xšXWP½ ÿ‰žÿÇxTmÎÿ9ÿ’óå«ÿFÿ߀/Dœóÿfÿ½Îÿyÿú´O qÉÿ3ÿ—øä¡ÿOÿփ)GðÿbÿÆÓÿrÿ$ù³UtËÿ=ÿðï¥ÿDÿր(A§ðÿlÿÁÎÿtÿþ©Q$pÕÿ;ÿœïçžÿCÿÚw)M ùÿkÿÌÆÿlÿò®G‚ÑÿBÿðó–ÿCÿÎ|K´ôÿpÿËËÿeÿö¡M*~×ÿIÿ¢èïšÿ8ÿÒm!O¯ÿÿwÿÏ»ÿjÿ êB-ˆÚÿHÿªëò‹ÿ8ÿÉr +Y³ÿ+ÿwþÛ»ÿ`ÿì“@-âÿWÿ¬àü‘ÿ'ÿÀf_¿ÿ'ÿ‰ÿÖ°ÿ[ÿé29ŽéÿQÿ¼Ùýƒÿ.ÿ»_ k¿ÿ6ÿˆüã±ÿJÿ ߌ/5Ÿìÿbÿ¶Òÿ|ÿÿ±U mÌÿ1ÿ˜óä¨ÿKÿ݀(Jš÷ÿfÿÄÎÿrÿ ô±LyËÿAÿ—òñŸÿCÿÏ}!F­òÿsÿÇÍÿkÿú¡L*zÜÿCÿ¥èî˜ÿ=ÿÓm UªÿÿuÿÕ¿ÿgÿë¤;)ˆ×ÿNÿ§êùÿ7ÿÂm U»û'ÿ}üÕ¼ÿZÿ î‘>7‰æÿTÿ²Ûù‰ÿ*ÿÆ^d»ÿ+ÿ‡ÿá¯ÿZÿߒ06™äÿ\ÿºÛÿ|ÿ*ÿ²`hÊÿ6ÿŽòã®ÿHÿâ.CœöÿfÿÀËÿyÿ÷³Q vÌÿ8ÿ™÷êœÿHÿрJ§òÿjÿÈÎÿiÿù¥N!wØaO}:f‹}Ÿ¬}{YWzv¬¥—^bjj”žjl^[ƒ…Ÿp€]k‡ƒš£ˆa^is™–Ž—pyMdŒ›¤€eQwp›žˆŽYghj”š¤¡dmcNy˜™z__v{™œŒ‘Tfkr¤Žœkk`Oƒˆ›«x}RYy£›\_poœ”˜šjvXjwŒ£¥„}Ua~fª‘ˆ‰`^lf—¨‘¢preb‹„¤¡o‚MWx¤¥‘gPnmš ¦œjqXm•‡› pŠTe{jž«‹‹oaoq‘œ gyZz††yˆ‹|t||vy€{yx|{„‡„}€x}†‚|ƒwx{‚‡x•{€ˆy†€„„‚†wy†{}xˆƒ†‡~~xuz{ƒs‡{}‡y„‰}~~q‡ƒ}yy~‰…s‚€{y|xywŠ{‰‚y‚•u‡ˆ…|†q…Š‚ˆ‚}‚}ƒuyzy‚w{~y}‚{‚tu‹v€‹€…„‰z„€„†ƒ…€„†€†…ˆzŠt}‚y‡†‚ƒ‡ˆz|‰w‡xn†}…‰|xu{~Œytƒ‚‚—o–†yvŒ‚mw„„}syrln‚„‡…y~‚~†šƒ…~‹€„ˆav†Š™wngk¢ |¯k}pV|ƒ¤¬o€LZ‰ƒž©ƒ_Kvw–™fkb}y‹ ¤~‡YY‹¥x¤]mzï Û ¼ÿLÿkÿ½Øÿyÿ+ÿ¼W kÂÿ0ÿˆøè¨ÿUÿݏ-<˜å ÿbÿ¹Üÿxÿ(ÿ¹_gÌÿ8ÿ‰ôã¯ÿMÿ +ä„2C˜ï ÿdÿ¼Óÿ‚ÿý¸W iÈÿ3ÿðçœÿPÿ݈O›ïÿ\ÿÆÏÿzÿ%û±WsÅÿ?ÿ‘óì¢ÿHÿÛ|(=§ðÿdÿ¸Ñÿtÿþ«V#tÑÿ;ÿ™îæžÿFÿÙy(KŸùÿhÿÊÆÿrÿñ¬I{ÎcTŠZsy{rw„‚ƒ{……}Œ{š}€}z„ˆ‚qŽ„šw„„}y‡|q™mrŠs“„†ˆ•’‘†’w†|sp|ny€~ztŠtww‡v}m†{yww{Œ~‡jlŠ€…Žv‚‡•x~}h{~~~r“’™q~ˆˆ„„|‘aˆ„…~€ƒ’qpŠu€t|€„we„ˆ†ƒ„t„„—}~x{†‚}~krv…„{‡|v¢|}toƒŠuŠe~‹…~Œ||}‰‡xŠ‚‚nn|w~w…svq€’Œ‰‹†s‚‰ˆ˜y‚†€|{|xl††€„q‰t‹ˆf{wƒ‘{{‰~u‹‹rv|rˆtr]fŠ‰{ƒz‰‚|m}}ˆ}xŒz€r…‰w„|€{v}…py‡{†‡}z‰v|†w}{sƒ‘…€w|{Šs‡ˆ{~~…‚‘‚nz…ut}}‚ƒ|…ˆq‚œmx|s‡†‰wz‡ŽŽ†{‚{‰†r~m_Ž‚{vyz…†ndtŠxƒ…|t}gz}€}„…yy—†y‚rŠ{p|q„…}‚ƒ‡Žz“{‚{vˆt|Š‚u¡˜‡t_[ƒ„«–™VX~u”¥…Wc^m…Ÿ¦ti[V‡p£‰y—hYrkŸ”togb]~Šƒ¦sdHbˆ‚¢¡x‡^Q\j›“‘u,J‘ÿ]Ðÿ‘ÿbÿý˜D-…×ÿJÿ§ãôœÿ4ÿÐmX®ÿ"ÿzÿлÿkÿó¢ÿÉqY®ý$ÿtÿÙÂÿ`ÿï£A(ˆ×ÿNÿ¢æûÿ7ÿÅs Q¹ú"ÿ|ÿÐÁÿ_ÿ î—=4„åÿNÿªßöŽÿ2ÿÍe _µÿ#ÿ~ÿÚµÿdÿ ç32‹ÞÿPÿ«êôƒÿ6ÿÀn a¼ÿ-ÿ}þÙ¹ÿUÿé’?.‘åÿ\ÿ°Üÿÿ'ÿ¿b_Àÿ)ÿŠþÚ®ÿXÿæŽ1>–è ÿRÿ¾Ùüÿ*ü»\ iÆÿ9ÿˆûå¯ÿKÿ܈05¢ëÿcÿ¸Ôÿ{ÿþ±] mÇÿ3ÿ˜ôã¢ÿOÿá}*F™÷ÿfÿÆÌÿyÿ ÷°M{Ìÿ@ÿ•öîÿCÿсHªñÿpÿÅÌÿkÿýžJ&yÛÿDÿ¦åðÿ9ÿÑp$WªÿÿvÿѼÿdÿë¥<)ŠØÿLÿ©èùÿ:ÿÁm X¹ú'ÿ€üÖ¿ÿXÿ í”@7‰èÿVÿ®ØüŠÿ,ÿÅ]eºÿ)ÿ‰ÿÝ­ÿ\ÿá’/8™æÿWÿºÛÿyÿ)ÿµbjÉÿ7ÿôã®ÿFÿ߁0Bœôÿhÿ¿Ìÿ{ÿù³L tËÿ6ÿœõêÿHÿЁM¨ôÿmÿÉÎÿhÿ÷£M!}ÚÿHÿžæóžÿ8ÿÐo"Q¯üÿzÿϼÿhÿ î¡ÿ’ôì£ÿIÿՄ&A§îÿhÿÀÑÿuÿþ¬Y pÑÿ<ÿ™îè£ÿDÿày)EŸùÿkÿÆÇÿyÿõ«L zÏÿ=ÿœ÷é–ÿDÿÕK§õÿjÿËÌÿiÿ÷¥N!|ÓÿGÿšèóÿ8ÿÏt"Q®øÿxÿÉÁÿkÿô¡B-{ÜÿDÿ«çñ’ÿ<ÿÍq[®ÿ)ÿwÿÔÀÿ_ÿéž?(‹ÛÿSÿ¥ãþŽÿ1ÿÁlV½ü#ÿƒÿÔ¼ÿ\ÿë“?7ˆè ÿRÿ´Ýø‡ÿ/ÿÅ^ c¸ÿ/ÿ„þã°ÿYÿޑ05šä ÿ\ÿ¶Þÿ}ÿ&ÿ³] dËÿ5ÿôà®ÿMÿâ€/D™òÿaÿÁÏÿ}ÿ÷¶N vÇÿ8ÿ–úéžÿFÿӂ"D©ïÿhÿÆÐÿlÿü¥Q!wÖÿCÿèî ÿ:ÿÔt%OªþÿtÿÌ¿ÿkÿï¥?(…×ÿDÿ¨êöŽÿ;ÿÆsV¶û'ÿwþÕÁÿZÿï—?.‰åÿUÿ­Üûÿ*ÿÄa`ºÿ$ÿˆÿÚ¯ÿ[ÿå–09”æÿTÿ¹Üÿ{ÿ,ÿ·a iÅÿ6ÿŠòæ¯ÿJÿá…1@œð ÿfÿ¼Íÿ~ÿú´P +oÍÿ6ÿ—÷æÿJÿՁ!J¤óÿgÿÊÌÿlÿ÷¢N zÕÿIÿžçóÿ6ÿÐu!O®þÿyÿ˺ÿiÿð ?.†ÜÿEÿªßï¼h·uQzv£˜–ŽckjSŽ’ž¢wuS[Š}§ Œˆcesw¥¦—“_l{pŽdlYfžr›£yŒKXwq‚¥ˆ˜efZmƒ™ž¦lqU^‹‡¨¦wƒQYnt–™ŽžTp\e›¤¥hwhP{•¦||[Urk “”]bhbž–®jqf_ƒš †‡[bxp¢Ÿ‘“[gfg—žª…l[^{‹ª „š^avt¨Ÿ‰•i‰c‰u‰yƒŽx‡lˆj‚€x‰ƒšŠŠ€—‘ƒƒyƒ{rƒ™†yzp{}v‡vs|y€„|ˆˆ‰y{y{z}uqy’}z|…‹|ƒƒxzy„zŠ…rƒ‚}‚}{|wqpƒ…w{ƒy†…zv‹xˆ…„‰‹{eyy{w„‘ˆpŽ~†}vwy{x…rqˆƒ’„ƒx|—y‰{wy€Šgq‚Šƒwys‚‰Œ}~z‚€t†Œ„€„‚z~w|Œ{‚|„€|‹‚††x}†oˆˆw‡…k‘uƒ—tƒx…€ƒƒ|’tz€{~€“‹x‚~yzƒ~o€s„m|ŽŽ}y…uko–•zebwŒ­’{ƒYjxf¡Š“•gdff ŸusYYr|¤‘…€ebv_•˜—šgi\VŠ‘¢ž€…[gŒw¢žŠ‘[hn‚”ž™—r_pT£œ¨p|\d–†¯¬‚ŸaXpu ¼–¬|Y poÿ=åíŽÿiÿý«Q pÔÿ;ÿ›ìé¥ÿBÿÙ|*K¡ùÿjÿÁÈÿoÿõ°IyÎÿ9ÿ›óìŸÿLÿЁ#K£ôÿjÿÇÑÿiÿ÷­QyÑÿAÿ”ìó¢ÿ?ÿÒy'H«óÿsÿÅÉÿpÿ÷¦K'tÙÿ?ÿŸíê—ÿBÿØt%T©úÿmÿÓÄÿnÿí¦D#ÑÿJÿŸïó”ÿ=ÿÉrN·ö!ÿrÿÎÁÿdÿî™H0ÚÿLÿ©áô˜ÿ3ÿÊj V°ÿ%ÿ{ÿÒ·ÿdÿ +é;0ÜÿGÿ°ãûŠÿ7ÿÃl _¶ÿ-ÿüÜ»ÿVÿ둘ø +îhaDœ‡w’…}†ƒ„‚yƒˆ{™|~‡„‡s‡|†}‹x†w€z{„zr}†p˜{€…ƒ‹w}}g~y‡y~wz”{yx{}‚x}iƒtˆ~~…z„|}†yzˆu‰„†‘x}ˆnvn€ƒ|z|yt{ƒŠ{‹‚Žb|zn…‡‚y…v”†sqm…¢Ÿrn\g‚€§¬ufQ‚j¦¤ƒƒfgnp’{›ay\gŠ†¦ktYXƒy  •„_fbr§‰˜RskUŒ‘¢¡~`ZZ€™¡|˜Z[on¡¡tgp\€˜˜™yubf‹Š•ž}‡Zb~m©—…•abdiš«¡u|LV|Ÿ®€Œ[P~o£ ž—op[`–”§žt[\ƒm¢œ‚ƒXSuo¥™Ÿ—jjgWƒž¨zz[P…o£žˆjScd¨œœŠPfe[•€–¤ib„…¹Žˆhul‚››”žrxs\Ÿ‰ž£u~]sƒs¢…‡Wbcy¦•[`ca•“–¨gŒw_yt—’‘e`o`ž‘‘Œccd\‰†¤ŸzmbXˆy¡š„‰]kwx£ž£miiV–§›v~`_n¥½‡“Wlmk£·uhac‘–Ÿœr–[o}r¥¥‘—d_u[œ™“šaubg“¢ž t{\W„š––€^dgp˜£Ž£bqbaŒ ›€scSp‚–Йˆß®ÒÿLÿhÿÃÒÿuÿ!ý°[oÍÿ;ÿ”óå¬ÿCÿÞ~.@žõÿiÿ¾Îÿ|ÿý±T sÍÿ8ÿ™÷äŸÿLÿۃ'IœôÿdÿÅÑÿsÿ"÷³RvÉÿ<ÿ‘óð£ÿFÿӃ%A©ïÿkÿÁÎÿpÿû©W"rÕÿ=ÿ™íè¤ÿAÿÚu)K£ùÿmÿÈÅÿsÿò­F"}Ïÿ@ÿóì•ÿDÿÎ|M¬õ!ÿmÿÍÈÿfÿöJ&€ÖÿEÿ¥¢RŸ„x{b„‡~…zzz|wkrŠˆ‚pxxwxtu„z}…Œrv{m‡‰€h|{„x‡ƒx…~‹†‰Ž}x†r…|„t‹ƒx…†Žp‹…Œ|…ƒ}y‚x{|z{ƒ{€„‚w|Š€{„‚„tˆ„‡x…u‡‡uzŠƒ{}nxx€~z–~Œw‹t‡„wrozƒ}ryl‹j~€}zy†ew}w‹ƒˆ}‰‰†ƒuƒ…x€„z—|y‡Œ{k‹x|€}|o~y‚‚|y}‰{€z~~‰}Š…€}†‡‰Š|pˆy|~xƒv…€‰Œ}}w{€|„ˆ{†x„Šzx{f{‚€w~uƒ‚…si|r‡z††~{z€†y{u~ˆ}}y‚~}›q€|‚ˆ†ˆoqƒƒxmw|€”o}yxƒ{„„ƒ‚Œ•…z‰u|r…€}‚€ƒnzwv‰Ž„[Swn©¬‘c\ng’Ÿš•jf]^y£šcxSXutžž˜Z_ep¡˜£œqehG‰•¨{y[Wu„•‘ŽRWl_Ž|›_vcZ“°ŒkJfyz°›‹ˆ\l~l‘µrwbs„ˆ²žyxU^‚|­r”jc{|¤š‘sn`^„‰¥§t|T[vz¡©†Œa\vg ••`rRr™Ž®‘†O: ÿŒªÿڎa a·ÿ(ÿ€ÿÛ¸ÿXÿç31ßÿUÿ­ãþ‰ÿ6ÿ¼j\»ý+ÿü׿ÿTÿ é•?4‹åÿWÿ©Ûýÿ-ÿÅbY»ÿ#ÿ†ÿØ·ÿ^ÿæ”:8Šå ÿPÿ°âõ„ÿ3ÿÅc f¸ÿ)ÿ}þâ²ÿ]ÿ â”76•ßÿXÿ¯åþ…ÿ*ÿ¼j\Åÿ-ÿ÷Ü´ÿUÿ é‹:2‘èÿYÿ·×üŠÿ$ý¿[fÀÿ1ÿŠÿÞ´ÿAÿZɾŠDkeˆ˜œœnq[b© v^cu¡ž„‘[Ytm——Ÿptcc‹±›u„U_‚{¤¥Ž{`^jh”£—m[W\‹€§°}ˆgO‹r¤ŸŽ–d_cu• ›—g‹j~{„j}eˆ}€€‡‡†‹ƒ„€}Œ…xks„z}xq}Šjr…~vˆwŒu{ˆ‡‚x•„„“|†z~‡}yƒ…xx„s‚•}–ˆ€ƒ…yo‚‰{‚€w~†‚v…€~‚z~{„~‰tƒ…yx‡|†Œl{x„~†m†›y„€‚r‘w€„zŒ„„|…t}~Ž‹t„‹Œp†y€•††Œhws}uxq~kvdvƒ|y†v|ˆ‰sŒty†„sˆ‡~rƒw~‘‚zt‹‡x€v{ƒ}†y‡s‚†ˆp…‚€lƒ„‡w€w‡…€{ˆ™bwZ—€—šx€Uiu{­…ŠZ\t]–›‰’`tgX”‡†™lu[^yŠ­‹^\jh™Œ”ecXk”¢œ\q{v© whkƒ†¤­™œfq_pš•­¢|}[T†u¤§‰…jVsf‘•ccja°cs\d†„¦Ÿˆ~e_gs ¢¡xVe_‹˜¤lqaV›…¥¨…ˆX]s€«¤“•bemb¥§ziT[~‰–ŸvJf”@×{vÿ@ììºÿ‹ÿ/ÿ»j \´ÿ)ÿþ×¼ÿYÿîŽ=.ŠåÿQÿ¨Üý‘ÿ.ÿÆlW¹ÿ!ÿ‚ÿÔ·ÿbÿë—>3ˆãÿKÿ²ãô‰ÿ4ÿÊf`³ÿ'ÿzÿÙ·ÿ_ÿæ™:+ŒÚÿMÿ«åýˆÿ2ÿ¿mZºý)ÿ„üÙ·ÿWÿî‘=1ŒçÿUÿ©ÜüŽÿ+ÿÃe]»ÿ$ÿ‰ÿ×°ÿ[ÿè•58æ ÿQÿ¶ßù„ÿ1ÿÀd g¼ÿ-ÿ€óØ«Z¥`|ut{{q‰r}‹‡v}{…p…ss‘…{ƒs‚sˆp~z‚yxml~ƒ~‡ƒz}|z…x†qƒz|‡w~y…‡|…ysk{~¥¤nadvwœ |b_n{›•£”kf`c”Œ©´uvcW€x˜¬‹W]bx¢š“’mtdX‹ƒ£¯r|OZvvš¤ŠŒacm]£ †—Wa`b…‹•¬y…Y]€„©”{‰\ef™Ÿ”Œrgak‚”¯¡zu^aˆo”€^\nj”«’kbi[‘x§“lv]gŽpŸ²‚”a[rj”—¢”nl]d›’§˜rp__u§š€jR`n™›•˜bhcj¦«¡teZw‰£·‘``nfŒ™vieb“ˆž£{vvVx‚§›ˆVg‚oŸ‘Žfmah–¬¤tv\|o…‚†ƒ€„n~xt~†ƒ|†„„}~zxŽ‡‹…x}…†yƒ‚{tv‡~Š~‚„~~twxw€|}„ƒ|ŒŒƒ}v†x‡sx†u}qnuŽ‡…{{w„|†nuwuŠ„ku~yu~ys€}ƒnŠ‘xq‡{zp‚n~„~}{~z“{~}uŠ€‹Šq‹€y€ƒxqy‚q†‚rvu€‚…†ƒ‚€p{|}x…‡ww…|„ˆ{Œ~}y{‡†zl‡gÜuÓô#ÿOAjºþ$ÿ~ÿÓ¾ÿ_ÿñ•@,…âÿOÿªáö•ÿ2ÿËi Z³ÿ ÿ}ÿÑ·ÿgÿ íœ=0„ßÿGÿ­çôŒÿ9ÿÊo]±ÿ(ÿxÿÖ¿ÿ]ÿëž<+ŠØÿNÿ¥çûŽÿ5ÿÃrV¹û$ÿ~ÿÏÄÿ]ÿð•A0ƒåÿQÿªÝø’ÿ/ÿÉd \µÿ"ÿÿÖµÿ`ÿ è›53‹à +ÿNÿ²æø„ÿ4ÿ¾g +a¾ÿ.ÿ€ûß¹ÿWÿæ˜2<<¨kT–u•h†}‡n‰||{{px‡‚u~|uotxwˆƒ|yxqzŠs~{xŒˆ‚€x„Vmˆ››¥ykhW‡“¤¤|†\b‚s¤¡‡’f^tlœ›’˜nhgX±¢“}aW{i•œŠŒcTee˜¨‘lu\b‚ž˜xWa|a™ŸŠi]hdœˆ—[qjcŒŠª°p„ZW}ƒ¤ª‰ˆcbyo›—˜lrgZ‡†¡ªxVUƒ~ ¯‹Œdo|n“ˆ‹¢Zy\iŠ“¡¢{]\€‡¦–†``g`“’–šktaaŠ—ž€pe\yi£ €–Ubwl§Ÿ˜gtV]„…’¡{ƒdh‚v¥ Žg`tn™š™œfr[g’— ¤u~]a…}¢¥ŠˆfSmnŸ› ˜z}x‹vq‡‡|v~‰yz€‚‡omvuz}‚Œp~xˆ†~~„‡y‚j††~~ƒˆv€~‚u€‰yŠƒy}~€ƒ~~zt€x€€ƒwt†€€ƒ~…Š||~}€€€}{x…ƒz~yŠŠy~n}„|‚€‹ŠŽtƒ‰u…zpvun‹zŠstr‡l‹”vŒ|‡……{–v„~€„t€~‹†~€ƒsˆz‡rpzŠqƒxuŠƒ…‡|z{|…|}~wˆˆz}q{ˆ„~ˆn„…Š†|p|~†{wrwm¬’sî®%Ø ÿ}ÿ˜ùä­ÿSÿâˆ0?”íÿZÿ¾×ýxÿ(ü½V m¿ÿ4ÿŠûæªÿVÿۋ.9›æÿ^ÿ¹Ýÿ|ÿ(ÿ¸bhÊÿ5ÿ†óå°ÿKÿâ‡4:šìÿdÿ¹Öÿƒÿ ÿ·Y hÆÿ/ÿûܦÿQÿâ‰0B”ïÿ[ÿÁÕþ}ÿ&ú¸W +qÄÿ9ÿùé§ÿJÿً)=£êÿbÿ¼Õÿuÿ"ÿ®ZmÎÿ8ÿ˜ðå¬ÿEÿÞ|-EžøÿaÿȨ\†©Š¦ˆTlfx¤Ž™£\ucX†{¤ ‡…V]ttŸ¥‡š^gegš”¤˜sviZ¥«‹~U_tl¥¢g[vm–“š¡x_yy•§¥u‰\gŽOŠ{™ebew™Š˜]xY`Š‰˜¯ƒ˜veyo˜˜ŒczTeŒ¡£›s~bGŽy•™z…V_l~­œž‰acXt›…†—]zhNŽvŸ§…†‡`pu š›i[ifžŽ ¥s{awœ‘¨¦zƒffƒh‡–ergs•”žºsmXVw£ž„fYb€o«‹…•Zrz\™‹œ–~tgQykš›„fQrœ£œ–hoqj›Ž™›\jVZ}q—¦}|`^ww–žšgwduž”Ÿ q€g|„„}…„Š„s{ƒw†…‚†ŒŽ„‚~†{‹zws…f†ˆx†‡ƒ€sŽ€…pz~qƒ}|‹„…Žvux~s~}tmvr…‚˜ƒŽsˆ‚ˆŠ„‡t¢m˜u|„{ƒn€’q•’ƒwsvsqp‚“}…~Šz‹•iyƒx…{|x‹z‡x€~ƒxŠu|dywy€r…‚n„xœ…‚rƒ†y„„•m†‰€op†’‡w…‚‚Ž‰y„r~~…}”ˆ…~Šƒ†€ˆ~Œ…‚xŽ{€yq€ˆ„…|„|‰„†{•Žvvx~„vZ±vG÷ÿËÑÿ¤ÿKÿâŒ18—ë +ÿ_ÿ²Òÿ‚ÿ'ÿ¸_fÃÿ*ÿûÛ±ÿUÿáŒ5EŽí ÿXÿ¸Ùûÿ,ÿÃXl½ÿ)ÿ†ùå§ÿ\ÿߒ0;”ä ÿZÿ·Üÿzÿ,ÿ¸dhÂÿ2ÿƒøâµÿNÿ å‰58—éÿbÿ·Üþ…ÿ!ÿ·XaÈÿ2ÿŽûܨÿTÿއ,C”îÿZÿÂÕþ|ÿ'û·W +rÃÿ8ÿŽúç¨ÿKÿ֊)>¤êÿ`ÿ»Òÿyÿ!þ¨[ kÑÿ9ÿ–ïæ©ÿGÿØz2G ùÿiÿÄÉÿvÿô°JxÍÿ:ÿœûäÿFÿÓK©òÿnÿÇÔÿhÿ÷§O+z×ÿHÿžèñÿ:ÿÓr#N®ýÿyÿÌÀÿkÿð£C+ƒÕÿ@ÿ­êðŽÿ=ÿÉp \±þ'ÿtÿØ¿ÿZÿôžA-ŽÙÿPÿªâúÿ+ÿÂfW½ÿ$ÿ…ÿÒ¹ÿ^ÿë’<6Œå ÿNÿ·Ý÷†ÿ/ÿ¿`hºÿ/ÿƒþä°ÿRÿ +ߐ31›å +ÿ`ÿ³Ýÿÿ%ÿ°\ +gÌÿ3ÿ’õÞ±ÿMÿ܃1F•õÿeÿ¾Ûötÿ#ùºNvÉÿ;ÿ”öë¤ÿKÿՄ#F¨íÿjÿÄÑÿnÿü¨R$tØÿBÿ˜èî›ÿ?ÿÓw&S¨ýÿtÿÎÅÿrÿí§A'|ÔÿDÿ¤îóŽÿ?ÿÕsUµìÿmÿÖÀÿ`ÿð›F0†ÛÿIÿ©à÷”ÿ/ÿÊd T¸ÿ$ÿÿÖ²ÿkÿâA¬wÏv„Ÿaa_zŽ”¦¨pnXjxz{‹tow‡…~…j‚{€pzˆ‘€~{”’„ƒy€Œp†—l‡~v…p’‹iˆw‚‚‹uxvy…†i€x}w~’€€}‚‚|ˆ‡uƒp{…„ƒ}‰m—}{s|xyyˆvƒ}’oŒ€y„}‹ŽpŽj|o€ƒ€‹yƒŽv|€ƒ„™x‚€|{yŸ{Ži~uƒy…†Š‚ƒ}…x€‘Œz‡ƒ~€~zjyx|†y…}Ž„’‡ƒw~„‚‚y~}„ƒy{qzz†~„ˆx‚v€w„€ˆ~Šƒ„Št‹t{y~xu}~|v…~zv~…wz…‚‚‚‹cƒ¬Ÿ‡‰d_fpŽ¡•š]b^b–‰›¤k{`l‡„¡œf‰`^mf“–Ž•ZZcf’–žlb`Uˆ~¦œu‚a\€m¯œŽ‚pbYi”~ŽŸcmbWƒw¤£q‚V[{y¢‘—mpsb£”¢˜ixV_‹¢šƒyW[lq ‰”lied˜§­pwZYƒˆ ¡xˆ_ax…ª›‡“auvi¥Š‘ oo`aˆ§›{wN_}iš¢s©hwx]–—¡otURz€¡…’Pdv}›§‹‘k`ej¢ —_q]g‡}¤ p…TZŽhšššŽhopo•œ¡§u|bm|žŸƒ…u{~‹ŽL@Ú +ÿºwÿùډ0=“ëÿZÿ½×þÿ+þ¾\ m¿ÿ1ÿ†þâ­ÿTÿݎ07šå ÿ\ÿ´Ûÿ}ÿ)ÿ·deÈÿ2ÿˆöß´ÿLÿ å‰5;–ìÿ_ÿ¶Óÿ„ÿ#ÿ»XgÃÿ*ÿüÝ®ÿXÿàŒ-A•ìÿYÿ¿Öÿ{ÿ)ý¸[ oÂÿ5ÿˆ÷ë¬ÿMÿێ+=Ÿé ÿgÿ¹×ÿzÿÿ¯YkÐÿ5ÿ•òãªÿJÿá.GœóÿeÿÂÍÿvÿöµM uÈÿ=ÿ—øéœÿGÿԂ!F­òÿdÿÅÐÿoÿ!ú«X"wÕÿCÿ˜ëï¤ÿ;ÿÕ{%M¨ûÿoÿÄÀÿoÿõ¨F(Õÿ>ÿ¦íï”ÿAÿÍvS¨ü$ÿqÿÓÄÿdÿïžE#‡ÚÿMÿ¡ãû•ÿ2ÿÇlU¹üÿÿÒ·ÿ]ÿ ï—:4æ +ÿNÿ°áôÿ5ÿÅe _²ÿ)ÿ|ÿà·ÿZÿ â•33“áÿ\ÿ¯Þÿ„ÿ*ÿ·^_Äÿ-ÿŒùÛ°ÿQÿæ‡3?’ðÿ\ÿºÔþ}ÿ%ú¹UqÃÿ5ÿúè¦ÿLÿو&>¢êÿhÿÁÔÿsÿþ«W qÓÿ<ÿ—ìé¤ÿ@ÿÚx*K¢ùÿjÿÅÆÿtÿô­G!}Ðÿ@ÿŸññ”ÿ?ÿÌzO±ö!ÿvÿÍÉÿcÿôœH+€ÛÿMÿ£âõ“ÿ1ÿÌg +W²ÿ ÿ€ÿÖ·ÿcÿ +éœ91ŒÞ ÿPÿ°éõƒÿ3ÿ¿h a¿ÿ/ÿ~øß·ÿRÿè‘:=/‰m`Žyn€ˆ†ƒidn‰—­vaZQq«¢†P`pn¡¨ •dZae‘›• ll]}„¢£}ƒ\`|qž§’˜t[db‹–˜’hyib’„Ÿ›…e^~q§•”elgv”¦›suZ[Žkªª|‰_^mtžŒ˜‘dnah“‰ž©z~n_Œ‰Ÿ¢…\aioª›Ykcwy…ŸŸdodTƒr‹”€`dry›œ¤pgib…£¨lU[ƒŸ¡}‡^Sup¤£Šža[t^ž’—¡sdbS¤¤}„_W}f¨›Œšhfoe‚”™žtkRX‹ˆ‘ªtaaxq¦ ‹–V_be‘£•šf‚x‚ˆ…z„}kŠuƒ‚ƒ{w~}vu}€}}|‰t‚‰“|„~{‰~‰Œ…ƒx{zƒ€‡~ˆ~‘‰zyxu‡|}s|~~„uˆ|q}……}€ƒ‚s…zvy„{wu‚~ž|††wx€z—ŠzŠ……Š„}…Š~ƒv„{ˆ„r‡‹‚‰t„†qŒn‡‰uyyzv{€wƒzt…{ƒsƒ~u€‚zw‚~jƒ~lˆo†{u|Œx„—‡ƒ‡ƒƒ†€~Žwtvzt„‰„|~n…€|„‡†z{zp‡wƒ~z„‰‚Šm|„x€€‰„‰„‚…y}†t€ƒx}—nevs˜¡Ž\cfŠž¶ï$â3•ÿ;ÿdÿ©äûŒÿ6ÿÂk U»û$ÿ~ÿÑÄÿ\ÿ î™E2„áÿQÿ§Þø‘ÿ3ÿÎe V´ÿ"ÿ€ÿÕ¹ÿeÿçœ92‡à ÿMÿ°éô†ÿ6ÿÉk +_¶ÿ)ÿzþÞ»ÿ\ÿç—=-ÜÿWÿªâýŒÿ-ÿÀmZ¾þ&ÿƒýÖ´ÿ[ÿ ïŽ9:ŠçÿRÿ·ÙúŠÿ,ÿÂ_e¹ÿ0ÿ…ÿÝ®ÿVÿà•/4˜ä ÿVÿ·Ýÿ~ÿ-ÿ¹ceÄÿ3ÿ‡õá±ÿNÿ å†6<–ìÿbÿ»Ñÿÿ ý¹RlÇÿ2ÿ“ûâ£ÿOÿڇ&D¡îÿaÿÅÓÿpÿ$û®VvÌÿAÿ”ïí¥ÿ?ÿÖ{(E§ôÿpÿÂÆÿtÿø§L&yÔÿ<ÿ¤ïë”ÿBÿÑvT¨û!ÿoÿÐÅÿdÿï¡F#†×ÿMÿ¡éø–ÿ3ÿÆq S·ü!ÿ‚ÿϼÿbÿ í™?5…åÿMÿ®áô‹ÿ4ÿÅge·ÿ-ÿÿÞµÿTÿ á—41”áÿ[ÿ®Ûÿ…ÿ,ÿµ` bÅÿ,ÿ‘öß°ÿRÿã‡4C•ïÿ^ÿ¼Òþyÿ%úºS sÆÿ7ÿöí¥ÿLÿԅ&C¤íÿmÿÁÑÿqÿþ¨S"pÚÿ@ÿ›ìéŸÿAÿ×t&T¦ûÿoÿÏÂÿkÿî©B&ÒÿHÿ¢ì÷‘ÿ<ÿÅrPºù#ÿzÿÑÂÿ_ÿñ•F3†ßÿQÿ­Ý÷ÿ1ÿÍ]a·ÿ*ÿƒÿâ±ÿ^ÿà“23—â ÿXÿªÕÿµ©³‰c¤wd—w~x}ƒŠr{{ƒbƒx€Œ|ƒ||xwuŠ}q…trp‡}yƒzv†ƒ†v…Ž…Šz…ƒ†}€‹{{…t€uz‘wˆ|…s{x„ˆ‡x€„€‚†ƒŠyŒ„‚yvxpumˆz†{ˆ„ƒzŠ~z~€Ž€x€vyt~~†v††z†‘o„|vyv†…mt„qŠ€~Ž‹“‡‹vŽƒ‡€z~~‹‹„„z|z‡z}y}…w„ˆ}ƒyxxz||~€t}‚{†u‰|}€|x‡p~‚†{„‚xƒs{{~x}zqyƒ{€y|Š†qo‘œ­Š‚_Xrq‘ Š“Wbko“¢˜˜pg_^‹œd‚[]‚p¢¢’ˆ\Qei•šœ‘on_^˜ˆ ¥€]Y}|˜¥ŽŠdcqj™’˜“dx^V‹ —q}[RxuœŽZfmnšˆ‡qj`^ŒŒ¥‘rraW†}Ÿª†‡UYiq›š“•ohfY¤•£Ÿ}g[‚n´¨“”_lur¦–ˆ¨cr]h‚Žžž‚`]ro¤ž€—`cpr›¡œ¥\kTd‘¦¦{†hdt¥ zbasr™žŽwg^n—¨x†T`sŽ¤idhpš¢¥_pa`“‚—”xpj†‚|~|‡‚ƒ~„}‰„~{z‚‡€m~xf£Hÿ§ÿÑ'1fÁÿ*ÿƒúÛ¶ÿVÿ é=6ŽèÿWÿ¯ØþŠÿ(ÿÀ_`½ÿ&ÿˆÿÙ±ÿ\ÿæ“49æ ÿQÿ¶ßù€ÿ1ÿÂa h»ÿ0ÿþâ´ÿUÿ á’24•áÿ[ÿ±Ùÿ‚ÿ(ÿ¸c `Çÿ/ÿ‹÷ݳÿPÿå‰6>‘î +ÿ^ÿ·Óþ€ÿ%ü½UkÁÿ-ÿüæ§ÿRÿ݋*?›èÿ]ÿ¾Ùÿtÿ'ÿ²\nÊÿ:ÿŒñè«ÿGÿ܇$EJ—|bƒ‹l}ƒuˆ}y}‡zŠ{~€„‚ky{y€ˆo†{…ƒ}~uƒ{x…m‡}‡rƒ}ˆŸz„ˆŒ|‚vp†{…wvƒ‚wm{|z‚s{„s|…{‡€{‰x†y|v{q…‰r††x}|…r~|†ƒw‰}}‚‹o~€~}|†}…€ˆˆˆ‡z‚w†{{~y}Œ}~}v‚ƒz‚{†x‰y‚‰|x~j‰ˆx„€€‰‚utz‚x~€y€™mŠ}…ˆ‡y‘ŽvŠx}ƒzz…‡}n{€ˆ|~sy…u}{zx‚r†vyqu¢ Ž‡c]lZ”™Žžoifg‡¡š|Sazr¤¤ƒ•`fvh¤˜š–gd\gŠš›r{Vd‡{«Žh^oi—šœ¤k|_e‹ž£xŠXaz}¨ ‰ˆaXkl¢›”kfaY—–‰¨~yaV}|ž®…Š]Yiiš£“•_moY“ œo{^]‡€¢¢’ŽbapišœpcjVŸ›~tWcq{°—„‡Xdo\¡’œgaka‘œ¥vvY_ƒy£©“–r^rfžŸ›žlee“©–nVn’}œ¦†“ecpb¡››™hlXm–¤¤trdZ|}™§ˆ–f^joœŸœ‘lnnl˜–Ÿ¢lq]V€}˜ªŠXesr¦™ŸœiizQ”ˆž¦pw]lu¦•\ï=Úì*ÿ_+D—éÿ^ÿ¶Üÿ}ÿ-ÿ²] dÆÿ/ÿ÷â´ÿNÿ â‘79•çÿ]ÿ¯Ùÿ…ÿ&ÿ»\]Åÿ,ÿŒûÛ²ÿXÿæŒ7@ë ÿWÿ¸Øú~ÿ*þÄYg¼ÿ/ÿ‡ÿâ®ÿXÿސ/7›ä ÿXÿ¹ßÿ{ÿ*ÿ¹dhÃÿ5ÿ‰ôä®ÿNÿ +å€4=ší +ÿbÿ¸Óÿ„ÿý¶YgÇÿ/ÿ’ûÞ§ÿRÿá‡)B—ñÿYÿÅÓÿÿ'û±X sÄÿ=ÿùè§ÿCÿي'>¤îÿeÿ»Íÿvÿ"ÿªV!oÑÿ8ÿžðæ©ÿCÿÙ{)MžúÿkÿÁÈÿoÿõ²J~Îÿ?ÿ›ôï™ÿCÿÍ}L©óÿnÿÊÊÿhÿø M&}ÙÿGÿåòÿ7ÿÏm"R¬ýÿwÿ̽ÿjÿï¢>,„ÚÿHÿ©êôŒÿ;ÿÆpZ´þ(ÿtÿÙÀÿ\ÿì™@/‹ßÿUÿ¦Þÿÿ,ÿÂeZ½ÿ$ÿ…ÿÖ³ÿ]ÿç’6;ŽèÿVÿ¸Ýú€ÿ.ÿÀ` i¿ÿ3ÿ„øç¯ÿOÿ ލ16é ÿcÿ·×ÿÿÿ³\ +fÌÿ3ÿ•ôâ¦ÿNÿä€+F›ôÿaÿÇÍÿuÿ õ²NwÈÿ>ÿ•ôðŸÿEÿҁ!F«ðÿnÿÅËÿkÿú¤O'wÙÿ@ÿ£çí›ÿ;ÿÏpT¨ÿ ÿsÿÒ¿ÿgÿì¥>'‡×ÿMÿ§èûŽÿ4ÿÄq Wºû&ÿþÔ¾ÿ]ÿñ‘?2óß@s?©…hŒ|uvx‰‚€†‚}}v‰}{ƒ…w{„q„~y‡~„„‡€xŽ}xˆ‚|Š}~{{ƒ„}zqy‡|‚z}y„‹‰~z†€}‰‡z{‰‹€†~{}ƒ|ƒ‡‰}~|Štzz‚n…p„‚†yyˆz}€ƒ‡yŽ„›…€ƒx€|yt}|~€€{uvy€~……€‚x€t…{„t‡}†‚}Šls€‚~{~}‰w†‡u|ƒy‚~ƒ~…ˆw‡oˆ{uzs€wŒ~ˆ„wu|~~…r{…‚{„nqš¦™—``aiƒ—›žszV_~†¤žƒ\]‚g¡£‹˜[mgi”“–¡tlq`‹Œ¡ ŒWbzt£¢‘[]o_œš›whX_€„Ÿž€‹UWq¤œ‡nblh¤”¬Ÿtk]^ˆƒ¢Ž}V_vu¤žƒ‚iXjnž—š™gkg_•z¦¡~Œc`€|¡£’‘jdZi›š‘•jqX_Œ|©Ÿ‡~X_un•’…–aenh›•š›hkbZŒŽŸ¢v}]a}o©—‹ž^gne”—–Ÿimh^™Œ™®‚‚Mjˆ´›‚]ntjœ‚©Ÿurhc”™¨¥x‡Y[…}«Ÿy˜{ˆ‰x€‚Œ‰‰|…‚€w…p€|mˆ†€†|€Šz†Œ|€~|†‚Š‚u„…z„†|x€ƒ~…ƒ~‡l__´ÿ„ªÿÒbH rÕÿ=ÿ–íê¥ÿBÿ×y)H¡õÿlÿÆÉÿvÿ÷¯J wÎÿ8ÿ™öæ›ÿIÿՁ&K¢ôÿfÿÉÏÿnÿ!ö­OxÍÿAÿ”îó ÿBÿÓ$CªñÿoÿÆËÿpÿû§T$rÓÿ<ÿ£ëëŸÿAÿÛr#Q¤üÿoÿÏÃÿoÿñ¬E#}ÐÿCÿŸñð–ÿCÿÎ{N°ôÿkÿÏÈÿcÿô¡K'ÙÿJÿžæôÿ6ÿÎn !P²þÿyÿϽÿjÿ îž@0„ÝÿFÿ­æóŽÿ:ÿÉm\³ÿ)ÿyÿؾÿWÿè˜>)ÚÿTÿ¨ßÿ‹ÿ+ÿÀjZºÿ&ÿ‡ÿÔ¶ÿ[ÿìŽ:9‹éÿSÿ¶Ûø„ÿ-ÿÀ^ jºÿ1ÿˆþã­ÿPÿޒ06œå ÿaÿ·Ùÿ|ÿ%ÿ±`gÌÿ4ÿ”òâ«ÿJÿá0C˜õÿeÿ¾Êÿvÿ ø±R wÉÿ8ÿ–öî¢ÿJÿ҄!F¢ðÿnÿÅÏÿkÿü¢N"wÚÿCÿ˜èï¢ÿ<ÿÒt&U©ûÿvÿÍ¿ÿlÿð¨=*×ÿHÿ¦ëóÿ>ÿÃpU·ú'ÿxþ×ÂÿYÿë™C0ˆßÿTÿ¨ÙþŒÿ0ÿÆb\»ÿ%ÿ„ÿزÿ`ÿä“7:’æÿWÿ¶âûzÿ-ÿ¼aiÅÿ5ÿƒõæ®ÿMÿ á‡2>œì ÿgÿ»Óÿÿü´T pÊÿ4ÿ›õç ÿLÿڂ"J¢óÿeÿÉÎÿlÿ ÷¦Q€Z|wj‚|{{xx{…Š…z}‚syu…†ŠŽzˆvƒl“„~ƒ{Œ~Œhy~‚z…v|x‚ƒ‚|qy‡‡|uyu|~ƒy‚}yxy{{„…‡{ƒŠ~ƒ‰€w€tŠ{wˆ}y}€}pz‹zƒ‚ƒ}tqoz‚‰~ƒww‚……x‚”}tzny{{~†‚…‡‚…}†{„y€xƒt}|~xzy‰†€†wqƒ~w‚†|‚…~wƒ}z{‡‚|zz|o„˜‚€Vbytš—’–a[f\’Œ™Ÿ{s^_‚‚¡…}`\pi¨™“›_gviŠ‘“Šewafyƒ«‘ŸSdun¦™‰œ[\kg˜—™uzcT|y—¢x‡XW‚i–Š–ov[h”´§u^_–z™œhŽZ]p~“¡‘“`lb_¡‡’gvS\…‚˜§Qbrv¥˜•cntaœ‰˜©mnbV‡Š®ª€†]^}k§¤‰šYeb]—–¦{wiY…ª—†|\^uz£›’™pgpk¢—œojRc„z Ÿ|ŠQar¬–‹’hgm^‡•ŸowWay£§‰][psœ˜†”agbe’“up_i‚¤£…zcNoz—žŠ’bb]hŽšœhv^_•n˜žwŠ]_xjœ¤¡“hbgk§“œ”pjkO€u™ Rë5êèBÿy$!mÎÿ6ÿ‘öã£ÿOÿ؄0Gðÿ^ÿÄÓÿwÿ#ùºQnÄÿ:ÿùê¤ÿMÿֆ*=¥êÿcÿ¾×ÿtÿ$ÿ±_mÉÿ<ÿ“ñæ«ÿGÿß|.>Ÿóÿgÿ½Ìÿ|ÿø±S qÌÿ5ÿ›öå ÿKÿہ#IžóÿcÿÈÏÿpÿ"÷­QzËÿBÿ”ðï ÿAÿÑ}%C­ñÿlÿÂÈÿpÿú¥Q)w×ÿ?ÿ ëë˜ÿ?ÿ×u%V©ýÿoÿÍÂÿmÿï©B#ƒÓÿDÿ íö”ÿ<ÿÊx +P±÷"ÿtÿÎÅÿ`ÿôšF+‚ßÿMÿ¨àö—ÿ0ÿÌh ]´ÿ!ÿÿÒ¹ÿdÿ ë71‰Þ ÿJÿ±æø‡ÿ3ÿÁj a»ÿ,ÿ~üݹÿTÿè:3“åÿ[ÿ¯Ùÿ‡ÿ'ÿ½\aÃÿ+ÿŽýÛ¬ÿXÿã‹2@‘ìÿ\ÿ¼Ùýxÿ*ýºX +oÉÿ9ÿŠóìªÿNÿډ,=£íÿmÿ¼Òÿxÿý¯R"lÓÿ:ÿ˜òåžÿIÿØ|)P£÷ÿgÿÍÌÿtÿñ­K!{ÌÿIÿœïò™ÿ>ÿËvH´öÿsÿÊÃÿgÿóŸL/€ÛÿHÿ¨äñ“ÿ8ÿÑf +X®ÿ&ÿyÿÖ¹ÿeÿæš;+ÛÿQÿ¬æû‰ÿ2ÿÀp ]ºþ,ÿƒúØ´ÿXÿ î‡67ŒêÿXÿ·×ýŠÿ(ÿÀ\h½ÿ/ÿŠÿá©ÿUÿۏ,<èÿaÿ»×ÿvÿ'ÿ®\aâŸD]T¡zk‰rx‡ƒ‡ˆ|||y‘xs…†t€‚‚jx‡r…xrxmv‡q†}ƒ‹€z~{w{z”z}‚eƒƒ…}zw}‚v€uy†…{„†|…Šy|ˆ†…}…€}€€p}†w|}„y€o~}‡Œx‡‰ƒ‚„yˆzz‰v{|}y€tˆ…~Œ}ˆwg•yu‡‚‚zw‡Žz~~x‚|{ƒ}u‚€w„~~Š†‰‰„w{{xŒ}w}„‚{ƒy…x„€uƒmk€¡¥‘ŒYeon›“—˜nkf^•‘¦œyz_^€¨‘‡d[nlžŽ•£a\]‹‰Ÿªwx^j‡¨epke¥—‘¤eqggŒ–›£rv\\zz›˜‰‰nghh¢˜‡`gscŽ“¡jsYO~x£¦~‹a\…u££‘bl]q††¥{‚UYˆz¡ª‚ˆ[clq¥›‰alXnŠ—¦w|b_Š…¨‰ˆZc]r Ÿ œ]fh_Œ•“§…]U}z¬œƒaayl¡§ higX– juT^†¥®†ybZ{r›–‡ŽegV^}‹£¦uXV~q£‰‡W|€~ˆp„‚s†„‡Š„r{€‚}vzrŠ…ˆƒ‡…rƒ~ƒŠ{€|…–wŒ€‡‚ˆ{{w}{vz€w…x…†wˆƒ‰ƒ|u‚}‡}Š~…U‡[2Ý ÿ¶~ÿÊ [ fÁÿ'ÿ‹ûÚ±ÿUÿå7;ŽçÿUÿ¸Øú†ÿ)ý½\f½ÿ,ÿ†ÿá®ÿYÿá”17•ã ÿWÿ¶Þÿÿ0ÿ¶c eÁÿ2ÿùá·ÿNÿ +â‹76•èÿ_ÿ²Ùÿ†ÿ"ÿ¹_aÅÿ+ÿŽûÚ¯ÿUÿå‰4?“íÿZÿ½×û~ÿ)ü¼WnÀÿ4ÿŠüæ©ÿNÿۏ+: èÿ]ÿºØÿ{ÿ%ÿ±^hÉÿ5ÿòåªÿIÿá0B›ò ÿdÿÀÍÿ}ÿúµP +sËÿ8ÿ˜ùèžÿJÿ؂"G¡òÿdÿÉÐÿmÿ!úªRzÒÿDÿ™íï¢ÿ:ÿÔx$H«öÿrÿÃÇÿsÿö¥I'vÙÿ>ÿ§ììœÿ?ÿÎuV¬þ$ÿpÿÕÂÿbÿî£C%†ÕÿPÿ¤èù“ÿ4ÿÄn T¸û ÿ‚ÿÒÀÿ`ÿ +ð•?5…æÿPÿ­ßö…ÿ1ÿÅb f¸ÿ)ÿ‚ÿáµÿ[ÿ +á—0:“áÿ^ÿ²Øÿ€ÿ*ÿ´^ _Êÿ0ÿŠöݯÿNÿâ‡5E–ï ÿ`ÿÁÑÿ|ÿ#ú¼N mÃÿ8ÿúè¡ÿLÿӂ(A©íÿgÿÃÓÿoÿû¨V$tÐÿBÿšëìŸÿ?ÿÚq'M§ýÿrÿËÁÿmÿñ©F%~ÓÿGÿ¤ðòÿ;ÿÏwP°ù%ÿsÿÓ¿ÿaÿò—G/…áÿRÿ©ßø“ÿ/ÿÇe\µÿ&ÿ„ÿײÿ`ÿç™75‘â ÿUÿ´àû~ÿ0ÿ¹e +gD‚xc}xz—†y†ƒwz~|o{~}‹‚}ƒ~~‡‹€ƒ„}…Šzu€~Š…|}tyq|‡tƒvzoƒƒŒ~{€wƒ{‚wy€{ˆw{wu|ŒsŽ|ˆy|~y‰|‡yvz€…m}}y…|„~……‰pyƒ€}‡~q‹y‡Œˆy“n†•x†ƒpŠtŒ}~t‚sŠ†x†vvˆ…„{{y…„†{y|v„†t|„{ƒ„l~|˜‰{^U‡¬šˆ’[ixkœ™›šcif[†™ž‚iYW€tšœq•Y_rjœ—^bb]‡žœrcK\¦ |MQph¡£’ˆblgWŒ…«utdX™|££“‹_RtzšŸž£Yn]j™–›³hxnR~ ¢ˆ„Nauª—”›cxna–”¨e}jTŽ‰¡˜‹„Xemi¦–‘’ik]TŠŽ–s{_`x}¢¦…ZYoc›¡“‹W_ae”’š’r€cp‰…¦¢‚h]iz¥’”dpjn”~“ pzX]Œ‚š•‹‚jRsq©¢ž[yca–Ÿ¦qlXP‡•ˆuy‹~~yy†}y|~~y€y†{}|}yz€ƒ|…‚~€…tŠ{wƒ…wzuˆ‚~ˆ€}}~|}uƒn}†|ˆ}†y}vƒƒ…v}y‡o€†}{w|wŒztƒˆz‡~dz–HÿqÃÿêCGœîÿbÿ¿Öÿxÿ&ÿ¯XmÈÿ8ÿ‹óë­ÿJÿ܇/>Ÿì ÿfÿ¹Õÿ{ÿ ÿ°W +fÎÿ4ÿ‘ôá¬ÿOÿàƒ0F˜ôÿbÿ¾Ñÿ~ÿ ø¶S oÆÿ4ÿ’ùè¤ÿOÿۊ$B¡ìÿ_ÿÄÕÿsÿ%ÿ¦MqÍÿ<ÿ‹ñì«ÿBÿÙ{+D¡ðÿ`ÿ¹ÊÿxÿüºZ#qÐÿ8ÿšóæŸÿGÿÖ}(MŸ÷ÿdÿÊÌÿmÿò¼8DŽ=³žn¡|jrTŒš­˜yw]g‰‡¦ŸŽ„pWˆo¢ ” eWyaŽ•¡z_m’}±žŠzZ^kdšœ•lwodœƒ¬”w{]dŽ³‡›uO„lœŸ•\‘€m™Œ“¢nncqm’–©„„g[qr²˜˜Žanog”• ƒuYd‡Š¡¢„lM]€m¢–’^rs[›¢{jcWl‰†¤†ŠUcyw¢›ƒœ_cpaŽŽ—‘nlfe}„š¦sŒidxr›¦šŸrlgd„Ž¦šˆ}\`Žu™¨_cw`šž‹]~e|›•x}cXŠtª|ƒi_vpžm˜Yrid–’•‰€joW…|¦™ƒ’dctzŸ¤˜“ep_w “•¦tz^g¬—†_mmk¥–”bbje€˜“ƒXvX}} ž‡}]]‡s›—œ\kdo–—–i[TŽ}¤‘‹”W}|f¡ªŸ^d\ˆ†•¦}og[…f²”‰ˆ]`vq—©š{LSj˜”’‘l]nV{}¡ª‡†]€„q–¦ Žkb`F¨x›xy}€r}i}‹~‚v{z—‚~ƒˆyˆ…Œ‚z„€€‚„zwƒˆx|ƒx…xŠ~†~‡€s……€‡mjzv}ƒx~yƒusrhŠx‡‚…†{w†d……~†r{‚v™g„‡‡…pƒ—Œ{|ƒƒ{‡oŸDn€ÿRà÷6ÿߢP!pÒÿ:ÿ ïë¢ÿEÿÚ{)K¥ûÿgÿÅÉÿqÿô®LxÊÿ<ÿ—õíÿJÿԃ"G¦ñÿfÿÅÕÿkÿò¬SvÑÿBÿ•îî¥ÿ=ÿÖ{)C¦òÿoÿÂÊÿuÿû¨U&sÐÿ<ÿžðæ¡ÿDÿÚ{&MŸùÿkÿÊÊÿuÿñ­H }Íÿ@ÿšóïšÿGÿÎ~ JªðÿoÿÉËÿoÿ"üŸO%|ÛÿGÿžçñžÿ:ÿÓq"Q«ûÿvÿ̽ÿlÿñ¤A*€ØÿBÿ¨íñÿ>ÿÍvW¯ý&ÿqÿÑÁÿcÿîE'ŠÛÿQÿ¥äü”ÿ2ÿÆoW¹ü!ÿÿμÿ`ÿ ð˜B2…æÿNÿ±àôÿ2ÿÆc bµÿ,ÿÿßµÿZÿ +â˜50•ãÿ\ÿŸæø‚ÿ,ÿºj ]Æÿ0ÿüͳÿUÿ êŠ@<‘êÿ]ÿ·Õý‡ÿ'ÿ¾WlÂÿ1ÿÿߧÿPÿ܍)>¡èÿ[ÿ¾Øÿwÿ'ÿ±[oÊÿ<ÿ‘ïé«ÿCÿÛ~,A õÿkÿÀÊÿyÿø¯P"vÌÿ5ÿóê™ÿGÿ×~O§öÿhÿÎÌÿiÿô¢K ÔÿHÿœèöœÿ6ÿÎt R±øÿzÿʼÿiÿõ=0€ÝÿDÿ¯åóÿ9ÿÅl^±ÿ.ÿ}ÿÛ»ÿZÿèœ:.àÿWÿ«Ûÿ‰ÿ,ÿ½c^Àÿ'ÿ‹üØ´ÿXÿçŽ6=ŽîÿXÿ¹Ùû}ÿ*ýÅQ!7b̕]—`dŽe¥X]fn •ZrfX|‡Ÿ«…rdZow£Ÿ“’XZk^›“›£rjdeˆ’š¡zSbu„¨ž–”]bx`™›‹™hpZa~‰›vŠ`[qj ›†™Xakv¤”utY`ˆ¨®„ƒWXyq›Ÿ|jpkuŽ”£¢yog\ŠpŽŸ€ˆ`Stl¡œdxwƒ‡{‚k‹|ˆyƒx{‚zz„{ƒs‚†sƒ{lŠyu†w€‚}{{|€uu‹}€~‚‡†|„‡…ƒ‡z„€ƒ‚ˆŠ|~|‰„‘|…~€†ˆz~„€s‚†…yu~„yw|z|z{s~r†z…„|~ƒ€‚u|„|z|rxoyuwŒ~r}l„‚Š}Š„‹sjƒv„|€‹‚s‡w…z‹ˆˆ‘Œ{‘€p‰}xg~†€{w…ƒiwqwvw~‚{‹yŒst€}z{ˆ‚|‹z‡~ƒy„u}vƒ}{|}†n‰q€xwy~{ƒw……x{}‹„“†~~‰™•j_wb™›”¬okcs §Ÿ~wWflv¬™’\Xph˜œš¢snb[ˆ’¥¥s”Wfvx¨œ‘g`]g—–¡exWm†ž¡‚\`r›§€ŠcZid‘˜™¢hn\c”„¯£utj]wš£…•[[lh˜¤™ggeR~xö?üÀVÿŽ' d¾ÿ,ÿˆÿÙ©ÿUÿáŽ/:“èÿSÿ½Úÿ…ÿ/ÿ¹a h»ÿ4ÿ„ýâ³ÿOÿ á“12šæ ÿVÿ°Øÿ‚ÿ*ÿ¶c bÂÿ/ÿŒ÷ܶÿRÿèŠ7:ìÿ\ÿ¶Ôþ…ÿ%þ¾ZgÀÿ,ÿŒÿß«ÿYÿߎ,>–éÿYÿ½Ýþyÿ+ÿ¶[ +mÃÿ6ÿ‡÷æ¯ÿLÿ ކ1;žé ÿaÿ³Óÿ|ÿþ±W +iËÿ3ÿŠõá§ÿNÿޅ0D—ôÿ`ÿÄÏÿxÿ!÷¶Q uÈÿ<ÿ‘÷í¡ÿHÿӄ#C©ïÿkÿÂÒÿoÿý§S#rÔÿ@ÿ›ëë¡ÿ?ÿÙu(M¦úÿpÿÉÄÿlÿñªG%|ÑÿBÿ¢óí”ÿBÿÍxO¨ø"ÿrÿÐÈÿdÿñ¡J)„ÛÿMÿ¢â÷•ÿ3ÿËj V´ýÿÿкÿgÿêš93‡àÿKÿ¯æõ…ÿ7ÿÅi b¸ÿ-ÿ{þÞ·ÿXÿæ“91‘áÿ_ÿ±ÞÿŠÿ&ÿ»]^Âÿ*ÿüÚ«ÿUÿäŽ7A•ëÿVÿ¼Öý}ÿ)û»Z nÀÿ:ÿŽøé©ÿKÿ؅*;¤ìÿdÿ»Ïÿxÿÿ¬Y$rÑÿ9ÿœïç¡ÿGÿÝw%JûÿjÿÉÈÿrÿñªG |ÐÿHÿœñò–ÿ=ÿÉxK¬õÿtÿÌÆÿdÿõœH0~ÞÿKÿ«áó“ÿ5ÿÌi\±ÿ$ÿ|ÿ×¹ÿdÿ å6/ÜÿQÿ¯âþ‡ÿ1ÿ½m^·ÿ4•E…V‹•vu‡‚{‹u†Š„x€wv€‚u‡{…ƒ{…ƒzw‚|‚~y{y‚~Š‰}†~†‡€‡vˆvŠ‚w€„|ƒsƒz„ywr~ƒ|–k|…‚r}|Š‹‘v~{~~}wd}‰ˆ|}„ƒ€€„ŠŒy{…rƒ}…}u„Šqu€ƒŽw‰ƒx‡‰{„€tˆ‚y‰rs‚v‡wtŠ€‘x…ƒŠƒ~†u„”‚„yt…xŠ‘xƒƒˆ€‰r‡’‹ˆ{z„‚~v‹}ˆŽ|Œ||€p…zjtƒ€‰|‘t‚t{|‚†|zx€‰x~€|}y}‡ƒw†{‚}w€‚s‰}s‰z}~|…€~~{~~„ˆ‚”{qŽt‚€x…yx‰s}~€Š€tƒpq~{|Š€‚„‹z|z‚‡‡{”|‹z~„„…‰‚„|x|uƒ†|w{€†…r‡~…~zz~ƒ†{…}y}Šy“}‚€wx†y‰ƒrr€z|srzw£•˜ddfX–Š§¤jq\b„|ž—j‰ZXrp–¢‰«ncjd“¢–rrY_‡ƒ¢§}|[Rxh‘¥‘“adbfŸ‘”šiu^U–~žªƒ‡eO{p¦¢‹•^jd]•‡–Ÿmh]Oˆ ™”}]\owž‹Zji]™•Œ§[upcˆ¤ …{dT[ƒÌIÿw™ÿÍ3G¥ïÿfÿÁÓÿrÿ#ÿ©TpÏÿ:ÿïë¨ÿBÿف-E ðÿiÿ¿Ëÿwÿÿ±R +lÐÿ7ÿ—óåªÿNÿہ/JžóÿaÿÂÍÿrÿ!÷³R rÇÿ<ÿ’øì ÿIÿׅ$A£íÿeÿÃÔÿpÿ ý«WrÎÿ>ÿ–ïê§ÿ@ÿÛz*D£öÿmÿÂÉÿvÿø®M#wÏÿ9ÿžòé™ÿEÿÖ}!O¦÷ÿkÿÌËÿlÿ#üZ±h”i†ƒ‚‡ƒ‡wq}xƒ‚‡}„rƒz}|y}‚p~tt…z|€††„{{‚‹€}™w{u€ytv‚vˆzy‡}}}u|~€z…y~™„„Ž}~v„‚’‰~t~{€ƒ}ƒ€‚{‹}„…u‚„ƒszwy…Ž‹rmio–’š£vteYŽ¨~~bky|¥“ƒ“\c`b›™“ kxgSˆ „qY\ƒ|ª¤’_W|YŽž£nr`e”…©•}|\_v€Ÿ¦†—bfmkš˜¤’jjTa—ž¢smRW|«ž‚giym•šltee„€œ¥‚_f…y£¨‰…ia[x›™›Žoma`‹ˆ˜ªx€[fl|¢¯—ŽRekk¤™VfZcŠ™š©sxh\wz¥›’V^mlž’‹–grhZ¥¥‚jL]{u¬˜ˆŽakfu” žu`eR—|°¡lXY…w ¦v›`_rhœ•œqn^]Ž”¢¨}[d‡w£”]]g\‘•›’d~`m‘|±€€jNƒ˜¢‘}imlr–¤ql`\ƒƒœˆW[z¬ŸŒŽt`p`”–˜™dp__˜©§‚v_W{n°£|—Zcse–ªŒ›talZŽ„§§x~\d†qªž}„d`us¤˜—°upm^‡‘°¦|{k[‘x ¡Ž’Xaqj­vH”Z…ÿLÝõœÿkÿý¨O#oÔÿ;ÿ›îè¦ÿDÿÔ{)KŸùÿjÿÅÇÿuÿ÷²HxÌÿ7ÿ™õëžÿMÿӂ%H¢òÿfÿÅÑÿpÿ#ú¨RvËÿ?ÿ“òî¥ÿCÿւ&B¤íÿmÿ¾Êÿqÿÿ¨P"pÒÿ:ÿîç¥ÿDÿÚ|)LŸùÿjÿÆÈÿvÿô°KzÌÿ>ÿ›ôíœÿEÿ΁K¦òÿiÿÉÎÿhÿ÷¦O zØÿFÿ˜êñŸÿ<ÿÑs#L«öÿwÿÇÃÿoÿö¥G(yÙÿ@ÿ£ìì”ÿ@ÿÏs!V«þ#ÿqÿÒÃÿfÿí¥C$„ÕÿKÿ¡êø•ÿ4ÿÅsN´ôÿ~ÿÎÃÿ`ÿ ð™D3‚ÚÿMÿ­âô“ÿ6ÿÌg[²ÿ#ÿ}ÿÕ¶ÿaÿ èž8.ÞÿMÿ¯åú‰ÿ5ÿ½k _ºÿ-ÿƒüÙ½ÿUÿéŽ<2‘éÿXÿ­×ÿˆÿ'ÿ¾^d¿ÿ&ÿŽýÝ­ÿZÿä/=‘ëÿZÿ»Úýzÿ+ÿ¸] mÅÿ7ÿ†õé¬ÿIÿ܋-?é +ÿgÿ¹Ñÿ}ÿ ÿ±TiÏÿ5ÿ—ôã¤ÿJÿ݁,KõÿbÿÇÍÿpÿ ö³L{Êÿ>ÿ—óñžÿAÿÑ E®ñÿpÿÅËÿkÿø£M'xÜÿBÿ£çîšÿ;ÿÑmW«þÿtÿÛ¿ÿgÿè¢<(ˆØÿJÿ§éúŒÿ6ÿÃo V»ú%ÿ}ýÕ¾ÿYÿ î’?5‰æÿTÿ¯Úú‰ÿ5ÿ¿;‡†¦qm†…ˆ‡~€~z|‡w………xy…ƒy†‚}{Œ‰ƒ…}ƒ‚z}Œ„‰ƒy…sr†Š‘}€y€x’‚‚zˆŽ‚~‚…‚ƒƒu~€vƒz„„ƒ~‘ˆ€†t~€u€€„{ƒ…}ƒ{‚vys‡“—h`jt¨Ž•ŸixfWŒw¢ªu€PPuyœ©˜‰]gig¬Žž›fofk†˜¦ˆaeƒŸž™škgpe£‘žkw[e•£–„{ebyp› †¡]coo™¡«•st^\ˆ‰—xƒ^Zrt›šƒ“aekcœ¦“lmTl‰«£‚‡VY‰b©–ŒmakoŽ ’pubY‡†¡±|„lX||§¡‡…_gnm”œmze_”‚£u‚a^y€ ¤’“gmenŸŸ›—d{_]“ƒœ£~‚ZVrs˜£Œ`kjiš’“¦tid]“¡œzZ\{z“Ÿ’š]Rpl…xusƒ€†w}rv‚y…‡u…{z„vƒ}y„x€„z††y…€|‚‚v~{tˆ‚z‚z‡~‚r„…ƒ|~y|ˆƒt„o|ƒxzƒ„vvƒ†‡ˆŠ„vƒ†zƒ{Šx}‚…|ƒ€z|ƒ}‡~}€uw~€~‹y‰~ƒ~y{zz†}|‰y‚~xxvw‚m~ƒ}zƒyvz|€€w€€qŠl€•^劳ÿá0sÞÿHÿ£åó™ÿ7ÿÏn T­ûÿyÿ̾ÿjÿò£F+ÙÿAÿ¨ëï“ÿ@ÿÌtW«ý!ÿpÿÔÃÿdÿí£D"‡×ÿGÿ êù”ÿ9ÿÆuP³õÿ{ÿÎÆÿbÿôšF+~àÿKÿ¥áô•ÿ7ÿÎm![±þÿ|ÿÓ»ÿjÿ ì¢<.ƒÛÿLÿ«éõ‰ÿ:ÿÆnY¹ý'ÿwÿÚ¿ÿZÿê›?2ŠÛÿWÿªßþÿ/ÿÃcW¾ÿ$ÿ†ÿÕ´ÿ^ÿë”=9‹æ ÿRÿ¶ß÷ƒÿ.ÿÅ` d·ÿ/ÿƒýã°ÿXÿ +à42œã ÿ]ÿ´Þÿÿ'ÿ·g dÈÿ2ÿõÞ±ÿQÿç‡5?’òÿ_ÿ½Ðÿÿ#ýºTqÅÿ7ÿ’úè¤ÿOÿՇ%A¤îÿdÿÁÔÿsÿ#ÿ¨UrÒÿ?ÿ—íë¨ÿ@ÿÙ}*K¤ùÿoÿÃÇÿtÿó«H#zÓÿ=ÿ¢ñí•ÿCÿÎyQ­ø"ÿoÿÒÆÿbÿñG&ƒÜÿMÿ¢áù•ÿ1ÿÉg U¶ÿ!ÿ€ÿÓ¶ÿcÿéš:4Šâ ÿNÿ³âù†ÿ5ÿ¿h bºÿ0ÿúâµÿVÿå74•æÿ^ÿ²×ÿ…ÿ"ÿº`hÆÿ-ÿûܪÿSÿâ‡-A•ðÿ]ÿÂÕþzÿ&ù±UtÈÿ;ÿõì¦ÿBÿփ%C¦ðÿlÿ¿Åÿoÿý§M%rÖÿ:ÿ£ìëŸÿBÿÑvS¦ý ÿoÿÏÄÿdÿðªC"†ÓÿFÿžƒb©šŽrRg†…¥žŒhUtu˜›—[dn^‰— pu\dˆ‹©[_mu©™Š›Tlhi–†œ–tW\„Ÿ „}abzp¥›•”]rlg—˜—›ruccˆ„©{yv}ˆvƒ…t‡†vy~„ƒŠ„‚‚yx‰kˆ{„‹ˆ…s}…ˆ„vp|u„‚…}zyz€Š‚z…ƒ}…j„ƒ€z{~‚€s||l…~‡ƒy‹‡ƒŽm{}ˆ…zwˆ}Žt†xu‡„w{yz‹€ƒps}w†|‚†ƒ‡yx‚}t„zy„€~‹…ƒ…„–€{}€x„~ƒ‚†ƒvv|{}…ƒ‚€o‡‡y‹†}‚€o{{w…‹|}‚„‡|€yv‡‡‚}z‚rvˆx~‡{x‡{zrzz‡rŒ‡€‡tz„€v€t‡„€‚|…zm€‚€‚†ˆ„†‡zz†ƒj’ž†‰W_rh ž˜—ccii”£–vsZa…„©¤ƒ…]^|~¥¡Š›nbedŽ™“ gx[`†›¦}ŽT]srœœŒ‹c^ln›ˆ£¡h{^Dˆz¡§…Z_vm¡“•`mi^¡‰˜¦mpXW‹§[hxv ž“•^ehX•—›§lpf`ˆš ……^]{o¢œ™ dvma›”Ÿ“xp_Yz| ¡|”ccxm¦œ”˜kcg_¡‹´(øl¯ÿÝ*7e¼ÿ-ÿÿÚ²ÿ^ÿ æ•8.“à ÿQÿ±äýƒÿ0ÿ¿j _¸ÿ-ÿýÚºÿWÿê“>1ŽâÿXÿªÛÿŒÿ+ÿÂdY½ÿ%ÿ‡ÿÕ´ÿ\ÿ í’79‹è +ÿQÿ¶Ý÷…ÿ/ÿÅb e¶ÿ+ÿƒÿß±ÿWÿ +á–13–â +ÿUÿ²Þÿ…ÿ/ÿ·h a¿ÿ/ÿ…øÝ·ÿPÿ +èŒ8:‘ëÿ\ÿ´Øÿ‰ÿ'ÿ¿ZgÀÿ(ÿŽþÞ¬ÿUÿã/>•ëÿXÿ¾Ùÿ{ÿ*þ¶[ mÃÿ5ÿ‡õë¬ÿNÿ܋.<›è ÿfÿ·Òÿ{ÿ"ÿ°ZiÎÿ4ÿ˜óâ©ÿKÿ݁-IšôÿdÿÃÍÿsÿ ÷·LvËÿ8ÿ”óð ÿLÿÏ$E¨îÿlÿÅÓÿlÿö©T#vÓÿAÿ—éîŸÿ=ÿÖs(K¨ûÿsÿÏÄÿrÿó©A(|ÔÿCÿ¤ðï‘ÿ>ÿÎvR²ù#ÿoÿÓÆÿaÿðF(ƒØÿQÿ¦å÷—ÿ0ÿÉjSµÿ!ÿ|ÿÏ·ÿdÿ ð™?5‹àÿHÿ¶ßúŒÿ4ÿÅh `²ÿ/ÿÿÜ·ÿZÿæ–8-–âÿXÿ­Ýÿ†ÿ'ÿ»e^Äÿ-ÿˆúÚ°ÿUÿç‹5>‘í ÿXÿ½Ôý}ÿ'ûºXnÁÿ3ÿŠúê¨ÿMÿٌ'>Ÿëÿfÿ¼Óÿuÿ ÿ«WnÐÿ8ÿ—íç¨ÿCÿÚ|*IžûÿlÿÆÇÿrÿô°I}Îÿ;ÿóï—ÿCÿÌ|N¢ÿ¾SuB¥‘vŠ‡qƒzyz…ƒ„{€z‡ƒ€yŠ†‰v‚‡}ƒ††w†{‚‰{„|zˆ‡~Œ‚€ƒ‚†w„w‡‹‚„|‚„sƒ†vŠ|…„‘xkRx›žŽ^e~p›œ‘“bfjoŒŽŸ«xsX`~Œ§¡ƒ†V]so§—Ÿ—ve_c‹¦¦u~iW„ƒ¡˜…`^vp¤›”wfhg“¯rgZ’¤ªŠˆ^Tx€ ‘–igc]’‚¤¨lyeX…†¦†‰]cbo¥œ˜œ]j\[‘†œ©nj_\{~™¨„druuŸ]pkdŒ—’¡sm^jƒŒ¦•‚Rbmršžƒ©^mh^”™Ÿ›x`WZy†¥Ÿ‰Xdd£’“oisd–ª›ppY_€‰•¶…Š`[xj™›am^h‹Šž˜q~`YŠž€ƒx…‚€ƒ|{€{|‚vŒ}{~w€ƒ|ƒ‚€Žy€ƒƒ|Š€y†r|~‰€u||€z…ƒu†x~‚y…‡„‹v}€xƒ}sƒŽ|€…mƒw‡xy…‡„{{‹y‡v‡ŽtŽ{‚v{su‡„Œ„{z’Š‚‹’yƒ‚i‰|}Š„|~x~…‚‚€„ƒw~u†szƒ‘ƒ…‡|…vƒ†x~ˆp}~yy€‡‡„~‡|ˆqy‡x…€yvˆy‚Šiª|Iÿ$úקÿ‰ÿ-ÿÆf ^·ÿ!ÿ‚ÿØ·ÿdÿ ì™:3†áÿKÿ¯ãõÿ:ÿÇj`µÿ(ÿzÿÙ½ÿ`ÿèŸ:+ˆÙÿPÿ§çûŒÿ6ÿÁj +U¾ú&ÿ|ýÔÁÿ[ÿî—C3‡àÿSÿ§Ýúÿ/ÿÉdU¶ÿ"ÿÿÖ¸ÿeÿè™;4ŠßÿLÿ±æô…ÿ3ÿÊg `¶ÿ,ÿ{ÿß·ÿ`ÿç–;-”ÞÿUÿ¬ãþ‰ÿ%ÿ¿m\½þ)ÿyÿé«Á¼†¤sWet¥ ›]oikŸŽ“ `p]\ˆŒš¢x…d`‡z¦ ’›^gld›š˜•kpa^‡€–¢„xWf{„€j†€u…tƒ„‡˜}‚{ŠnŠy…z}†y}~~ƒ‰|…‚†n}…q‡|}…‡|‘v‚Š{z…y‡q{w‚€z{†u}ˆu‡{x†…Œ‚wz„Šr†qu}‡yˆƒ„}€~“~„vq‚„|„€~‰w~{{…Ž|~}r…‚„}Š€|†yˆ€„‚o†ˆ‡Ž}Œ}|™{x„~†}rr€z‚uƒˆ‹Œ…~wƒ„}w||v„€{‚„|ˆ‚„Ž‚ƒ~ƒ|‡xx…€€‚€…{uz|~{‰||‹}ˆy‡|x~r…~x{‰…{~„ƒzzxwƒ{‚ƒ…y†}”‡€†}ˆ|zŽ†…„z€rytx{‚|‰z…‚Ž{~ƒ‚~q}…x€l~{}~…ƒ~vŒx‰€{~‚q€ow}x†yy€ˆ{v„n‚ƒ€~…‚y†‘…|z~u|ƒz‚wy†…€yv„‡‚t{„wŠ‚yx‡‡€ˆy|„m‚v…~…x|‹ŠŠ†‚y‡€…€u‰w|†{|y{†m}|||ˆ‡†…zŠ}z}{x‚}…uƒp‰Œ„~~}‰~z~z…wƒ~‰†~l¥dκAÿ~SÜîÿYÿ¶àù…ÿ/ÿÂb e»ÿ/ÿÿÞµÿYÿ +á“8/–ßÿVÿ¯âþ„ÿ1ÿ¼l ^ºþ-ÿƒùÛ·ÿXÿì<0èÿWÿ°ÜüŽÿ'ÿÀga»ÿ&ÿ†ÿÕ®ÿ[ÿê’27ˆç ÿPÿ·Ýù‡ÿ0ÿ¾c +g»ÿ,ÿÿà³ÿTÿ â–31—âÿXÿ±Ýÿƒÿ,ÿ·e `Åÿ,ÿ÷Ý·ÿOÿæŒ6:ï ÿ[ÿ¶Ôÿƒÿ&ÿ¾[mÀÿ+ÿŒÿÝ©ÿUÿ܎2>™êÿ^ÿ¼Üÿvÿ(ÿµ^lÆÿ8ÿ‰ñêªÿKÿ݃0BŸí ÿgÿ¼Òÿ}ÿý±T mÎÿ7ÿ˜öã ÿKÿÛ'I óÿbÿÊÎÿpÿ ö®N{ÌÿAÿ—õî ÿ;ÿÐ~"D¯óÿpÿÅÈÿoÿþ¢L(vÚÿAÿ¤èí™ÿ<ÿÕp!U§ÿÿqÿÏ¿ÿiÿì¤B%ˆÕÿIÿ¦íöÿ:ÿÆs U¶ù$ÿ{þÓ½ÿ_ÿò“D/…äÿRÿ®Üù‘ÿ.ÿÅea¶ÿ%ÿ„ÿÞ¯ÿZÿä—.6Œâ ÿTÿ´Þÿ‚ÿ1ÿ·e eÃÿ5ÿ‰÷àµÿKÿ â‹5<–ì ÿbÿ´Îÿÿ!þ·WkÇÿ1ÿ•ùã¥ÿRÿօ(EœñÿdÿÃÕÿmÿ#ú¯UwÍÿ>ÿ‘ìñ¤ÿ@ÿÕ|'D¨öÿqÿÄÅÿqÿö¦G'xØÿ?ÿ¦ìî˜ÿAÿÐvV¬ü$ÿqÿÒÄÿaÿížD$‡ÝÿEÿ¯¨pšn–zz~€x{‚€†u„‰€sˆy†ƒ€|†Ž|u~Šƒy‹vx…w{}„y†~ƒŽ†v{x††ƒt’x‚{tv‡~Šƒwƒzƒ~w‡ru|vn€vtsŒ‚ˆs…Š{„††‡tl|…€|q}z†xq€|„…y‹‹†zˆ}vˆƒ‚ˆ{ƒ||{}€‡Šˆpy„z…‚€Š|k†|€†uŠ‚†…ƒ‡‡tƒpyz~sz…†yt‹ztˆƒ…}~zt‚x}„tvˆ€‰{{††s”kŒ}‡…‚…‹‡{”„y‰pp{†„xrˆƒ}„z|‚}‚€yo{€€„|‚€€o€|‰xƒzƒv€zy€„y††|~~€ƒ€vt{x€~yz„…z„€|w…x†~„€‚m|‚€z|}w{~…}}zƒƒ‚…Šp…|x…u…ƒ{†„{…{tv}wzr‹}wyvx‚{v‹}z|†ˆ‚…ƒt„x„}}t~€xv‰€Žƒ„t‚‚|Š€z‚}……‡„ƒ~‰ˆu‚}‚xx}yƒ{tx|p‹Š€Š|{{ƒ€o„‡‹†‹zl}…s~{wz‡‰~v…}{ƒŽ‚wuz‚„z~j~‡{…€||‹yƒ|w„…‡Š‰|‡z„{Š^8H¤ÿ€¬ÿ"ÿ ä¡G$~ÕÿHÿžëóœÿ;ÿÏo"J°÷ÿuÿÊÈÿmÿö£L,yÚÿBÿ¢êìšÿ>ÿÖp!P¦þÿpÿÏÃÿqÿï§G"ÒÿDÿ¡óï”ÿ?ÿÎ{Q¬ö!ÿnÿÏÈÿfÿô J#×ÿJÿéõÿ7ÿÌv + O°øÿxÿɾÿiÿ÷ B,{ÜÿCÿ©èï•ÿ;ÿÌm Y­ÿ%ÿvÿÑ¿ÿ`ÿë¢=(ŠØÿLÿ¥ïô€ÿ®˜‹tB–•Ÿ¨†]Ytr™¢‹—ihlb‘“¢”c‚nƒr…x„†‹z¥x•„|‰ƒ„’~vq‚~vˆ~ ‘w}…}wˆ|š‘w€wtq†Ž€ol†~|€€‚y„‡ƒw„Šn{‰}‰{|‚€~}‚€‰~’„|m}u„yˆt“‹€Š‰|~`‰y…‡…‰–‘‰™ƒz„„z€ƒ“fƒŠ|‚|‚i†tŠ‡ˆmu—Ž}‹olt‡…v“qˆ‰zŒy€~du|‰|x‹y¤w…‚{ƒŠ€t…}ˆ†|…yƒ€‡—‚Žw†‡~}}€sŽyŠzx~…r„u’‚uƒz€z‰}oxtnƒuy|~zu…yzˆvx„uxoƒy}zjxŒ‡~yŠ€~†{†Žr…Žw‘‡~˜Œƒƒ~‹„‚ŽŒ‘Žƒ‰„Š{…„žu‰|~„Œr†ƒ•x˜w…v‰€‰oV…‹‚u~w{|y“hzy|{€wv…€]xm€|‚uƒ„|‹|‚‚}{‡‹}wr‹wˆ~ƒ{wl†~‹’‚†~…Ž…Ž„†Žy|ƒ„†|ƒo„tz‡…€u}€‚Ž‚†x„~yŒl‰…†€Žy‚gŒ…Žz{sl}‚zw‚{‚–z}o‚…{tjq†y‚wx{‹tžuxsƒ}ƒyq•¦†Šƒz¥(ž4ãÿ¯²ÿŠÿ?ÿØy)J¡õÿjÿÄËÿzÿö¯Q +xËÿ4ÿòîŸÿIÿف(H òÿaÿÉÎÿvÿ"úª]{Èÿ@ÿ’ùç¥ÿEÿՊ%@£îÿjÿ¬Òÿsÿ ÿ¦`pÐÿ;ÿ˜ïèªÿCÿۃ/Eòÿjÿ·Éÿvÿý°ToÌÿ5ÿšöç¢ÿJÿڂ)I¡÷ÿcÿÆÐÿmÿ"ø±PwÈÿ=ÿ’òï£ÿ@ÿӂ$D¤êÿqÿÂÍÿuÿ'ÿ§S$tÀÿ;ÿŸëêŸÿMÿÚw'P¤úÿnÿÊÁÿtÿ&ø«G"}Ñÿ?ÿžòð–ÿIÿÍ|O«ôÿoÿËÌÿeÿõ¡K$ÙÿJÿ åö›ÿ3ÿÌp!Q±üÿ{ÿÍ¿ÿjÿôŸD-ÞÿEÿ¨êíÿ>ÿÏlZ¯ÿ'ÿtÿÙ½ÿaÿé™<*‹ÜÿQÿ¦âþŽÿ3ÿÄp U¾ý&ÿ‚þÔ»ÿ]ÿ +í“?6ˆí ÿQÿ³Ý÷‹ÿ/ÿÈ``ºÿ*ÿ‚ÿß±ÿZÿâ–15–á ÿTÿµàÿÿû·d +cÇÿ4ÿŒøÞ´ÿOÿ +ç…48“çÿ`ÿ¶Ñÿ‚ÿü¸YsÁÿ+ÿ•ùä£ÿQÿۉ#DžïÿaÿÂÕÿrÿ'ý¬UsÍÿ;ÿéô©ÿ>ÿՄ*C¤óÿmÿ¾Çÿtÿû«G(pÕÿ:ÿŸíëŸÿEÿÒyR¥ùÿjÿÍÈÿfÿñ­F#‚ÓÿFÿšëõ™ÿ=ÿÇrL´öÿ{ÿÎÈÿnÿò«µ¶qRfapžž‘–jmai‘‡Ÿcy[_¨ª„‡Taiq£• “jzraŽ†“§zrTtƒ­•‹ŠY^l\¦€¢eeck™’Šzt_Xuz¬¥‰zjXuf—™’¥iƒnk“‹©¡€q[]gq– }ˆKnhiŸ˜‹•hla[‰›¡n„Yg“±ž‡‡aWxmš“—elUb†Ž d{ZYtž{eOtv––“ok`j††¤žmy[[w…³Ÿ‡“`bhe¦ ‹¢ddg\“Š ¦ŠotVyªŸŒ…Yq^hœ‹’fpekœ–¡©…xXZ}r™˜‡Sfji£—‰ anlb’ ˜„og`~k š„“]||z‚|ƒ„|y}vv„}x…k€†„ˆ‡~‚…kŒ}zxy€„ŒŒy…zx†zgŒ‹|…u†|…‡”t~‚‚ˆxƒ„skzzz‚p|}t‚„ƒƒ€{ˆh™†}‚y†‹‰Ž†}{~„|zv€†€‡wƒy†‡y}„|€n}~‘|{yx{{zy‚x„‚jƒ…|†„~vq~Šn‹€s‡t|Š€ww‡ƒ~x€‚n~~‰€x‰…l‘|…Š}}€w~}‚yvy{ƒr’‚‚„ww‚”„||€{Š…Št‡€u…ˆƒ{ƒ„y}†{~z|«PYÿ=éêkÿEÿåŽ88èÿWÿ³Øý‡ÿ+ÿÁad¼ÿ%ÿˆÿÚ³ÿ_ÿä”66‰çÿSÿµâøƒÿ1ÿÄde¹ÿ)ÿ|ÿá¶ÿ^ÿ ä—83ŽÛÿZÿ®äþ‡ÿ-ÿ»i\Äÿ+ÿúÙ¹ÿUÿ +ëŽ=5ŒâÿWÿ³Ûûÿ+ÿÃc]¼ÿ*ÿ†ÿÖ¯ÿ^ÿè“28æ ÿMÿ¶Þú„ÿ1ÿ¾de¹ÿ4ÿ…ÿݵÿPÿ á33—æ ÿ\ÿ©×ÿ•îÅun¢xl˜€t„|||t|‚tz‰ƒr{‚…ˆnz‚~ƒ€|zu’‚}|~‚„ˆtƒ†ˆƒ‡|ƒ†…sz‚}zytn|ˆtˆƒ{‡‡x|ty”nƒ‰r’ƒ|‚qy€w—{„€€|€qy•‚‰y‡„…‚“‹w„rw…‹†t…vwzrŠˆ€vz}}}g‰‚ƒ|s€rzƒ…Œˆ…zy†…wqyz|wrnŒˆ†~ƒ‚„~‹ƒƒx…„v{x€v‡|t}€vƒ~‚‰Š{„{~‡Švut†ƒlxp„xŽm~ˆy–w}…ƒy•}ƒ‘†~‚}‡…~‚‡b„„y‡d–‘Œ¤Wckh Ÿ¢’n~ew•Š›®rrjO‡u¬ Š_`xk˜œˆ™jib_‘¬–uy\\z{›~gZvs™¢——]l]e‹ƒ›«u}`V}ª¤ƒ^rkj£“˜˜u`fJ“˜šƒs_We¥£ˆ‡[clq’~¨‘itiaœš¢zhja‰¦£ŽThbhš¤“•n_o`~¡q}Vf†…Ÿªƒ\Urg Ÿ˜kl\n•‹—zzS\~~“§€gWtm—¨’¨dk\]”‚¡£s…ZN„z¥‚ƒ[Y_s—“’“Vn_gvŠ–¥z\U„q¢›Ž‰YhlŒ‰|}xˆ~€ykr€yr~z{€}„€€zl—?Y ÿkÄÿïÀ‘51”áÿ\ÿ±ßÿ†ÿ0ÿºc\¾þ+ÿƒúظÿWÿ ì>4‹éÿWÿ¯Ûûÿ*ÿÆa\¹ÿ$ÿ‚ÿÓ²ÿ_ÿé–97‹ä ÿPÿ´áö‰ÿ2ÿÃf +`µÿ+ÿ{ÿáµÿYÿ ä™7/”ßÿTÿ­äý†ÿ/ÿ¼i\¿þ+ÿ…úعÿWÿ ëŒ<8çÿWÿ²Øý‹ÿ(ÿÁ`e¼ÿ*ÿˆÿÙ®ÿ\ÿæ“08“æÿRÿ»ç÷uÿuÑ´Ÿf…t{‚~‚‹…ƒŽƒr–|‘z‚u‰q†~Š~‚Œ‚„‡‰i{pw„xtyuuoqhw€oŒ{{inz~‚uŽyr„s€„ˆ†}„ƒ‡…}y‰rƒ„ƒ„‹{„{‡~…z‚s~Žq‘wˆywsol{‚qwƒzyvuy}{pvyy‰€~{}‡ˆ‚{‡€€z‡n†z€‡{ŠˆvsŒvŒ‹wx„ŽƒŠ}}~|{€~…€~…Œ{ƒ„‰Œ|z„z~}€„™}ƒ|z|l~{‚‹|z~}‚„yfŒž—¦umccŠ‡¢–…ƒWb}t¨˜Šg`ia›™¡˜klrZ•Š¬žu_`ˆyª”™eYfn™–Ÿœ_iWhŽ„¦¦tsW}œ¢Š‡_Zi^ž™£axZZšŠ¦v‚QWy}¢Ÿ}‹Uclm—˜Ÿ¦ps_Q„Ÿr|Qdsy—­€`fro•‹cq_fŠŸ¢†^_wuœžŠ‡[_ji˜—†žb{tg ˆ›œ|z\T}k  uŠUcnh•š…–p[hf‹ˆ§©m‚aIswŸ©‡‰l\_‹‘˜–_nWXŠ…©–}ƒ`Z…‚±¦‡ŽWbprž¢•–_f~Œzt~y|wq}ƒˆs…~y‚ƒvp”}…€xƒ†{†Šq…ŠvƒŠu—‰}§—"¼ÿ…Ûÿ½ÿlÿ÷¬N#zÏÿDÿ–ëòžÿBÿÓ{(@©îÿjÿÁÎÿtÿý¬V!pÓÿ<ÿ˜ñå¥ÿBÿÜz,G¡óÿkÿÃÊÿ{ÿú²N tÍÿ6ÿ˜÷æžÿLÿ؀&I¡òÿ`ÿÉÏÿpÿ!ö°PxÊÿAÿ”ôî¢ÿBÿÔ|%@«ïÿmÿÁÎÿrÿù§U$rÓÿ?ÿšìéÿBÿÙ{)K¡ýÿkÿÄÃÿtÿñªK }Îÿ=ÿŸóí—ÿAÿÓ~N§ôÿiÿÍÊÿkÿö M€×ÿGÿŸéóŸÿ7ÿÎw !O®÷ÿzÿÉÁÿkÿ÷ B,|ÜÿCÿ§èî–ÿ=ÿÉoY«ÿ%ÿvÿÔÀÿ_ÿë¦<)†ØÿKÿ£áÿÿ8ÿÂo U¸ú#ÿ~ÿÒÃÿ\ÿ î™A3…çÿRÿ«ÝøŒÿ2ÿÊa a·ÿ#ÿƒÿÛ´ÿaÿã™55‘á ÿUÿ²ãüÿ1ÿ»gcÁÿ0ÿƒ÷߶ÿPÿ åŒ99–éÿ_ÿ´Õÿ…ÿ#ÿ»YiÆÿ/ÿýߦÿTÿވ,Bšíÿ\ÿÀÖÿvÿ(ü±YsÈÿ>ÿŒõë©ÿEÿ׀+@£ïÿmÿ¾ÍÿxÿûªQ%sÒÿ;ÿžòæŸÿFÿÚx"O¤ùÿlÿÏÈÿmÿñ«H"‚ÐÿHÿëö˜ÿ:ÿÊx +L³÷ÿyÿËÁÿgÿôšF.€áÿIÿ«âò“ÿ6ÿÌj_±ÿ(ÿ|ÿÚ·ÿ`ÿ å›:(ÝÿQÿ¬âÿŠÿ0ÿ»±¨†u[fw¯¡ž„glpjœ’žs‚o^}†¢{ˆaUps¶“’Well’œ“_pc\˜ƒŸ¨mcbržœ’~W_e\¢Œ”£bmt_•š£yva_xw¦Ÿ‘][sKœ]l^hŽ‘±œ{\ky‚¢œ›csv^Š“‰¤nsG^§„{TYh†¡¢~¥[gm‚‡¦ž’jrXfŒ“ªt‚ZT{u¥¦~_Vgi ”™al_f“££~u_]y›¤ˆ†lfmr–‘•žnurbš ¦|_Rsw˜ž•—Tia~œš• nqbi”}Ÿž|ˆ^Vvƒ®Œ›Icnh›™¥mmN^‡’¤ŸŠqWsy€ªš“—\Yegœƒ¡tq`e‹†œ–l}W`~lŸ…—k\vg˜•¡’or]eˆ„¤¨z‚WXxl•¦ˆ’f^lm”¡•s|NY‡zŸ©~zicnƒ˜¢–‘abkh™‰®¥kva`‡ £†^Rxr¡¬”‚TcdmŸ‰›§ojcJŒ…œ©ƒmWdoƒ—¢›\ugn“—¡irdY‘ª­†{\\sw•‡^g`h¡¬nw]Vv¢™ŽŠld~ršž‘¢dfg^•š˜jwqoyyyŽˆ~„qˆŒ‚ƒx‡xkptƒƒ|‹‰‚{‰–vww}‚y…kx€‡tˆ‚ƒ„ˆžˆŒáÄ +¼ÿpÿŽÿÔ¾ÿcÿôšB/àÿJÿªãò“ÿ6ÿÍmW®ÿÿwÿϼÿhÿï£?*ƒÙÿEÿ©íñÿ?ÿÍtVªü#ÿoÿÔÃÿcÿî¡E$„ÔÿLÿ êø–ÿ8ÿÉu N´öÿuÿÌÅÿeÿ÷›G-€ßÿIÿ§äñ–ÿ5ÿÏm X¯ÿÿwÿϺÿhÿì¡?-…ÚÿGÿ©êôÿ:ÿÉrY³ü&ÿtÿØÁÿ]ÿí›A(‹ßÿEÿ¸Á¤`ˆ}u‚ˆ}‚x~|zƒvxz‡|‹‚~ƒ€ˆt}ƒss~€}…{~•v…z€~„„yƒ†mƒn†s€|€ƒ‚b…‚}~„y‹k–x€‚„€‚h‡~v†„ƒ‡ƒ~‹xr€‡“z‚|m†u‡x€—†…|x}…€xy|†ƒu}†€†yv‚|z~|yƒsœ„}€€wˆ‡„ŒoŠzy‡x|ˆ|n…}„Ž{ƒ”„u‰qqƒwu’‚€vŽpŠx‘l‡š€bsJˆ‚› zƒUrŠª›šler\•–™¤lrc\|¦Œƒ€a\€r£–‹phqj‘ ‘˜cn]_‚£ž‡€Z^€qž£…oavhŸ™š]ie^‘“¯„…dpyˆ¬§ˆ‚fghj …™™Yu_r‡‘–›‹fSvq£”™ bmle¡šŸŒ_y_k|z¤¬xm`Š š‰‘]jtn£Š™tkc_Ž˜® †{jcƒo¦‰”Yekj›”›•elc`ˆ†¨~Ž\Ywt¤’}–`htd‰£¢‰ma_R‹…™£px[U€–¨~Š_mqy’Ÿ“mzcbŒŒ‘¦‚{wW€€¦¯‘ŽjscnœšŸ˜inhZ™€¡¦saP€x¡¡Œ€bbug›Š›¡gqfU‘›¨ˆsUapv”Œ€ŒLa]lœ“‹™[r_\„€ÀP敁ÿ¿y íÿcÿ¹Ùÿ|ÿ(ÿ´^gÉÿ5ÿ‰õâ²ÿKÿà7<–èÿcÿ¶Öÿƒÿ$ÿºZbÃÿ,ÿŒüÙ¬ÿWÿã‹5A•ì ÿWÿ»Ùûƒÿ)ýÀZg»ÿ2ÿˆÿà­ÿTÿސ06äÿYÿ·Ýÿ~ÿ-ÿµb gÂÿ3ÿ‰õâ³ÿPÿãŠ6:•éÿ_ÿ´Òÿ„ÿ"ÿºVeÈÿ,ÿúߪÿSÿâˆ+Cœîÿ[ÿ¿×þuÿ'üºd:gL‰–^‡–p}Œt”}sxz}z{„˜p…„}‹o€y€zusx‚}‡ƒ~†vy}ƒƒ~†v}‰t~„€v‡‡†„{‚€}‚~}|}z„}€vŒˆxwƒƒtr€z}Š€}uq…zy~ƒy|€„ˆƒ|†{‚|€}†r„xˆsx†€luz|~|ˆ}„znˆƒyzs~„v„{‚‰€ŠuzˆpŽ~{€}€u€€…€~sŒ‚žz]pe—™£šqvReŠœž{vjT„q›¦‡•[pif˜ŒŸ•fl`QŠ{¢ž…~ZUv|Ÿœ›‡^dls•”³evnbŠzœ¨kZTuxªž‘™_Xp`«™—¤rWfh‡¥˜¨‚‚a^lu¡«Œ•eisnœ¦•“~f_`|‡¡šs‘Pr{t­¥‡£QXnjŠžš›juc`Œ›œu†eh{qš›ŠŽb_hb”¤œnoiVŽ‘¢|yfWsy¢³–ˆcdqj™œ‘Šnab]‡‰¦¤wzUMr§£ŒŠwhq|’™“bwTj…Š¶¨Žt``o‰Ÿ• jbm^¦’…yxvz‚……p~vs†t{~{€ˆxˆ„x†{s{p‚|w„‚Œ€ˆ‚‰~j†{}{z‡}uuuƒzŒ€zy‹ˆŠ€}}ƒv„‚xŠm‡†‰z„}u „ƒyƒ|ƒz…x€Š~w’Wzsð&ü×Sÿª}81àÿVÿ­âûÿ0ÿÃhW»ü"ÿ€ÿÒ¸ÿ`ÿ ð–B3„âÿMÿ«áô’ÿ0ÿËg X²ÿ"ÿ}ÿÔ·ÿfÿ ëž?/‡ÜÿIÿªêòŽÿ;ÿÊpZ²þ&ÿtÿØ¿ÿaÿëž@'‹ÚÿQÿ¦çú‘ÿ7ÿÅo P¼û$ÿzÿнÿbÿñ˜F3„àÿNÿ®àõ’ÿ2ÿÎeX²ÿ%ÿ}ÿÖ´ÿeÿ +ç™:/ÜÿJÿ±åø’ÿ(ÿbÍÌuaTN€yš±ˆz_cvj¡’”–doNi•£¢‚}\U{©¤ˆˆY\sq¢’Š›ecmT“£›{y]]ƒ|£¬‰Xeymž±‘f[heƒ›—•hzY`~~®‚u`„k”ž˜–ru^z›ˆ¤žssab‘t¬¡„ƒgitx›ˆ“˜kb`hŽ‰§›brT]Žy¢ }‡__cn—–•ŽYlX]ˆ€s€r„‚}yxŠ}…{„…ŠzŽ‚ˆ‰‚…€…€{‚˜†ƒy‚‰‹xv…}‡ˆ|…w…‹r›{}t€u‚{}’•tzy~~z~„~r{r~†{nŒq†rv‹‡v’ƒu{ƒ}…{~‚Š‚‘€€{p†~yx|x‰Œy{‘v†|v‘~€ƒ~…|‰‡‡…~|…{‚ˆ‰„x…~|ˆ{€}‚€‰ˆx„~{x~z|wn†Š†„‚…€…zˆ‡{}€€ƒxps€vƒ|voŠ~}‡{~s‡r}€€||‡{jyt†‰uvz|~…uv„w†x‹€}‡~{}r‡‹sx†{ˆ…uƒrx~…|‰sn†‚{zq€ˆ}ƒ„y‡‡‰Œ€ƒ}…xvŒ‹‹‡ƒƒ}t‡r€ˆ{‡t€nŠr„ƒst“zˆ‚{‡z~€qu‹‚†u‚‡}€yp‡q‰~}{‰‚†‹|‡ƒ”L¯ +AŽÿ_ÚÿŸÿeÿö¤N#|ÓÿDÿ—ëòŸÿ=ÿÓy%FªõÿqÿÂÉÿrÿû¦L$sÖÿ<ÿíèŸÿCÿÙw'O¡ùÿkÿÅÈÿsÿö²IyÌÿ:ÿôí›ÿGÿӀ K£ñÿfÿÊÍÿoÿ!ù¨Q{ÎÿEÿ™ïï£ÿ=ÿÓ~$G©ôÿoÿÂÅÿpÿù¦O(xÓÿ:ÿ¡ìêŸÿ@ÿ×w'O£ýÿnÿÈÅÿmÿò«F Ñÿ8ÿ¤äÊÒX‹yGq{—š•|_f\wˆŠ—£a“b`“†¢£ƒ|Zf{|«šŠ—ogql£ cmc_Š„ž˜yZe|~¦˜’’Xhld—ŽšªtwbY‰‹¤¥{{]fqz—œ‰žVgnqš”¢reY]ƒ… šzƒZZwr¡¢†š`eit†š– ms\aƒ€‘ y‰Z]‚Œ€†v’qz~†Œ{„‰~n…z†|…w||‚vn†t~‰o~x…‰}‚‚…{x€†tƒ…‡‹~Ž‡’rz‚|…ŽxzŠŠ’„}„€y‹‡…w€{~‚‰z}|‡|ˆry†…{‡}tˆy‚††zƒ~‰ƒ|w‚Š}„z‚u|‰ƒ~}|“n‹Šy|‹z’ƒ}yl„Šyƒ€†|‡†yz‚…~y‹v€}……ˆ†u„~…€€‡ŒˆŽŒ}z{€ytŒ~ƒrt|}z†{‰}q}{{‡xƒ|xƒx†~Ž‡…vwp|€xu~}€€‰ƒˆŒ{‚kiš¢–£vfYw‘|”q`Z]ƒž­}YPjhš˜š¡cwok‡˜ž£yxb_•x¡‚‘\cqf‘˜“|i`bb‰›­kc[Š„•‚…Z^dl¡¤pmgb••š£m†abˆ}©™‰Tfxl¦š›fam\ŠŠ ~yZf{‡¢‰‹xIrJÓº•ÿµ$ ‹¦ôÿ`ÿ¾Ñÿvÿ%ÿ¬XnÆÿ:ÿ“ôä±ÿDÿ݇/:ïÿdÿ·Îÿ~ÿ"ÿ´[ iÌÿ/ÿ•÷ß­ÿPÿá†1@“òÿ^ÿ»Ñÿ{ÿ&ú¼XpÂÿ.ÿ‹úè©ÿSÿ܍+<šèÿ_ÿ½Üÿwÿ*ÿ³^lÉÿ7ÿ†ôç­ÿKÿߊ1<šê ÿgÿ¸Óÿÿÿ³X gÌÿ3ÿ“öá§ÿNÿá„-H›ðÿ]ÿÅÒÿzÿ#ù¸P sÄÿ:ÿ‘úé¤ÿJÿֈ&?¥ëÿdÿ¿Ñÿtÿ$ÿªYrÎÿ=ÿ˜íé§ÿEÿÞz+@ ÷ÿjÿÀÆÿwÿô¬Q wÏÿ4ÿœõè—ÿFÿÕ}I öÿiÿÌÌÿjÿõ¬M}ÓÿFÿ˜íóœÿ<ÿÐx"I¯ôÿvÿÆÇÿnÿö¡E*xÜÿDÿ§éí•ÿ<ÿÐoX«ÿÿtÿÔÀÿgÿê¢B&‰ÕÿLÿ£ëøÿ8ÿÂn T·ù$ÿvþÒÀÿ^ÿñ•C2†åÿPÿ¬Þ÷‘ÿ-ÿÆd ]¶ÿ%ÿÿÖ²ÿ^ÿ ç™42â ÿNÿµàþƒÿ1ÿºe aÂÿ1ÿ‚ù߶ÿQÿ æŠ67•êÿ_ÿ³Õÿ…ÿ#ÿ»XgÅÿ,ÿ“üÞ§ÿPÿމ*Cšîÿ^ÿÁØÿsÿ%û´VsÉÿ<ÿŽðî§ÿIÿ׀+A¥îÿnÿÁÎÿwÿú«U#qÕÿ<ÿ›ñç™ÿFÿÚx#Q¥÷ÿiÿÎÆÿmÿñ«G ~ÌÿN¢H±Gt{]„œ¥©swe\‰œ¢†zhTty›žŸc_[V”‹š¡xvgQ‚zŠ¢{Vrjp¥Ÿ¦šajl_”bvWf‡‡¨ ˆTdlp ˜Œ™lhdL‰—” jnR`‡§£}„Vgux¡¡Œ–b]cb”•¡›sv^_ƒ{£¦~Šqw„zxsz|…‹€z‡‚|}‡„}ˆ}ˆo„tu‚†Šz€œƒx†w~|‡w~~ƒs|€”„†|y}ƒ†u„k„„„~v~…y…h}ƒ€ƒyzƒ}………{~†‚‡zˆ‚†–~}…€„lƒy|}rŠ{€†€xw…~|~€zŠs€~zs€|}…†{‰‚‰|{ˆ|{…ysˆx‚‰~€ƒ„ˆ}xuy†‡}Œ…x|zŒ‡‡|ux‹ƒ‡pv€€‡†‚‚tŠs‰‚y‚zj…‰ˆŠxx~wv††Šwƒˆy€rp~}‚‰{…t}oˆ‹‚ˆsr}|v†‚’vXdx“£žkkdm™‹¦¡r]^ƒt“¦w”cVyr¢ž£Žq^_eŸšpwYf‡‚¡¤‰ŒZSuo›™•esca›¨®m~_Oxt¬”–€Tak{ž•œ{dgU“’š›m‡a_}‚¤£‡€dqtw”š“lrxY˜¤–tsXb†{¯¯‚’Vawj•Š¨S¥x…ÿ ܲÿ$ÿKÿ¡òé—ÿCÿÖz M£øÿfÿÏÈÿrÿô­L{ÊÿCÿ˜öíœÿ@ÿҀ E§ðÿhÿÅÎÿqÿ ý¦RuÑÿ?ÿœíî¦ÿCÿÛ~,D¦öÿnÿÂÊÿvÿù¬P"sÒÿ9ÿšòæ¡ÿIÿØ{&N ÷ÿeÿÊÉÿoÿô¯L|Ìÿ?ÿ—óðÿBÿЀ!D¬ñÿiÿÆÎÿmÿý¤Q#wÓÿCÿ™êî£ÿ=ÿ×x'M¦øÿqÿÅÃÿsÿõ¨J%yÔÿ=ÿ£ïí—ÿBÿÑyR§ú ÿmÿÏÈÿeÿñ¥G ‚ÔÿGÿžëö™ÿ8ÿÊt LµöÿxÿÊÆÿgÿö›E.~ÞÿGÿ¤äð“ÿ:ÿÏj^±ÿÿwÿؽÿkÿé¡;+‡ÙÿMÿ§ëø‰ÿ5ÿÁp +W¹ü(ÿxýؾÿ\ÿî•A3‰áÿVÿ­Þú‘ÿ+ÿÆcZ»ÿ'ÿ…ÿÖ²ÿ^ÿå•57‘ä ÿPÿ¸âùÿ.ÿÁb e»ÿ2ÿ‚ýàµÿOÿ â64šè ÿ^ÿ²Ûÿ„ÿ#ÿ¸b fÇÿ/ÿ‘ùܪÿSÿè„-B•ñÿ\ÿ½Òÿ~ÿ%ú·W tÄÿ9ÿûè¥ÿKÿٌ'@¡êÿcÿ½Òÿtÿÿ«VnÒÿ<ÿšíè¦ÿCÿÛ{)I ùÿjÿÇÇÿsÿó°H!{Ïÿ=ÿžóî˜ÿ@ÿÏ}M¬ôÿmÿÍÊÿeÿõ¢L$ØÿJÿ¡äõ›ÿ7ÿÐo R°þÿoÿÞ¾ºÁRƒ­vy~|ƒt‹€…„ƒ‚z|yu†~x}x„~„‚t}†wtwz{Žl|v‚ˆƒ€€{pŒz|€}||~~€€{„zˆ€~v„„……ƒƒ…~€€~„…‚„~qypwƒ}|w|‚n~xy†|‰ƒvŠƒy‡}€}h]}u³¬eXub¤¢™dzZe“™¢®ozYh|lœ˜‹odga–¥œ¢tvYcˆ©s}\R{{¬‘_`xk–›’”keZi‹’¡¢w…_S|m›¢ˆe`s_›’—˜_ief˜Ž­žzyR\ˆ~¤ŸvŽrigo––Ÿqo^`‹‚¦ sy_^v¥ Ž‰Y^ld«€“sjb]•¡¥”ykav}ª™‘ka~\œŸž›buam‰‰ ¡„‡ef‚{–˜‰˜Y]dh¡Ÿš˜zdjW†«ŸpƒV[~k¥œ„b[yiœšŠiq]d‹Œ¦¨s€VX}y ¥‚†€w||||u|„’|y…‚ˆ’y…r}wƒ}|‚|Žƒ„vy„~z}ˆ}†{„‚Šy„‡‡ww|ˆˆ‡††y„|ŠŠ‚zw…y~zyŠ|ƒ€ˆŠ„x…‡t~ƒu„zƒ}uŽq€Š~}z‰q…mƒ{x~r|‹u{‡z}w}€…‚ˆ|xuxƒzyt…w—…‚y‹€u}|Žr‚wƒy|‰‚€z€|s‡}‚‰„zt{‚}r}o…~z…v…|u„yz}„|wy|yqzy†€q€…pƒj—xz†ƒ|Š{|mm‘…€{—„|uqŠ‡~r–Šuo„z…}h‰”‰iaRj¬‹©œ€hUFxz¢§€ŠZcj‰˜…™Yk~`Ž—³špf[i}‡£©h‹Id|{˜˜•–[eLo›£•ªsmfgŸ®šŒ…W\}›‰‘anniŸ‡˜Štsm\Ž†£šŠ~O`}cœ—‘j^†]›Ž£’rzUV~¦¦xU_wx“­’Že\seŽ˜›e}[gq…£Ÿ„‚eP{~¥­‘žfjasŸ‚¨†}u^RŒ€¦¦‰_X[kp•ž…’k}€v§‘•”rv^Z›€­žu|lc{p«Ž•^lvg˜’™’Œzccƒ„œŸ…–YbrjŸ–ˆ`lpj™ƒ…yz~}|€Šyv„‡ˆ‹Œo‰„‹sy{wuysˆuozœmsp~ˆ‹‚ˆnv|„u…ƒ€‚}‚‡vuw‰‡}d€kut‚‰|‡…‰’†€}‡„}„‡b‰‚ƒ|†xy|w“oƒy}|ƒ…}Šuzwr€‡~Œw„lyŒ~}„€vy‚Ž„v|~ƒŒ‡…ˆz€‹~|Šv‰„’€€€€…~‚……šu‡€„ˆ~‡{Š|‚Šw…ƒ‰‡yƒ„†}‚i~‡}…tuxsjvq‡m}Œywm{€„~v€”{“rzˆy„||weey{€tzˆ‚ˆ‘„„€‡xˆw†‹„„h{ž™ggZ`††©œ{ŒOyˆe›¥‹ YmcbŒ˜—zn`bŠzš c…]VwzŽ¥”“pclm•“¢–rz`d‹‘±¨{†_lut›­©ŠyZVn—Ž›¡cƒWYˆ–‚kyfr¤©“‹^]t|œ©–joijŠx«•€„[a‚Œ¥“~`jm`›’¥¡geKV€„¡¢{}Xr‘‰·›Œ•kimd‹–žsoi^Š—§¢rzNx‘~¢¦s”s`pX–•–ould¤›e‡\_q…©‰ux]pm“”ŸnSl[Œˆ”p„PV‰p£šƒ‰n\lrš¥™”Txl€…~yk•v||€y~xnt‡‚‰usƒƒozl‡Œ}}~„‰~•ry€{z†Š‰ƒzvŠ„ƒ‹{„†……z}y…yw…‚Œ€‹{z’zyƒ~xƒŒˆƒcƒr{…†yƒ‚xl~g~ƒ…z‚€tin‡ƒqny„~•†x{€‚r–‘z~z{wpks‡zƒ{y‰‡ xuv€{ˆzu{tq{ˆ{†k{€n}{Œz}Š}ˆrx€s‡r|omtl€€}˜uzxƒpm|’‚sxv‚‡‰}}t‡yy~’¡w†ƒ~~{z„‘aŒym€‡{v‡zˆ{ƒƒ‚ƒ}t‰fxv™¡‰}b_p„ –¤Š^e^j™‹©­€z_Y}ˆ¤¡ŠŽSYyu’š{ŒRl‚cšª§xvUYš€©ŒŠqfl{oœšymyƒQ—¤^o_€‘…¥¤zŠUfy`©¥‡’`Wp`“ •¦lr\a}‡£›\Z|t¡ ‹˜lgfn” c{TTŠy•¨}}^\oq™¦ “blcq›š¯‡_hRTƒŠ££€h^o–œ›˜qhbR—“–£bzbX“—¨€]`z„£„”ŽbslbšŒ‰°nuaX„’¥”ˆWosv¡”‡ajhd–”’§ts\^‰¤¡…ƒ|z†‚|€~yx|{‰yy€{q‹v›qƒ€€zƒtp~…~€‰‚‰}†•„„z†‚qx~l~†w€‚|vy{}w‚|‚‚‰~Œz}u||„pyqƒ€wu…~‡Œy…}€†„€‰zŽƒ‚}„|z…‚~u}u„s‚vƒ€ƒ—}ƒw‡‚yyˆ{ˆzŠ€tˆv}…o}zv}z™†…„z‚zt‰‚iˆyw‚}Œ“ƒ†}{{‰s‡‰sƒlx„~‚‹v‰q‚†|ƒ{„ˆyu…~sŠ|…€{ˆx…‚€„x€‚„‚†u‚€‰‡‰~{yˆ…|ˆ„‹”‡Scog›“šhrh_Š‘Ÿª…†]Zƒu¦£}‡Utln™—›™e^h[‚}– w‡VX‚~ ¨|Šf]mk–˜™xi`b‘€¡—n“g^s¡‡V]or«¡–šuq_f—ŒŸ£p|^^Žz£«“X`kv¢–¢˜]gcU„š©m†]]}{Ÿ—ƒ{]]ii—‘™›Xfa\Ž˜™}€M^~z¨œ‡]Wf^—Ÿ’šimc[wŸ¨}sUWqx£®—Žbdzk™–ž•[eS[‰‘¦’s{UZŒw©§ŒˆaUpi¨§š›gaa`”›—«oƒ]_‰v¨§‰i\ip‰Š‡u‰zt‡ˆ}‚€wzxzz|ˆss}{‡t‡t{‡ˆ„{{Œƒƒ€ƒˆƒ|w€w}}z{{ƒuƒz{~v‹~y‚€~|ƒ†“†‚y€pz‚€sfƒxˆ„{€{~yŠ{ƒ}i…rw€…‚v…€„€ƒz„‡}Ž{}’xy~r}„„†v‡†y‰„}}y‚y„}zƒw~…ƒ~„x||}€}|ƒ‰…z„swƒnƒr{{€vzxz‰‡rzq…Šyˆ~…‚uŒˆxˆˆ‹Šzsj€|„ƒ€{~“‰zƒ{|‚{‚Œ†~‚‰w|w|†€ƒ{†Ž‚Š}zŒ‡„~v€wwys~usz‚‚|o‡zˆŠt|o}vyxyz‡‚Šy~{ty{{~w†€ˆƒsz€xyvw{‡‚}ˆ|v~…t‚|u„„{szsq‚|‡{ƒ{h|s…}zo‰‚‰†}‚Š……ƒ„{€uƒˆ‹~—uu‚ƒ„u‰woˆ~„{z†ƒ‚Œxp†{ˆˆ}ˆ|Œ…uz~u‹€z‡z“†}€…t‚‚vuxuƒ‡v}{}}y~ˆ}ˆ‰x‚~…€}€puz‰x}|vv‰p|€…y…tzŒw†ˆ{x„y‚wŒkƒ†€„€‡ƒqŽŒzq††¯nb\”¢§‡ŽfQoi¢£’VjqZŸ“¨¤kvc]ƒ„ž¤y„[ewwª †ldqh›˜£unb^Ž„«Ÿv€Y`|p¢¡—sm^m”œ§ woWg‡¤¡zzXUyjªa_go›ˆ©ym\dŠž²h“`[„qšŸS[^j›š’špo]e¬¢~xe[†—ž‡Yjfj•ˆ—eviZ“ƒ¢Ÿ†~ccx~«ˆŒYeqe›©heeT}Œ¡™lwYjzt¨–a\ua”ž—”ttg]~‰¨£y~`bˆt®£‡f\ty’Œ¨ƒuykZ‘y­žusQW…i¥’‘lTej£’gm_]”}š¡w‚_Z|n¢˜Œ‰Zktj ”‘ž_qZeŽŽ˜žt€XfpŒŽ¯x•glitžš¥~c]_}“¦z—Vfuuª›ŒŠ_€ie£Œššdhaf~™¥‘y`P{s•ª|ˆjWsj •’•Zd]\‘¨™ur_P}l–ž~‚a]dw¢škvWkƒ”§s\Sx€š¤˜`uauš˜ž–s{en°¦€‚_Mt€¬”‹igqfŸ˜˜hwYS”yŸ›w‡OZlx£¡˜žSqtrµŽž—jvdc‰™§‰{`Vq‚¤Ž•‘_jok¨’Š¡hsm`Ž–š‡`huj®¨™›fWp]–”–¢plR_Œˆ ¡€‰ZaŠs¤¦‹‘fVdT†œ¤ry\b‘–¥q{g_…t£“•€laq`¢›–mpS\„¦§…Šcat€¥›—‘Xbax“¡œ’lq^c„©§o[|z‡xuƒ€sšŠƒ‚tƒm„wpn~…ˆjŠˆv“vƒz{‹ƒŒ†„h€‡{’z„x}Š…•y„uy|y†‹tk‡~Š‚€y†vs”v|‚‡‚ˆˆt†xw‰‘~‡zw€Œ‹w}z„…ws‰u|~~Š€rˆ~zŒu{€w€|w‡†zi‚u{Œu€‚s‡…}„…ˆ„‹|—~…~„{††{x{~ˆ}}{‡|s†‹ƒŒ|~|{}zvz|}zkŠ†z„‚‹Šwqoƒ{Ž|‚}„yx‰„€o}{”|z|yƒw‚‹|’‚†x„‚t€s‹…|~w‚x–Šv†„‚€ljqqvu}ƒw”†‡t‚ƒ‘|~‚ƒ‚„}†‡…ˆ~„€}sƒ}‡‰ˆƒ‡‘ƒ€€†q‰”€Šy‚{†l‚„‡†‹x‹t„xy}|„ns|~ŽŒˆ…{w~~ƒ…|€…{‘|~y€x‰}z‚||y~‰{yvŠ…}†„‡‚|u†v‰}~|~‹€‚€{vƒz„~‡xpxx„nƒz’oƒv{‚„t‘m|{w…‚‚w‚‰w‹‚‘‚zzxxeqŠ„€~…qŠzr{ƒ‰‰t‰{ƒƒw|~|‡|r}‡}„†…€Ž…zŠx~z}„‚‚p†}||ˆ~„}v„‰u…~~‚€{~‚yŽ~{€s„Š~}…u„{‰q…€z‹v€ˆ}lŠnŒ‡}~Šu}} €ˆ†txpupŠ…w}‡€}ƒ”ƒ†|z‚›lu—vŠ‚ƒ|†…v|p‹†‹€|m€…ŠlŠ€|‚‰rxpƒŸªx~S^zt¨žˆ^\my•™›dfed•‰¢¡•tbY|‚§ž†„VUap Œœ“cW^[€¥gwbVz¬§…}j[k€¬—˜œmnd`ˆ¢¡¡ˆs_`zt‘§“•u\lo¤£š¥b_gf“–¨–‹ka\‹‰Ÿ“‚‰PQom¢•“Ÿm[c_„‹–c}bav¢¢†‹eRzm¡¡œ’jaXZˆ“§¬qwYY‚{©}€`Sxi’£Š‘ctXp›ˆ¨¨t‡sSw„¢‰†Zajk¤‰†“uhbk¡”˜­|X\‡‰¢«ƒ‡Qiik©™š¡[b`^’š¥p{epnƒ‚{~ƒp…o~}}stˆ‡vƒ”‚~{‰ˆ|„z}„~yu|’|zp‡wm~v‚…€Žƒƒˆšv}xt†oytj‰€|‡w‚Œ‚|‰yt†}”sw‚€ƒƒo‹Šsw†Š„t€„‡…‹‡w{‚„†…ˆ}r„€‚ƒ{j‚„ƒƒq|zŠz€}Žmƒ†‰„}|}u€tƒ‰€‡‚y€vyˆyˆ{€{‚e‚}~ƒ~‚w†yxƒ}}{‹Š|‡nu„Š€†qw…z|m‰v~†‘ywjƒ„~ˆˆ€r{x}j‚€vƒ‡rƒx{{x}{~yqŒƒƒ‡yƒ{x•yxvvŒxˆowŠwv‡wt‰o}‹v…†|ˆw‡žmŒ‰s{‹xˆ^„†zto‚†—‡|ƒ‚ƒ{„y€q„}†„y€l}nrƒ‚€Ž‰Žy‚‚…„|‚|‡wxx…x…€|‰p„†ƒ‚„‰~…{ˆ~zˆ€†~Š}}x}{Š~ƒ€vtmmˆ‚}~ux‚qnrw|ƒˆ‰ƒ„fv€ƒ„„€uƒ}t{‚s†ƒz}…zy{tu€|„q„xp…yx~z…†qˆ‘{†„{‚w}qv’‚Š|ˆˆ|€}}y}z}…Š‚‰{xˆyz†~z‡jnur£„—eom™­˜šlkhr}£rŠKa…«§‡„eek‚“ŒŽ[gbY‰¯š{oaZ„x§²}dZ`a—•š™ep_\§›|s]`pršvX]i]œ••™dim`ƒŸ˜¤oZf™¨‡€Thtb£ž­fem`“§¥{rI[Œ}®‚`Mik’£”£or^l‡—¥pyZa„v¯“”^cliŽ§ˆ±wpbgœ—q‹Shˆ‚©¥†ƒSSpx¦›˜¢cgk[‘”¢ªp{fW…zš¦Šgegy˜”’—_ufXž€¥¥{qdOƒ‚š†ˆOv„~‚yn€o|‡‡…†w€|u€}†z…yxx}‰}Ž€‡~riv€zƒ~}s|„~€…wr„}„}„€yoyˆ{ƒx†~„~}„zŽx€‚Š}‚„}yxw€r‘vu|xˆ‚~r…zx€ƒy‹……~ƒx|zˆ‹€Š|x}‹v‚wwˆ{~‚…~o…g€}yŠmq€yƒs~€‡}~ˆq”~‹o‡x†{—|€~‡„~„~…{yq„€|tƒƒxqw„xŠ€„ƒ€„s}|‹†‚}~€‚„€yl‚rƒts~tŒ||v‚~‚„z†~‡i{stŠ•yl^f{‹© c}]cn¦z‰ebvw—£–˜jjraœ—•§rvjRƒžžƒwT`~y«œ—†gamo•”–¡qqo_{Ÿ †Qoqi•–Ukkc…’•—whf`Ž~¨–|‰RXu™œš{yaj`˜œ†¡`ag\‡„ž¦p‡Up•€°¤žgfjt‚”škradƒ„¤Ÿ{ZW€€¦ šbbp`›•¡Tum[Š“¨˜„s\]ve¥£˜`eWbš“‘©jxg`‚€¢¨ƒ€Uejƒ –‘™\bwd‘”ƒ›_sXg†¦ºˆ\Vnu ¦zœWpiaœ›¦©rof\š†¦˜„€^N†e­«‹†edqY›‰Œwk]bƒz£¬||`L{v•–Ž‘Vj^j’Œ™•rzf[ˆ†“«s‚X`l‚š—“˜eyfdœœ—°crdL–œ±}Z`rd·›‰šTkkc£•…œkhfR„€•£˜|r\|t¥¥–jXzgŒŠ¡jf[[yªŽq}^]…_‘ Šaf\_—˜› njT_|ƒ ©r€Nb{•§Ž[efn¡ˆ¢™o|b^Œ®¨„ƒVW|w¢¦“a]__ž’¥špnce‡ƒ©—†tVMnz®©˜“Ufbg’š®{pmU……–­|št_~†ˆ†ƒ‚ƒp~u}}Šyu|Œˆ˜}ˆ€ˆ}‚}~uƒ}~‚ryƒt||}w……z|t†…z}}„€Š{€opzx{xŽ€‰•~Žƒ‚xƒˆ‡st‚h‚{}l‰kŠ‚u†yx{vn{y‡}y…†€‹…†x~…|tˆr~†wŠ„ƒˆ‚|…‚r‚|„~€‰x|†ywvzy…{‡zyƒ|‰ˆu‡‰y†‡~tr‡}€‘˜…~|‰{‘q„|†ˆz‘z‡u~~Œ~ƒ„rŒru‚}{‘‘z‡w|~„}{gq}t|v‚ˆx{p~~šƒ}~ur‰€‹•{r„„Y_q’¢–ƒˆ_^|d¨‹jje_—ˆ¨”re]`†|›¦’‡aW||™’šaudg–”¨˜yve^†‚¥¢ˆYRgt¤•Ÿ–glgDœ’¡™tbTŽª Œ‡Y^m‚™—¦‡pkh]•›‹”p\J]‚¡–‚ƒUY‡iŸž‹šYaYz—›¨’kStŠy³›Œ„ZPz]”›ŽŸrWbiˆ™§–reT]…r°Œ}ˆ]P~p›—hdbg’ŠŸ¡{sRV€|˜¥x†`Xhv–§”škkdg–Žª˜syXY‚€“wf`p€¤™ž¯Wocd–¡¸|iZT€Œ²›‰nzxŒk|}wl—{€~l~‘|}‰so~q|e~sƒ|„ƒux’‚€Œw|nxyyˆk‚€srŠi‚yˆƒ€tŽmw~l‡‹}…{||‰o‡yz‡Ž}„o|‡‚u…€x…€†t‚†€€†~z‹ƒŠmz„pƒ‚sxxuy…~yŠ{„{p‹„Š†y€}‹|}€v†„m‚w…zzˆ…‹{€y€{l{y|~y‚ˆ„zlwƒ{†s”urm€‹~z‚ƒ}€xuƒz}Œ‚vˆvt‰u‡€z‹z|†v‹ztlt€uŠ„}„ƒ{{pwŠ{ƒwyŠ…i~z‰}†ˆ€…tŠo{…ƒ‡dVv|Š¬ ]\yjžŠšdpl[š‡œzvZcsŽ¦ Ž•\bvm¡¬™”mfclž®‡xmVYŠwŸ–}šq_|i•›™œunW[—ˆ˜¢‚\Vy­‰~_Rjt”™–™\ofl¢Œœ™mw\\‚q¨£ˆ~[_i{šŠ£•etbd‘œ’­u{fXx…©¤’†_S|m£¡”vimf‰ŒœŸxtY]y£¡‡ŒbZjož”•jjhP}‰˜©pwa^€™©¡ƒŽak}lª—ˆ•_f^`œ¨˜mqF^{“¯aNgl š‘žlvdQƒ…§¡s‚Yp’}‰ƒsv‡†y‡‹ƒ|€}{~wq‚†{ŠŒzw…|‚€ƒq‡€€‡‰vƒ…|v…y…sy…†‚Šˆ€{‡‚ƒuwˆ‰€’}xŒr}u†yˆƒŠŠ’x}{„z…{†ny}~w‹ƒ…lv‚‚z„‚vuzƒ|…z€‚†ˆ‰‚ƒ€„‚y‰{uvx€€z‡„€wŠvƒ}‚†xˆ‚x•ys‚‡~ƒuv~‹{Š‚„xdr|p‚†v‘}qŒo|ƒr|†}w~wo{†‰}€ˆ{…tcy{y~tvy„s}z€}€ƒr|yx€~€z‰‚€…ˆƒ„~zˆ|‹‰z‚ztw‡€†€|z‘tx}„€”xŠhv…{|‡€yˆŠ„l€v…|ƒ}x˜—zux€‡Š‚†w†…|„‡k‚‚„k†wzt|nxŒtut…‹Žzq~y{„{v‰n|}sw€|€}‚ƒ}{y…~„x‡ƒ„‹v}~…‡„ƒ~ƒƒy€~‘‘‚}‚…xˆ~k~~~‹†Œ|‚‰‹„{{{Œƒ†„“Œy€„ˆ’x„}m|u}zzƒyx„~†}zx„……~‚n|†ˆ~|uu{uuysz|ƒ€~z}~{Œv~~„|‚yrzy{ux€vqƒˆx†uu…‹€sux“›rrnbŸ…œ›ƒeXxg—¤•\opq£Š§’|kd^’‰¦–…€T_yy¥Ÿ‰ŠW]eh–ªnlcTŽ¡¢x†Tcs¯˜‰_bkj–”’jsZf‡ŸŸzwT\x~£˜{ŽZXjl–£–sh\gŽƒŸv‹jZ~w£¦…ƒ_Xgv¡Š¡™volH”‚¦¦u}UXq~­™’‡bbff’“—[vec—‡©¤tuMay‚¢¨a[vfŸ–‘™or]]œ‹Ÿ¢xtZXvz«š‰T]wh –•Ÿesh]’’¤–x…``|‚š©qaejgžŠ˜^cnfxˆy…os~‘y‚t‚}ƒˆ„ˆˆ†}‚{“~‘†x†ƒy„qq„{u~‹zŒ‡ˆe|tƒ„zˆpy›‚Šƒ{s…w}~Žsƒzˆy†}„ƒzx||y†|yz|v~…ƒƒu…€v†z„‡hqwˆ…t|‰zƒz‡„{{‰‹€ƒw€}z„zu}{{…wx{z†‹t„€†{sŽ€v„x‚€~ˆ…ˆ~„…„~‹zw‰Œ€|}†tz‚i}‡~€‰w…}zq„‚z€…t‚‚‹ƒ€t€u‡w}xƒƒ‡ƒˆ‚||zuƒˆz‰‰{ƒƒ‡‰~ƒ„‰|‘{ppx¦j€WX’{£œzƒXOlf–™‘›bo^o•–¢šp€]`ˆ{£¬}Š]Yuo¬›™žljjm”ƒ¨¥q€ZT‚™ž…aWvd¥—˜Žmjlhš¢¬m}fj€ƒ™¨v[boe™›k__[’” ¨uueS‡r¦¨‡Sh~{¤Ÿ‡žrtme““•žxv\e¬žƒŽ]Xxp¡˜–eahm™ŽšŸlpabŠ«›|‰hbwa“¢˜‹geXk˜‰©yx]bŒ—¥ }v[]tx§•”‘\wjn‘—˜¤h}WV›‚©¨|†\T€‘°bqbiŽ¨™~}oz†y†u„„}x|ƒ€|mŒz€{t‚{{ƒx}v„‚ƒuƒ{~|vŠzxˆ{sw~|€z}wˆu|wuƒx€ƒƒ€‚ƒ‡ƒxw}}y…xu™}‚}ƒ~„p‰y„‚~|y…‚‡zˆ}‰‹}”‰~‹~„~„y}’„†…v‚„|‚w{ˆ‰|xww†ƒ{xqƒ~}y€q€€{{j}€{quz‘xƒz~ƒ—}–ˆ†„xzvˆ‚‰‰‚{vƒ‰ƒ††€{}‚€}Šrp‹}z‡r{‚„~‰o‡…|zmv~w~€†{y†~r‡†|‰s{•m[mŒŸ˜–“i\cd”›—Šev[ew‡–––~`ksq©˜’l\{i’•›šnqZv”Œ¢§n_…a¥ ~”]alk–†¥ goX[ŠŠ« o}Tex¦´“”ebne™œ˜qh]gŒŠ—žn{`Xˆ|›Œ’chdhš•—lt\S„‰ž¢w…WYyl¨¤”Y]am¢‹’‡eunP‹y ¡‚pp\ru ¥—‰bf„_ž˜£]jTi˜”ž {{Zkog›ˆ†–\fhg•—œ’sf]ˆ‘¤ ’ecrv¬¤…—Yirfš¡ ŸrrYb• ŸrŠVZ~l¨Ÿ‘_mqjš”kiIkž„©•v‡]`~sž˜••eigh’‘›ii]d‘‡›žqa_zuš®¡P^io“ ŸaqUg’‘® }]Pjq”˜’kiqeœ–œ™`o\ZŠ¦§ˆ~_^s›Ÿb_o`›¢—¦mqaXŽ‡«£‚}ZRvt§£Š”Wjpg’”š›inX]†„¦›‡_X|o  ““c`gkŸœlgekŠªœƒƒWMxu¤ ‰–mafd‡›£–zs]_~¨®w€^X~m¡•œr_bb™‹š™qked‰§vz]]jsž¤—…cbhp™’£jt`u}‹x…†|{€Š‚|vw}usw…ƒ}|‚yvŒz‚|„~€‚‰†‡z~„z†u‡tƒy}w…r–Š„‡€€‡x‡}„‘‚ƒ‰€z~|wzpŠ„{„†…|~w‡y{„vŒ‰{iy†w€†zy‡x‰{}ƒw‰r|†tr~~v€ˆt{‚„zv{€ˆs‚…„††„‰€„‚…tŠ}u|{‚‚~r|…~‚o‡xŽ…{Œ{rƒ€wŒzw†„‰„v„zuy‡‰ˆ‰‚€†{uw{r†}~„rvyym„‚€{ˆwŽx†„‚‚}€‰w‚u…€nz€zz„€‚†„‘Ž|r‹y‰„~|{„‚ƒ‡~|€xw|xzˆ{}Š{‡‚x‡wzr|y€}{{Œqƒu†~†swrˆo~…|y|{‡y„ƒzƒx~€‚y}ƒ„€„…}{‡{‡ƒv„}{|~sxukƒŠ{‡„~}yux„w†˜†~|‚Š{„|€|†‡ƒ{~„………v€‚€„€‡x‰€x‡ƒ~„ƒv€x…|ƒw{Š‚sx~‚Šƒu€|…z}ˆ„{{t|€q~{ƒ~€|}ƒz…xƒˆu|v{‡ryxs|……z…€}ww‡~~ŽohŠ‚šŸztd\© ŠŒ]isg¡—“ma[[Œ‰¡™}o_^prœœŠ“cjlk’˜ksa_†ˆšœ{€S`q‰¨žŠWamvš•mmec‹¢—zmYTuyž{–UYx`¡‹’oVS^ŽŽ©žs}\nts¢­ˆ‚e\yZ”’œ•m]c]œ…©Ÿ}†VY‰`™¡ˆŽk]ln’§“kceVŠ™¦€vm\ƒ}¤¢ŠŽVeal£“£›lriU›†¢{w]`{Ÿ›‰ƒWglm¤›˜›ZkeXŽœ¤i}W[zu«††TZxi“ŠkjSgˆ¤£v}Vbmz›„“cdwn•žŠ–fgYa”Ž¥“s~^b…i¢˜ˆ™g\ig—©©“nf`_—Ž¤‘j†`Op§ª‚‰t`mn›”š ]piU‡”¡kre]†©¨‡Š`Q`e™¤¤šfjaW–…¦¡x|\W…€¤¡ˆ‹Pceo…‰mgec„€”§„{^Zvz¥˜Rhx[¤¢plf[‘™“qxQbxq§Ÿ†‹\QXcŠš›žjqblŒŒ«€‰Qj|{­–„’TUrlœ¦œ˜lp^d”Š›–t„\jƒ¥°•–fShm˜š¡†higS‘‰žª~‚YVwp¶•œi`[kƒ‚Š„t…q€†w€x€„˜|~~~†s~trŽfz‡~‚wŠŽ†n}…}‚‹†v‚~w}{‡y€y}„†{‚…u€x€ƒ{}‡€~†ˆ~}|‚€s{‰zˆ‰‚os„‡†~x…h‚z~w“r€{{—y{{yˆyˆ}Œ}‹t‹‚q~sp~ƒpy}‰mxx‚Šq}ˆxxx~’|‚‡ƒ†„|€ƒsƒouˆ€~„‚†wz{vyƒe|zŒw„‚…‚ytˆz‚kŽms{Œt‰u‚{‚yk‰€}wy‚‡u–‚ˆn~„€w‚p|„‹…|rh`ƒ£¬u‚\\v{˜¨„‡Zd_t£šntVVœª›x~cKskž¢“–fegg ˜ Ÿqk]bˆŒ±ž‚|[cypªœ’”grf^ –šhk[^…Ž˜¤ƒ€_gy{§¡”šjgli•”™£fofd‰‹£ž}tS\qz™›…ŽXkg_˜££su\azƒ¤™xAc|s¥¦ƒk_nf‘¢™yt`^Š}›¥…ZVrt¦¢†„^Png‘ž¢ttSbŠ¬£{z`Z{vž£’bm`n£–œ¡esYZ„±¥„w][vw¨ž‘_qpjž–¡ vw_Uz„°ªt‰az‹ƒxtŠƒ~{v{ƒ…{{{†t†}suw{€w|ƒq‡†}‹ox‡Š~“‚}Œm€‡{vŠ}†~kz|Š‚‰zƒ‰…ƒ†y„~ƒ|‰~|ˆrƒ~y‡|~ƒ‚z†€rƒ€€}}‡ts†|{x~|y€txwmƒ~€†u†„‚~ˆ…z„y€…€‚ƒƒ€—†‹‰zxx~ƒ|‰•y†w‡„}{‡o’€z‰m~}Š†‡‚y†„|‚€xuy…t}z†wr‚px}…z‹ˆ€†ˆ‹†v…xˆ’‰ƒƒ‚wŠ}•€j|ƒ‚x†‹{~‡x†~Žˆ…‹x…k\ssŽ•‚–c`pb—¥”£mnaj„§Ÿ‡V^v”š‡\^lpŸ’© wg[d‰­’ƒ„``Ši– ‰”oo|[‹¶se`g„z£„hTt|¥”™‰WY]a““¢ts[{Ÿ†Ÿ¥w„NT€‚‰ªycg`jŽ“­–|qMt“‹¨¢Ž€zgkŠ—­kkXk¤•ž wt^S•ˆ¦ˆƒc[~] ŒŠ—\fnhš™Ÿ“„e[_…‹• €omVnjž|ŒVƒasˆ—‘£s`c_t— r‚Ye{t¢…„‘nf^o›¤™–{pfi˜—¦§t‰c[‰¨¢£€€‡tv‡hƒ†ƒŠ…|‹„zl}zˆ‹‘‹~„€–yzr†r…yx~_…q{~…†d”€†~Žqz…zh–s‰„‚ˆˆeˆy~~y†‚r‡‚t…w€†…Wƒj„{yz‚—zo‹w}†ƒ€n‡l†„w˜y|†{™Œ~ƒ}•†‘…–‡u”{sz†}}qztr†…qmŒ‹‚ƒŠƒ}…Š•’‡pƒƒe‚su‚}x|~zhzu|zz‡z‰ouf~~„xŒŽ„‚yˆ†w|„{„xm€mŒ€„‚‚ou‘w‡z~z}~yˆu~z|…€‚{€t…‹‰„|b’‚‰Žzsw‹m{‰tw‚no|zv‚†~Šƒy™v‡Šxuty|Šprzzvw’y–i‡ˆ|xy{€`r{y}„„wŸt™x‚|}{‹jŽhƒwx{|}vl‰ƒ€‹Š{}t‰yŽ~zˆ‡Šl‘rr‰pzŒw}}mms‚q}q}}f}†tƒ‚{‡„†Œ‹x†vŒ{€pqs…„nŠ|uƒ~ˆ•‚x€ƒyŽju}}q‹€vœx“‹ˆ‡}ww…{¦„}„w|…{ˆwMs~~€x…‡’xuw…~w~xr‚•k‚ƒ‡u„…nx|t…“t—Ž‰†`R†›¢ˆ€o]{oš’jrth†•’qn[Zy›{€WZ_„›Ÿ’šWomQ‘…®•ywf`…™­~ugalq›ª™°mnOq›™¤ŠwikXq‰¦§‰wdere³€šŽ`gcf™’ ŽZmb‘„¢ž}ƒL\{nª¨Š‹c}„n ‘–q€jd’ˆ§¤y‘ceqy­”‘Š_sim¡…œ²q}]\“}µ¦ˆbXju¦­š’b}Xg…†¥˜\rg_‰Ÿ—ˆRZmgª”Œ–\_yS¬Ÿ‘œ€qV]ƒx¶°€eZxi£‘uŽZecf˜Ž‘¦‹lgZ„¦|vˆ†—}{{€xtz|~‡Œu~}{ˆ˜}yˆw‹yˆ‡x}y~u…‘{y”sqgƒ‚us}p“vˆœ€…’vp‚ty†Š€”‚‡„ƒw|‰s€}†wtu~iv{|~z{xtŽŽ…|z€{€}†–‡~~|„‹|r~k“|z||{‚~yt’ws€z„}}‡}q……y„†szn{…~„v{~‡vŽ‹ƒxˆ~{~ˆwsi‰iŽ~xv†q~huxyŒ}}…w}t{{„~y€‡wzt……u‡„}xˆ€uwt†Žs‰‚x{x‹|„ƒyyzŒžrˆ\\rnž¡“ž\chi‰Š£q~Nb~|¡™‚€_Lto–«šŒcm\d•«¦hyaY“‚¤ wŽae†u¢’‚ajZmœ˜°u|b]z… ¢y‰_ctnžœ‘“`nuhš‘–šppcb‚”¡xŒS`qv«œ˜f_``’–ªr}^`‹€¡›€€acp§˜‰‰^iqd’“ªkwb`’Ž¨£…yObkxŒ›—bTmZ›‡•ŽkyadŒt©”Œ{jbwŸ”˜”pe~g› ¤dzVqœ}¢¥ƒ€aXxzŽ£•_bma£—•›\wZb…¬¡|‡YXyw› ‹•[j\j™ˆ˜™`r_P‹Š–¯‚u__tw§—‹”Twa`œyniN…¨¢ƒ„a`xiš™‰—aohd’š™‹|}\_††¨œ„tQbvwž¤Š–akjfš–ª¢yo^c{Žš¢ƒd[xl—¡…˜i^ke•–—§iv`a€„¨ŠŽb^tmš˜™‹gd[g‹¡qr]Yˆy•Ÿ}Š_asr ”‘a`eXŸ¡œolc^{Œ”­„cWyu¡‹¤•dhqašŽª†…h[„†­˜‰Tdhp¥‘‘¢cgsWœ™œ£wsWd‡¥ª€d^{o¦ƒœjgd\–’™”~w†~ˆŠ‚x„|„{y„~v‚}€„v|{‰v}‚v~~v~zq}‚‰z‹zmuxw‚€uy‚npt„„ˆˆ€ˆ†„€}€v~ˆ}‹€‚}Š‚„…ƒygŽ{{ƒ{{€‘{‚€z}…}~…z‹„‚ƒ‚r}|z}€r†‚‹‹‰€x…‰vŽxx~{unp|vy~y}yƒ‡†}‚d€„ƒ|s‚yw“z‚…Œ|{n}r}ƒ€~ux…™Š„€…{€…rvqzx†xy‡…ƒzˆ}qxˆv¢pv…„z‰{{€u„|‡‚†‚z|Žz|yv~‚{ˆ‚yƒ“Ž–cZod•˜˜khlZ‡|©—x|Y`vp¦¥”Žldlc™–‘®jib^„†©“ŒŠ\^}~“ }Œ|eqhœ“™m|Pg|†§›{|b[Žm¤£„aX[o”¡©žjm_X}~™–e`S€m›–’ŠOZ[l—š›hpWaŽ“¤vŠeJwt›¨˜†bdo_ž™•Ÿau\a“Ž švvX_}€•šŽ‹gjoi™“žŸimi\…¥³}zaPsr¨¥‹‘chuaŸ”•¦]dhU’°›ƒy[_{­¨Ž‘h_bn‘’juUnŽ«©}€k[€nŸ¦ŽbWlt…ƒ†‚~{‹‡‚}xŽ~{tq{‰z€ƒˆpqŠq|}x‹qŽv|y{…y{y€€py|~…ˆ{w|ruƒ|z„|ƒ|~€ƒ{uŒˆƒ€~‚…~t‡Žs‹~q‚xrxkˆy…{€Œ…|{n…{~ƒ…“†„qY‡~r‚„f†}‚t{nˆ‹ƒƒzi„Š‡}ˆƒ€y‰u€‡yx“~ƒ‰oq|tŽx‹yx‚Š|Ž€ƒv|‹|‰…ƒ……|y‚y€ƒy{s€†‹vŽzw€~}€Žx‹bˆwzz‹‚~™}y}z{w™i††„ˆ€€~qyŒ‚Žƒ†wtb€¥¥oV`og“Ÿ†€r_dW‘¤fV^_ŽŠ¥¤€}bS‰o¥£Š˜tWedš†§”hr[X€¥Ÿ|p^x|¥¢¨k[rlŸ—”rrh[€¢”}{eSz{š‹bfo[ž‡›¥nifQˆ™žx}PZt_±£‚‹bkdiŽ{¦en^_Œˆ¢—u]dw| Ÿˆ›Xvkl—Ÿ•«uqda¡‚¤˜|…Z`|i¤¢mesk˜ž”žxi^e€Š¢™~„ZXsm“¡•…bRheŠ¨žqnTb‡£žjVW{m•¥‡˜bsoo••¡—x|cby¨®yŒx…Œ–‹Š„Š}Š‰•owqrŠ‡€„…{v€„|ˆx‘€‡‡z~xƒ…†€wŽ}ˆw†z‹Š†ƒz€|uz‚†~„y}†wmŒ}zw†s‚„zu„xŠ‰y{{„o|np~u{z{ƒziƒ~}€~…‚hn{uˆwˆr†~v~q„}Š…}…zœ~z~€‡’Ž„…ˆ€~~||z€{‡„‹ŠŒ~ƒ~ƒ€~‰{€{‚~‚xk‚†ˆ„{ƒwy†‰†Ž|ƒ„wŽz€‹rŒwƒ…‚yƒk‡{„|€z˜|…|„x}‰{‰€ˆy{}‚z‘wx…o”‹u„qv•wSw|¤¦Œ„[nen™—¤hkmS…œ¨yyTX}£š‘„Ze~d˜›xio`Ž°­v€^Yv®œ˜W`|s£Ÿ•¡‚md`˜‡‘mge‡y £}NXuq«›˜ofZf˜›£¡n‚^Rƒ†œ´„…r^nn”•œmkZcŽŽ¢¥s„aO€v¨¦–€mbrnš•›’nnda–ŽŸž€†^_„{©§‡Œ^bk}‘¡–Ÿiiwa’—¤¦~~TZy«¤}†[ey_¡‹˜Ÿcn`\‡Š¢¥€_d†¸Š„dWqf©—”šngcX‡Œ£œ€}bX‘t¢Ž‡‡~Š‚~z‚„o‹sxul‚‡‡x}r„w}€Œkz†„z{yƒkˆ~…˜{ƒ€…{…m€‰‚‹}~~nvwƒ{ƒ…|{x‡uŠ‰€Ž„{‡„‚„}{ˆ‹‚xzƒŠƒz{~z€ˆm~y~w€v†Š|„—y‘„~Šw‚†{Œ„x„zx‰‚†y„‚„ww}y€zˆ„|y‰z…{yˆ„w}~€n|yˆ„‚†wŠƒ‹€ƒy‚„{†y~x{ƒ}v~oz}‚y}x‚}y}‹}†wu}~…|y€€ŠsŠq‚|ˆƒƒy…ƒo‹™‡š`\gy•Ÿ’”op]a‚€¤¦u{__|Ÿ©“Ž`Spnœ™’lp[l‰s šteX‰„£­†“^Zkt”‰–“i{[Y”ˆ¢­{ucZsˆ•Ÿ’Yij`–…¤omh_”‘©nSo}‰¨¦Š‹]Zvqª‘‰“okclŠ‰—špŠdKe™ž„—U]mb£“–cdP`¥œ‚z_^u¬œƒ“hZwq¡•Œpmbg……¢¥„XWˆ{©ª†‰x`vp¢Œ›†gpWd£¢lcX‚n¨‹Že\iv¦”™ŒlybV•}£®n|aOy|¨¦“„W[i†~‰‚ƒ‡mzo‚z€vw†z‡‚‡…{uyyŒ‚uy‡x‚‚yz‚|“Œ}xƒ…sˆv{k|y„†††||„u“m‚‹‡{ƒx‚†c„}u|~z„€xŽx‚m{tqŽyw~}z‡~ƒ}‡ƒ†{y|‡ˆƒv€w|…u{||„‡~}w‰ƒ‡x†zƒ‚y{ˆ€{…z{…~ws†Š‚}z„z‡ƒ}z{€†xŽŠ’†ƒ„Ž~Œ€yynx|w~„wj†‚‚x€‚r{~{†‰…mwƒy„~„ƒu~g‡‚‚€~‡…‰qypƒ}„}zt~€…xj^™›˜ds][”„¢~}\Yvv©˜’Œcnv^¢–˜¬lopYŠˆ§§w\_q}¨¤ŽaUxbžžœ©hjbi‚šœz|Qqudª—Š›`[ud˜œ—¡_lSe’Ÿ›skeY{wš¨…^Krp™›‘ hmad–˜¥¤q{_[y‚¡£‹\jio˜‘•cx_]Ÿ¨„|hV~›¨Š…^eko—›™ln[\…ž¡xwJ[v‡¨ ‰‘]ZfY”’™œrlddŒŠ¯¡~~Zfz¤¢}‘c]idŸ›’•orie‹‡¦™ƒoaV}Ÿ¢‹•eflo¦–¥s‡r„zv—‚‚~u€z…uy€ƒ€s~…vƒ}…‡‡‡zŽ‰ƒ€w~~z„‚|~€…†~~€ƒm|‚{|v„{ƒ”…{”{|yq{m|{€€|Œ~‚}‡‚€†…|‚uq~|‚„ƒ€ƒ€‹ˆy€†s|…}ˆ…}}v‚~|w‡ƒ„~}…ˆyƒ†}}‚‡…}yƒˆ…€‚{‡wyˆˆ…†z{†yƒ‡~k{„Žy€‚v€‰€ƒ}…~€x{€ƒy‚…}|ƒ…uz€{€}zŒwrw{…‚r~€uv‡y‡Œy…Œ…Šˆ|~‹v…{‡v{‡s‰€}ƒ}’…\j‚§˜Š`fkm”£Ÿšnn`]Ž’›žwwaV€v£œ…“jImm‹Ÿ˜pqX_|š{†b^yœªˆ‹gildœ˜”—hld`†­¨ˆW\|k¡¢a]qk™š˜jmfa ¡z…``xœ›–šYYki ›—¢csd`™£Ÿrx\eˆ{¢¢’‡^hhb”‘–¥ttb`‘¨ŸƒqMcm{¢£‰Znmyž‘š nrj^Ž‘¡¢uƒ\]t¤¯x‘[[qm’•‰knZ_—‰¨¬{a\†vŸ¨‹ˆ\Zan•™˜­dp\aŽ„¢¢{€]Wt¥„yvŽŠ{€{~ƒ{„}ˆ‚~…Œt€z~r}„Žqxˆt€yˆ|††€€~…Œ…€‡‚‹†‰tˆ€‘‹ˆ‹y{…pƒx~ƒzƒtu‡~‚‚Š|‰€}xt~w}ˆ|„x|{€x‹{€Šz‡}ƒ}z…Žrˆt|Œ€ƒ„Šu‚z€y{v{„“u€„t}}ws‚Š˜}}†€Žt€|zw…}ˆ‰„‚~…i}‚~„€}…t}u|‡ƒxˆv‹‡rww‰}‚‰wv{{|‡{ƒ~~„~y†w†‚ƒzx{x}‹wˆxy}|{~w€x~tu„}wŠˆx…{{zj~ª•ša`pl›“˜šk„iW“Œ«¥€}gMu¤Ÿ•‹e]lt‹—§sqdU…Œ™žs{X[s}®¢ˆžYlj]›ž’lff^‹žƒvNakp¦˜‰’^jtu ˜£pdhg†Œ£›t~Uww~¡‰piq`ž¦–zsfg€°‘~…aQ‰l ¨‹Wdoc›”¥–ppH\£©r|ZW|…žš’ˆa_adŠ—¡bwZSˆŒ‘©u{Y]„©¤‰ZyapŸš¥msd\‘ ¯~{`_„t¡¢„`elk¦žŸl]gJˆŒ« x}Xf{¬™ˆ“c^br|‰€}{xv‚€ru„€ƒ€uz†vypw‚t‡}‚‚|ƒ}€ƒmƒ{„r‡‚‹€“~€z‰†z||{‚{ˆ†{€‚‚}ˆ}ƒq‚}nƒst…‚|z~v{„vŠ|‚zy‚~wˆzzŒ‡„xˆ„€v~yƒˆzx‡‡ƒƒ†ƒ…ƒy‚ƒy†‡~ƒ€y‰…•ˆ‹|ƒt‚}Žy}w{x†m†…„€„†Šxy‚t‰ƒx„‡|‚€ƒ…|‰x}‚z„†€‰„‡u„{€ˆˆ‰€ƒ{‡{||tx}u‚†|ƒ€v„}†…|ˆ~m‚b‡ƒ~Œuu€“€\š•™–qv_Y«‚Šee‹r¥‰™mYg]œ’rzZ]€› g`}w¢Š“XWpd¥˜˜wqeg‚­}f`s¡¦‰acof–˜šživ^r|Š™¡X[k{Ž™Šˆcd_k“Œ’—lk[Zƒ” ŒL`un¤žšYYoWŸ‘˜œri]M‹x¬§€€TYfs›ª‘ši\peš™£ wvcXŽˆœžuX`p™¥‡›ebko‰ŽŸ—poZ^Ž€¦oŽeXms¡¥‰”jk_uŠŒž˜`tQ[†• „i^qs™¥™‘_kflš¡Ÿ—c}ˆ}€xww‰xuus€‚pz{xxŒ‚z‚ƒv€qy‹~}†{„ƒ„†}€q„Šw‰‚„†‚‹vzwz‚|}~…„„v|wƒxˆ~€ƒ}{ƒsq‚~€x•wƒ†~w‡ƒ}{y…x”†‡wq|}y…u€€|†|ƒ‚zw†v~}‡ƒ‚ƒ~xƒu~zzxv……|~}y~n~‚{…{€…{‘‡}{uyz…€~‚ƒ}|}……‡ƒu}y}‚{zˆ‚…{…€ƒ‡‡{|†‡}‚y}‚|u‚z|€Š…~ˆ„{Š€yŠ}}{€Œ{…‚Œ}xwurzyˆy‰{€|†}„„||‚z{|€{yzz€u‚wˆx†kyoxzuw~„…„sƒˆyŠ‚wx†}€…{‡€x…{€~zv…€{z‡v‚™„€„xy‡€’yyƒ}‡~‚~w„z{ˆ}y€xx…„p‘‡|‹…}{y…|{ss‡zyzs…vˆ„yw€†u†sz‚†y„ƒt‹„ƒƒˆƒ‰y€€~…Œr|wlyx„‚{‰tu{~ƒ‚{ƒk‚wˆŠ€…‚|‰‰†z~}zuyŽ~z}…|…„{„ˆ|~‚z€„z†Š‡†…‚zƒuvŒ|“n`twž•‘^^m[’Œ £vnbcˆ{ §}…W^rw¦ž˜’jWs[˜”˜ŸefcgxŠž™y\as~¨™‘ž_fji’Ÿ¡Ÿuo\iŒª•z~X[vrœ¬„œa`ai“›š£bxQd„ƒ¢§s‚\_vvˆª‰“_lPsŠ•Ÿštyg^ˆŒ™±‹iP{{¥¢’‘]url§˜ž£ajaY“ «ˆ‰Tdyw§‘‰‡ddd`‘˜žœpi_S…£¢}€Tb{n¬ž“‡X_nl£’•™ol_Y‚‰¢Ÿs‹[Yv¢£‹[jul†™“’~qXeŒ­¦‘T`~mªœœ‘yYuh ¦uir[x•|…`Z|r£š~^_g_•’dpXX‡‚–©f}`Tywœ ’†emUf‹Ž‘¥gwga”| ¤~wXT|v¯“žbfdY¤Ÿšv{g^„k›†_f€s­¤{˜\fr]’ ¥kqUg‘¥Ÿ‹‰`w„m£  k]tnƒœ¤˜nfXf†‚˜ŸtŠ[Vo—¢¡`nij›ª˜–iv_f‹yœ¡r†bUxs¦žˆVcll•—˜¢jƒV^€žœ€ŠbYbi¦“gherœ§exqPˆ¬Ÿ‹ƒSZyo¦—‘˜Vej[™¥—¤q„lXŒ«™~‚atst™–ªalhi–˜ žpmad“¥ ‚ˆc`tr¤Ÿh_eY˜”—¢os]]ƒˆ§¨u]`yl¤ˆŽehbg”¤”u{kbŠš }]O}d›¥–”gSpbŒ‚’—n{P]–|¡°p†XYte­“™”[ocdš‹˜€j…z„{…|}}x“~‰}„ˆˆ|ƒ‡}‰{Šƒ‹{s‹w„‚w…}|…‚ƒ~}…y|~zuŠ„€~‡…‡€…y†qz€~‡xv~ƒ‚ƒ|zƒˆ}Šy…„zŠxw…u‰{y}†u|v‰zŠ{z}‡{ˆ}‘}~r‚‚‰kƒy‹‚|yt…rˆxs~ƒzƒxu…{ƒ{vz|m}€yƒ€~€„z…„„u‡†~€…x€•t‹x~Š…yˆ‡z…~|{€‚‚„|Š…€‡|nƒ‚{‚|‡y‡„‚z†z{‡Š…‚}„wy{€}‚}|†ˆwz|yz„n}ym„†{‚{w††{Švw‚~€|y‰||…vx€~}ƒ†~Œ€…‡‡€‚}x{|‚‚ƒ|u|‡„…„~Šs†~Œ~ƒ~ƒ~~p}†tŠ~y|ƒpƒx“}‰~‚‰}‰t€vy}x…qƒ‚‘y‡vz…w{||„~€~|‰~wxt‚t€vˆŒ„v‡}ƒƒzy}yƒŒ„‡{v‰wwŠ‡}€„~„z„}z{}~€w}w‡†yu}}~„y€~†sŠ}…†}z‰†~€~q‹{…zrŠv|uƒz‡‚ˆ€‹}tŒ|ŠvŽ{lŠwŽŠ~zz€wzƒsƒz}}yŽ}„t€ƒ…usƒy€‚{z„}ƒ~€|€‚„…zƒ|ry~v‰Šr~{‡r}†{}x~€‹€„ƒ…‡~qr|}ƒ‰…|z‚„Œ{v„x€{}q…ƒ}zywvƒx†…{ˆ‚qup‡ˆ–~Œ~Zve§’œoc_f–‘©œl|_^€®•~wY_xr¦¥•djhe’Œ—ž|xeY…™§q€eY{z¢›”–cph\™Š¢oxg^„”£§zebzr¥œ’–e]gb‘ŒŸntc`Ž‰ª™y}Vezi £›]\lhŽ“ŸœqvT_€ƒ¬™‰`Y•d–Ÿ•l`icš˜ ›xqRb†”¥œx|cY~tŸ›„Šecjh‘‹¢–eoe[‚£¨€ƒbcyx—£‘[fie™—ž¡jo_dˆ‹žšswY^vu —‘‰Yin^š™¢tlfYz ‚}\cs{›…†rƒƒ…‚z‚‹~zzw‡ˆ~x‹ysz|‰}ƒ„{||†‡Švq~y…‰z{yƒˆ~‚‚{y……‚„w‚‰}{~u‹ƒ{vr}ƒ€‹„zvƒy…|€{…{}ˆwŒ‰{Œ}‚ˆ{y~x}wy‡|wy‚†zˆ€s‡wxsƒŽ~ˆy‰y”…‚~|y{‚|zly}p€}swyƒ{}†yy€yxŠq}„…Šu|u‚|~vuzz‚~–y…zƒ{ˆxƒ~|‚xn‰{t‚Š„††„ƒ|…j……x‰w€€‰wŽz‚‚‹€†„‡ok†q‰{€w‰u{xpŠs„zƒ…‹‰||{„x€€‚z‚€Œz~xrvpx|xz}ƒ}z{wˆ}€|‹€~ƒum€zt‹„{r‚{{x„yƒzz{~|s|}}‚r|‹†‡ƒ|„}„€qˆ|ˆwuzŒ„z‚t‚y…{‰~„yŠqw‡ƒ‚ŠƒŒnx‚txyŠr{u…†…Œ‚~|~€…v|…‚}ˆ|x‚sq|q~xr}|{~pt{„v’|y†ƒ€ƒwyŽ€x‚yy‡~‹z}xr…~xtˆ~‡ˆ~‡‡†uŠŒ~}z€‚ˆu…yŠs}†xƒ…ƒ„}œ¢„m[TŠy¥ž}`Xos•©‹§decU‘‹œ ok^c‚ž§…„VO{f§ŸŽjbm[•›ylca{¨¯ˆhV‡g–}rehnš‘š™hYY}‰Ÿ¦ƒwYf}u« •gco_›†ª¡lp]b‡§©rXc~w¦›ˆTej_œ›–ªypj[‰¨«€„SSƒd–”}œ^eoaš•œ—wnWl~•z}W_€€¢ ‰‰lbi[“›žpme]ŠŠ§ j{^b”z š‹]ZUv¥š¤ kp`cqŽ™žysaSuy­¨‹Ujjh¡„¤‚mkic’wyyŠuŠ‚„‚‚ƒy‚|Œx†‡‡ƒ€~w…kƒ{€ƒ…}„‚|ƒy}‡~yzƒŠyuz‚ƒƒ‡ƒ{‚ƒƒ}ˆv„x||†zƒ~ƒu†x„€}|€…rŠ„ƒlŒ‰Œwyƒ…€…†y„}{}€tŽ„Š‰†ƒz|~vuƒ|yz~ƒ{izo„w…€~…„‰Ž{|…~ˆŠƒ‹„…Šz~y|‚ˆxƒ}ˆƒw…xz‚„†xy†„…ƒ}‚ƒ}~…y{ƒ„{Ž‰€„†o†ƒ~…~€ˆŠŠ‰‡w}ˆŠ……‚„†u‚{€w‡v}q||€|‚‹ˆŠ†mƒx…or~¢¦Ÿ…g^ii¤šŸer`a‘ŒŸžnvea„†¢¡Š}idpo£œ‘¤cpeT‡Œ• w|\eyŸ¥‡‘^gt`“˜šhkgPŽš™«xw_e€Ž¡’††`dx_•”Œ™g[b`Œ—–¥„{dkŒžŸ„žUkq‚“°Žšrigk‘—´w{_\‡i¯¡†b]wr¥’–˜uphbš”¡¬s{_Z‡§ˆ{mVdpœš“a|nbŽŒ­[xPEƒˆ—«{T\dq¥˜”¢Xncy…—Žª`|`b}Œ¢ƒ“dh|j£’‚jnq^—•§š†{^cƒ‚´¢Ž˜RXyh«•ŸdYs`‘‹œzxR[“„¬¡…ƒ_]iq  •–R`hh˜ mtW`˜›ƒX_ssœ¢š˜]hag¡˜§™j~j\„žªˆˆZmkwŸ—‡Yk^cŠ›œvt\Vy¥ƒŒjiŠk«¢›Ÿeldb–¡¦njf]w’’˜Œ_Oƒf¢¡¡“hhqf–Ÿ¨žwweUƒ…¤«}‹Zlwq¤–“‘Viid•£•~vWX|t¨ž}„^Rmnœ˜ˆškdefªŒ¢ lyi\”—¤†‡d]lr•¬œ˜pe]l–”—fqbV‰£°~W[rk¡Ž”ŽTn_j–Œ–ƒ{xytsƒƒ‚‰~~„yrƒzz|†‚x‡€}}|x€‚Œy€qv‹†…w|„ƒˆˆ|~‚ˆ€~qz{z‰ƒz|‚~“}„|…‡ˆ‚ƒ†€|{t–†y€~xx||ˆ†~w}€|†€‘y{ƒy}„‰qˆ„}‰{r~x€u{~Š~€u|z}z„|~x‰‚†v|…†…‚‚{„w~„„€xˆ„s‰‰€„|x|€t‘ƒy†xv‚z‚†to|……€{„~}|s…‰€xrƒx|g{ƒ|€}Šƒ~‚}z‚€x…„…ƒ€†w‚…€€yssŠ†w„{v„}ƒyy€th}›’œjhjdŽ€©¡w~bLw££’Š]gqj«ž›“q`cb•€ ezdWz˜¤ˆŒqimpœ“–›jpsb…žœiz\XŒ…¬¦‰†d`rf—–“˜_ggm‘Š•²sySj€¨ \ No newline at end of file diff --git a/build/src/librtlsdr.a b/build/src/librtlsdr.a new file mode 100644 index 0000000..e2774d3 Binary files /dev/null and b/build/src/librtlsdr.a differ diff --git a/build/src/librtlsdr.so b/build/src/librtlsdr.so new file mode 120000 index 0000000..3b02137 --- /dev/null +++ b/build/src/librtlsdr.so @@ -0,0 +1 @@ +librtlsdr.so.0 \ No newline at end of file diff --git a/build/src/librtlsdr.so.0 b/build/src/librtlsdr.so.0 new file mode 120000 index 0000000..8be1ee0 --- /dev/null +++ b/build/src/librtlsdr.so.0 @@ -0,0 +1 @@ +librtlsdr.so.0.0.0 \ No newline at end of file diff --git a/build/src/librtlsdr.so.0.0.0 b/build/src/librtlsdr.so.0.0.0 new file mode 100755 index 0000000..f7cbcfd Binary files /dev/null and b/build/src/librtlsdr.so.0.0.0 differ diff --git a/build/src/rtl_433 b/build/src/rtl_433 new file mode 100755 index 0000000..96b7358 Binary files /dev/null and b/build/src/rtl_433 differ diff --git a/build/src/rtl_adsb b/build/src/rtl_adsb new file mode 100755 index 0000000..85e1d4e Binary files /dev/null and b/build/src/rtl_adsb differ diff --git a/build/src/rtl_eeprom b/build/src/rtl_eeprom new file mode 100755 index 0000000..a64a004 Binary files /dev/null and b/build/src/rtl_eeprom differ diff --git a/build/src/rtl_fm b/build/src/rtl_fm new file mode 100755 index 0000000..55e3a72 Binary files /dev/null and b/build/src/rtl_fm differ diff --git a/build/src/rtl_sdr b/build/src/rtl_sdr new file mode 100755 index 0000000..14f3af6 Binary files /dev/null and b/build/src/rtl_sdr differ diff --git a/build/src/rtl_tcp b/build/src/rtl_tcp new file mode 100755 index 0000000..cd7cef7 Binary files /dev/null and b/build/src/rtl_tcp differ diff --git a/build/src/rtl_test b/build/src/rtl_test new file mode 100755 index 0000000..30551e3 Binary files /dev/null and b/build/src/rtl_test differ diff --git a/cmake/Modules/FindLibUSB.cmake b/cmake/Modules/FindLibUSB.cmake new file mode 100644 index 0000000..97f3db6 --- /dev/null +++ b/cmake/Modules/FindLibUSB.cmake @@ -0,0 +1,28 @@ +if(NOT LIBUSB_FOUND) + pkg_check_modules (LIBUSB_PKG libusb-1.0) + find_path(LIBUSB_INCLUDE_DIR NAMES libusb.h + PATHS + ${LIBUSB_PKG_INCLUDE_DIRS} + /usr/include/libusb-1.0 + /usr/include + /usr/local/include + ) + + find_library(LIBUSB_LIBRARIES NAMES usb-1.0 + PATHS + ${LIBUSB_PKG_LIBRARY_DIRS} + /usr/lib + /usr/local/lib + ) + +if(LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES) + set(LIBUSB_FOUND TRUE CACHE INTERNAL "libusb-1.0 found") + message(STATUS "Found libusb-1.0: ${LIBUSB_INCLUDE_DIR}, ${LIBUSB_LIBRARIES}") +else(LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES) + set(LIBUSB_FOUND FALSE CACHE INTERNAL "libusb-1.0 found") + message(STATUS "libusb-1.0 not found.") +endif(LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES) + +mark_as_advanced(LIBUSB_INCLUDE_DIR LIBUSB_LIBRARIES) + +endif(NOT LIBUSB_FOUND) diff --git a/cmake/Modules/FindThreads.cmake b/cmake/Modules/FindThreads.cmake new file mode 100644 index 0000000..8028b15 --- /dev/null +++ b/cmake/Modules/FindThreads.cmake @@ -0,0 +1,246 @@ +# Updated FindThreads.cmake that supports pthread-win32 +# Downloaded from http://www.vtk.org/Bug/bug_view_advanced_page.php?bug_id=6399 + +# - This module determines the thread library of the system. +# +# The following variables are set +# CMAKE_THREAD_LIBS_INIT - the thread library +# CMAKE_USE_SPROC_INIT - are we using sproc? +# CMAKE_USE_WIN32_THREADS_INIT - using WIN32 threads? +# CMAKE_USE_PTHREADS_INIT - are we using pthreads +# CMAKE_HP_PTHREADS_INIT - are we using hp pthreads +# +# If use of pthreads-win32 is desired, the following variables +# can be set. +# +# THREADS_USE_PTHREADS_WIN32 - +# Setting this to true searches for the pthreads-win32 +# port (since CMake 2.8.0) +# +# THREADS_PTHREADS_WIN32_EXCEPTION_SCHEME +# C = no exceptions (default) +# (NOTE: This is the default scheme on most POSIX thread +# implementations and what you should probably be using) +# CE = C++ Exception Handling +# SE = Structure Exception Handling (MSVC only) +# (NOTE: Changing this option from the default may affect +# the portability of your application. See pthreads-win32 +# documentation for more details.) +# +#====================================================== +# Example usage where threading library +# is provided by the system: +# +# find_package(Threads REQUIRED) +# add_executable(foo foo.cc) +# target_link_libraries(foo ${CMAKE_THREAD_LIBS_INIT}) +# +# Example usage if pthreads-win32 is desired on Windows +# or a system provided thread library: +# +# set(THREADS_USE_PTHREADS_WIN32 true) +# find_package(Threads REQUIRED) +# include_directories(${THREADS_PTHREADS_INCLUDE_DIR}) +# +# add_executable(foo foo.cc) +# target_link_libraries(foo ${CMAKE_THREAD_LIBS_INIT}) +# + +INCLUDE (CheckIncludeFiles) +INCLUDE (CheckLibraryExists) +SET(Threads_FOUND FALSE) + +IF(WIN32 AND NOT CYGWIN AND THREADS_USE_PTHREADS_WIN32) + SET(_Threads_ptwin32 true) +ENDIF() + +# Do we have sproc? +IF(CMAKE_SYSTEM MATCHES IRIX) + CHECK_INCLUDE_FILES("sys/types.h;sys/prctl.h" CMAKE_HAVE_SPROC_H) +ENDIF() + +IF(CMAKE_HAVE_SPROC_H) + # We have sproc + SET(CMAKE_USE_SPROC_INIT 1) + +ELSEIF(_Threads_ptwin32) + + IF(NOT DEFINED THREADS_PTHREADS_WIN32_EXCEPTION_SCHEME) + # Assign the default scheme + SET(THREADS_PTHREADS_WIN32_EXCEPTION_SCHEME "C") + ELSE() + # Validate the scheme specified by the user + IF(NOT THREADS_PTHREADS_WIN32_EXCEPTION_SCHEME STREQUAL "C" AND + NOT THREADS_PTHREADS_WIN32_EXCEPTION_SCHEME STREQUAL "CE" AND + NOT THREADS_PTHREADS_WIN32_EXCEPTION_SCHEME STREQUAL "SE") + MESSAGE(FATAL_ERROR "See documentation for FindPthreads.cmake, only C, CE, and SE modes are allowed") + ENDIF() + IF(NOT MSVC AND THREADS_PTHREADS_WIN32_EXCEPTION_SCHEME STREQUAL "SE") + MESSAGE(FATAL_ERROR "Structured Exception Handling is only allowed for MSVC") + ENDIF(NOT MSVC AND THREADS_PTHREADS_WIN32_EXCEPTION_SCHEME STREQUAL "SE") + ENDIF() + + FIND_PATH(THREADS_PTHREADS_INCLUDE_DIR pthread.h) + + # Determine the library filename + IF(MSVC) + SET(_Threads_pthreads_libname + pthreadV${THREADS_PTHREADS_WIN32_EXCEPTION_SCHEME}2) + ELSEIF(MINGW) + SET(_Threads_pthreads_libname + pthreadG${THREADS_PTHREADS_WIN32_EXCEPTION_SCHEME}2) + ELSE() + MESSAGE(FATAL_ERROR "This should never happen") + ENDIF() + + # Use the include path to help find the library if possible + SET(_Threads_lib_paths "") + IF(THREADS_PTHREADS_INCLUDE_DIR) + GET_FILENAME_COMPONENT(_Threads_root_dir + ${THREADS_PTHREADS_INCLUDE_DIR} PATH) + SET(_Threads_lib_paths ${_Threads_root_dir}/lib) + ENDIF() + FIND_LIBRARY(THREADS_PTHREADS_WIN32_LIBRARY + NAMES ${_Threads_pthreads_libname} + PATHS ${_Threads_lib_paths} + DOC "The Portable Threads Library for Win32" + NO_SYSTEM_PATH + ) + + IF(THREADS_PTHREADS_INCLUDE_DIR AND THREADS_PTHREADS_WIN32_LIBRARY) + MARK_AS_ADVANCED(THREADS_PTHREADS_INCLUDE_DIR) + SET(CMAKE_THREAD_LIBS_INIT ${THREADS_PTHREADS_WIN32_LIBRARY}) + SET(CMAKE_HAVE_THREADS_LIBRARY 1) + SET(Threads_FOUND TRUE) + ENDIF() + + MARK_AS_ADVANCED(THREADS_PTHREADS_WIN32_LIBRARY) + +ELSE() + # Do we have pthreads? + CHECK_INCLUDE_FILES("pthread.h" CMAKE_HAVE_PTHREAD_H) + IF(CMAKE_HAVE_PTHREAD_H) + + # + # We have pthread.h + # Let's check for the library now. + # + SET(CMAKE_HAVE_THREADS_LIBRARY) + IF(NOT THREADS_HAVE_PTHREAD_ARG) + + # Do we have -lpthreads + CHECK_LIBRARY_EXISTS(pthreads pthread_create "" CMAKE_HAVE_PTHREADS_CREATE) + IF(CMAKE_HAVE_PTHREADS_CREATE) + SET(CMAKE_THREAD_LIBS_INIT "-lpthreads") + SET(CMAKE_HAVE_THREADS_LIBRARY 1) + SET(Threads_FOUND TRUE) + ENDIF() + + # Ok, how about -lpthread + CHECK_LIBRARY_EXISTS(pthread pthread_create "" CMAKE_HAVE_PTHREAD_CREATE) + IF(CMAKE_HAVE_PTHREAD_CREATE) + SET(CMAKE_THREAD_LIBS_INIT "-lpthread") + SET(Threads_FOUND TRUE) + SET(CMAKE_HAVE_THREADS_LIBRARY 1) + ENDIF() + + IF(CMAKE_SYSTEM MATCHES "SunOS.*") + # On sun also check for -lthread + CHECK_LIBRARY_EXISTS(thread thr_create "" CMAKE_HAVE_THR_CREATE) + IF(CMAKE_HAVE_THR_CREATE) + SET(CMAKE_THREAD_LIBS_INIT "-lthread") + SET(CMAKE_HAVE_THREADS_LIBRARY 1) + SET(Threads_FOUND TRUE) + ENDIF() + ENDIF(CMAKE_SYSTEM MATCHES "SunOS.*") + + ENDIF(NOT THREADS_HAVE_PTHREAD_ARG) + + IF(NOT CMAKE_HAVE_THREADS_LIBRARY) + # If we did not found -lpthread, -lpthread, or -lthread, look for -pthread + IF("THREADS_HAVE_PTHREAD_ARG" MATCHES "^THREADS_HAVE_PTHREAD_ARG") + MESSAGE(STATUS "Check if compiler accepts -pthread") + TRY_RUN(THREADS_PTHREAD_ARG THREADS_HAVE_PTHREAD_ARG + ${CMAKE_BINARY_DIR} + ${CMAKE_ROOT}/Modules/CheckForPthreads.c + CMAKE_FLAGS -DLINK_LIBRARIES:STRING=-pthread + COMPILE_OUTPUT_VARIABLE OUTPUT) + + IF(THREADS_HAVE_PTHREAD_ARG) + IF(THREADS_PTHREAD_ARG MATCHES "^2$") + SET(Threads_FOUND TRUE) + MESSAGE(STATUS "Check if compiler accepts -pthread - yes") + ELSE() + MESSAGE(STATUS "Check if compiler accepts -pthread - no") + FILE(APPEND + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log + "Determining if compiler accepts -pthread returned ${THREADS_PTHREAD_ARG} instead of 2. The compiler had the following output:\n${OUTPUT}\n\n") + ENDIF() + ELSE() + MESSAGE(STATUS "Check if compiler accepts -pthread - no") + FILE(APPEND + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log + "Determining if compiler accepts -pthread failed with the following output:\n${OUTPUT}\n\n") + ENDIF() + + ENDIF("THREADS_HAVE_PTHREAD_ARG" MATCHES "^THREADS_HAVE_PTHREAD_ARG") + + IF(THREADS_HAVE_PTHREAD_ARG) + SET(Threads_FOUND TRUE) + SET(CMAKE_THREAD_LIBS_INIT "-pthread") + ENDIF() + + ENDIF(NOT CMAKE_HAVE_THREADS_LIBRARY) + ENDIF(CMAKE_HAVE_PTHREAD_H) +ENDIF() + +IF(CMAKE_THREAD_LIBS_INIT) + SET(CMAKE_USE_PTHREADS_INIT 1) + SET(Threads_FOUND TRUE) +ENDIF() + +IF(CMAKE_SYSTEM MATCHES "Windows" + AND NOT THREADS_USE_PTHREADS_WIN32) + SET(CMAKE_USE_WIN32_THREADS_INIT 1) + SET(Threads_FOUND TRUE) +ENDIF() + +IF(CMAKE_USE_PTHREADS_INIT) + IF(CMAKE_SYSTEM MATCHES "HP-UX-*") + # Use libcma if it exists and can be used. It provides more + # symbols than the plain pthread library. CMA threads + # have actually been deprecated: + # http://docs.hp.com/en/B3920-90091/ch12s03.html#d0e11395 + # http://docs.hp.com/en/947/d8.html + # but we need to maintain compatibility here. + # The CMAKE_HP_PTHREADS setting actually indicates whether CMA threads + # are available. + CHECK_LIBRARY_EXISTS(cma pthread_attr_create "" CMAKE_HAVE_HP_CMA) + IF(CMAKE_HAVE_HP_CMA) + SET(CMAKE_THREAD_LIBS_INIT "-lcma") + SET(CMAKE_HP_PTHREADS_INIT 1) + SET(Threads_FOUND TRUE) + ENDIF(CMAKE_HAVE_HP_CMA) + SET(CMAKE_USE_PTHREADS_INIT 1) + ENDIF() + + IF(CMAKE_SYSTEM MATCHES "OSF1-V*") + SET(CMAKE_USE_PTHREADS_INIT 0) + SET(CMAKE_THREAD_LIBS_INIT ) + ENDIF() + + IF(CMAKE_SYSTEM MATCHES "CYGWIN_NT*") + SET(CMAKE_USE_PTHREADS_INIT 1) + SET(Threads_FOUND TRUE) + SET(CMAKE_THREAD_LIBS_INIT ) + SET(CMAKE_USE_WIN32_THREADS_INIT 0) + ENDIF() +ENDIF(CMAKE_USE_PTHREADS_INIT) + +INCLUDE(FindPackageHandleStandardArgs) +IF(_Threads_ptwin32) + FIND_PACKAGE_HANDLE_STANDARD_ARGS(Threads DEFAULT_MSG + THREADS_PTHREADS_WIN32_LIBRARY THREADS_PTHREADS_INCLUDE_DIR) +ELSE() + FIND_PACKAGE_HANDLE_STANDARD_ARGS(Threads DEFAULT_MSG Threads_FOUND) +ENDIF() diff --git a/cmake/cmake_uninstall.cmake.in b/cmake/cmake_uninstall.cmake.in new file mode 100644 index 0000000..9ae1ae4 --- /dev/null +++ b/cmake/cmake_uninstall.cmake.in @@ -0,0 +1,32 @@ +# http://www.vtk.org/Wiki/CMake_FAQ#Can_I_do_.22make_uninstall.22_with_CMake.3F + +IF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") + MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"") +ENDIF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") + +FILE(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) +STRING(REGEX REPLACE "\n" ";" files "${files}") +FOREACH(file ${files}) + MESSAGE(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"") + IF(EXISTS "$ENV{DESTDIR}${file}") + EXEC_PROGRAM( + "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" + OUTPUT_VARIABLE rm_out + RETURN_VALUE rm_retval + ) + IF(NOT "${rm_retval}" STREQUAL 0) + MESSAGE(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") + ENDIF(NOT "${rm_retval}" STREQUAL 0) + ELSEIF(IS_SYMLINK "$ENV{DESTDIR}${file}") + EXEC_PROGRAM( + "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" + OUTPUT_VARIABLE rm_out + RETURN_VALUE rm_retval + ) + IF(NOT "${rm_retval}" STREQUAL 0) + MESSAGE(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") + ENDIF(NOT "${rm_retval}" STREQUAL 0) + ELSE(EXISTS "$ENV{DESTDIR}${file}") + MESSAGE(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.") + ENDIF(EXISTS "$ENV{DESTDIR}${file}") +ENDFOREACH(file) diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..a947e80 --- /dev/null +++ b/configure.ac @@ -0,0 +1,76 @@ +AC_INIT([librtlsdr], + m4_esyscmd([./git-version-gen .tarball-version]), + [osmocom-sdr@lists.osmocom.org]) + +AM_INIT_AUTOMAKE([dist-bzip2]) + +dnl kernel style compile messages +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) + +dnl checks for programs +AC_PROG_MAKE_SET +AC_PROG_CC +AC_PROG_INSTALL +LT_INIT +AC_PROG_LIBTOOL + +PKG_CHECK_MODULES(LIBUSB, libusb-1.0 >= 1.0) +LIBS="$LIBS $LIBUSB_LIBS" +CFLAGS="$CFLAGS $LIBUSB_CFLAGS" + +AC_PATH_PROG(DOXYGEN,doxygen,false) +AM_CONDITIONAL(HAVE_DOXYGEN, test $DOXYGEN != false) + +AC_CONFIG_MACRO_DIR([m4]) + +dnl checks for header files +AC_HEADER_STDC +AC_CHECK_HEADERS(sys/types.h) +AC_CHECK_HEADERS(pthread.h,, [AC_MSG_ERROR([pthread.h required])]) + +# pc variables +AC_SUBST(RTLSDR_PC_LIBS,["$LIBS"]) +AC_SUBST(RTLSDR_PC_CFLAGS,["$CFLAGS"]) + +dnl checks for required libraries +dnl pthreads +AC_CHECK_LIB(pthread, pthread_create, [LIBS="$LIBS -lpthread"]) + +dnl libmath (for rtl_fm) +AC_CHECK_LIB(m, atan2, [LIBS="$LIBS -lm"]) + +dnl libmath (for rtl_adsb) +AC_CHECK_LIB(m, sqrt, [LIBS="$LIBS -lm"]) + +dnl librealtime (for rtl_test) +AC_CHECK_LIB(rt, clock_gettime, [LIBS="$LIBS -lrt"]) + +# The following test is taken from WebKit's webkit.m4 +saved_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -fvisibility=hidden " +AC_MSG_CHECKING([if ${CC} supports -fvisibility=hidden]) +AC_COMPILE_IFELSE([AC_LANG_SOURCE([char foo;])], + [ AC_MSG_RESULT([yes]) + SYMBOL_VISIBILITY="-fvisibility=hidden"], + AC_MSG_RESULT([no])) +CFLAGS="$saved_CFLAGS" +AC_SUBST(SYMBOL_VISIBILITY) + +AC_MSG_CHECKING(whether compiler understands -Wall) +old_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -Wall -Wextra -Wno-unused -Wsign-compare" +AC_TRY_COMPILE([],[], + AC_MSG_RESULT(yes), + AC_MSG_RESULT(no) + CFLAGS="$old_CFLAGS") + +dnl Generate the output +AM_CONFIG_HEADER(config.h) + +AC_OUTPUT( + librtlsdr.pc + include/Makefile + src/Makefile + Makefile + Doxyfile +) diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt new file mode 100644 index 0000000..507c0c7 --- /dev/null +++ b/include/CMakeLists.txt @@ -0,0 +1,27 @@ +# Copyright 2012 OSMOCOM Project +# +# This file is part of rtl-sdr +# +# GNU Radio is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GNU Radio is distributed in the hope that it will be useful, +# but WITHOUT 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 GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +######################################################################## +# Install public header files +######################################################################## +install(FILES + rtl-sdr.h + rtl-sdr_export.h + DESTINATION include +) diff --git a/include/Makefile.am b/include/Makefile.am new file mode 100644 index 0000000..1c45b89 --- /dev/null +++ b/include/Makefile.am @@ -0,0 +1,5 @@ +rtlsdr_HEADERS = rtl-sdr.h rtl-sdr_export.h + +noinst_HEADERS = reg_field.h rtlsdr_i2c.h tuner_e4k.h tuner_fc0012.h tuner_fc0013.h tuner_fc2580.h tuner_r820t.h + +rtlsdrdir = $(includedir) diff --git a/include/reg_field.h b/include/reg_field.h new file mode 100644 index 0000000..18a6922 --- /dev/null +++ b/include/reg_field.h @@ -0,0 +1,60 @@ +#ifndef _REG_FIELD_H +#define _REG_FIELD_H + +#include +#include + +enum cmd_op { + CMD_OP_GET = (1 << 0), + CMD_OP_SET = (1 << 1), + CMD_OP_EXEC = (1 << 2), +}; + +enum pstate { + ST_IN_CMD, + ST_IN_ARG, +}; + +struct strbuf { + uint8_t idx; + char buf[32]; +}; + +struct cmd_state { + struct strbuf cmd; + struct strbuf arg; + enum pstate state; + void (*out)(const char *format, va_list ap); +}; + +struct cmd { + const char *cmd; + uint32_t ops; + int (*cb)(struct cmd_state *cs, enum cmd_op op, const char *cmd, + int argc, char **argv); + const char *help; +}; + +/* structure describing a field in a register */ +struct reg_field { + uint8_t reg; + uint8_t shift; + uint8_t width; +}; + +struct reg_field_ops { + const struct reg_field *fields; + const char **field_names; + uint32_t num_fields; + void *data; + int (*write_cb)(void *data, uint32_t reg, uint32_t val); + uint32_t (*read_cb)(void *data, uint32_t reg); +}; + +uint32_t reg_field_read(struct reg_field_ops *ops, struct reg_field *field); +int reg_field_write(struct reg_field_ops *ops, struct reg_field *field, uint32_t val); +int reg_field_cmd(struct cmd_state *cs, enum cmd_op op, + const char *cmd, int argc, char **argv, + struct reg_field_ops *ops); + +#endif diff --git a/include/rtl-sdr.h b/include/rtl-sdr.h new file mode 100644 index 0000000..75bfd3f --- /dev/null +++ b/include/rtl-sdr.h @@ -0,0 +1,366 @@ +/* + * rtl-sdr, turns your Realtek RTL2832 based DVB dongle into a SDR receiver + * Copyright (C) 2012 by Steve Markgraf + * Copyright (C) 2012 by Dimitri Stolnikov + * + * 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, see . + */ + +#ifndef __RTL_SDR_H +#define __RTL_SDR_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +typedef struct rtlsdr_dev rtlsdr_dev_t; + +RTLSDR_API uint32_t rtlsdr_get_device_count(void); + +RTLSDR_API const char* rtlsdr_get_device_name(uint32_t index); + +/*! + * Get USB device strings. + * + * NOTE: The string arguments must provide space for up to 256 bytes. + * + * \param index the device index + * \param manufact manufacturer name, may be NULL + * \param product product name, may be NULL + * \param serial serial number, may be NULL + * \return 0 on success + */ +RTLSDR_API int rtlsdr_get_device_usb_strings(uint32_t index, + char *manufact, + char *product, + char *serial); + +/*! + * Get device index by USB serial string descriptor. + * + * \param serial serial string of the device + * \return device index of first device where the name matched + * \return -1 if name is NULL + * \return -2 if no devices were found at all + * \return -3 if devices were found, but none with matching name + */ +RTLSDR_API int rtlsdr_get_index_by_serial(const char *serial); + +RTLSDR_API int rtlsdr_open(rtlsdr_dev_t **dev, uint32_t index); + +RTLSDR_API int rtlsdr_close(rtlsdr_dev_t *dev); + +/* configuration functions */ + +/*! + * Set crystal oscillator frequencies used for the RTL2832 and the tuner IC. + * + * Usually both ICs use the same clock. Changing the clock may make sense if + * you are applying an external clock to the tuner or to compensate the + * frequency (and samplerate) error caused by the original (cheap) crystal. + * + * NOTE: Call this function only if you fully understand the implications. + * + * \param dev the device handle given by rtlsdr_open() + * \param rtl_freq frequency value used to clock the RTL2832 in Hz + * \param tuner_freq frequency value used to clock the tuner IC in Hz + * \return 0 on success + */ +RTLSDR_API int rtlsdr_set_xtal_freq(rtlsdr_dev_t *dev, uint32_t rtl_freq, + uint32_t tuner_freq); + +/*! + * Get crystal oscillator frequencies used for the RTL2832 and the tuner IC. + * + * Usually both ICs use the same clock. + * + * \param dev the device handle given by rtlsdr_open() + * \param rtl_freq frequency value used to clock the RTL2832 in Hz + * \param tuner_freq frequency value used to clock the tuner IC in Hz + * \return 0 on success + */ +RTLSDR_API int rtlsdr_get_xtal_freq(rtlsdr_dev_t *dev, uint32_t *rtl_freq, + uint32_t *tuner_freq); + +/*! + * Get USB device strings. + * + * NOTE: The string arguments must provide space for up to 256 bytes. + * + * \param dev the device handle given by rtlsdr_open() + * \param manufact manufacturer name, may be NULL + * \param product product name, may be NULL + * \param serial serial number, may be NULL + * \return 0 on success + */ +RTLSDR_API int rtlsdr_get_usb_strings(rtlsdr_dev_t *dev, char *manufact, + char *product, char *serial); + +/*! + * Write the device EEPROM + * + * \param dev the device handle given by rtlsdr_open() + * \param data buffer of data to be written + * \param offset address where the data should be written + * \param len length of the data + * \return 0 on success + * \return -1 if device handle is invalid + * \return -2 if EEPROM size is exceeded + * \return -3 if no EEPROM was found + */ + +RTLSDR_API int rtlsdr_write_eeprom(rtlsdr_dev_t *dev, uint8_t *data, + uint8_t offset, uint16_t len); + +/*! + * Read the device EEPROM + * + * \param dev the device handle given by rtlsdr_open() + * \param data buffer where the data should be written + * \param offset address where the data should be read from + * \param len length of the data + * \return 0 on success + * \return -1 if device handle is invalid + * \return -2 if EEPROM size is exceeded + * \return -3 if no EEPROM was found + */ + +RTLSDR_API int rtlsdr_read_eeprom(rtlsdr_dev_t *dev, uint8_t *data, + uint8_t offset, uint16_t len); + +RTLSDR_API int rtlsdr_set_center_freq(rtlsdr_dev_t *dev, uint32_t freq); + +/*! + * Get actual frequency the device is tuned to. + * + * \param dev the device handle given by rtlsdr_open() + * \return 0 on error, frequency in Hz otherwise + */ +RTLSDR_API uint32_t rtlsdr_get_center_freq(rtlsdr_dev_t *dev); + +/*! + * Set the frequency correction value for the device. + * + * \param dev the device handle given by rtlsdr_open() + * \param ppm correction value in parts per million (ppm) + * \return 0 on success + */ +RTLSDR_API int rtlsdr_set_freq_correction(rtlsdr_dev_t *dev, int ppm); + +/*! + * Get actual frequency correction value of the device. + * + * \param dev the device handle given by rtlsdr_open() + * \return correction value in parts per million (ppm) + */ +RTLSDR_API int rtlsdr_get_freq_correction(rtlsdr_dev_t *dev); + +enum rtlsdr_tuner { + RTLSDR_TUNER_UNKNOWN = 0, + RTLSDR_TUNER_E4000, + RTLSDR_TUNER_FC0012, + RTLSDR_TUNER_FC0013, + RTLSDR_TUNER_FC2580, + RTLSDR_TUNER_R820T +}; + +/*! + * Get the tuner type. + * + * \param dev the device handle given by rtlsdr_open() + * \return RTLSDR_TUNER_UNKNOWN on error, tuner type otherwise + */ +RTLSDR_API enum rtlsdr_tuner rtlsdr_get_tuner_type(rtlsdr_dev_t *dev); + +/*! + * Get a list of gains supported by the tuner. + * + * NOTE: The gains argument must be preallocated by the caller. If NULL is + * being given instead, the number of available gain values will be returned. + * + * \param dev the device handle given by rtlsdr_open() + * \param gains array of gain values. In tenths of a dB, 115 means 11.5 dB. + * \return <= 0 on error, number of available (returned) gain values otherwise + */ +RTLSDR_API int rtlsdr_get_tuner_gains(rtlsdr_dev_t *dev, int *gains); + +/*! + * Set the gain for the device. + * Manual gain mode must be enabled for this to work. + * + * Valid gain values (in tenths of a dB) for the E4000 tuner: + * -10, 15, 40, 65, 90, 115, 140, 165, 190, + * 215, 240, 290, 340, 420, 430, 450, 470, 490 + * + * Valid gain values may be queried with \ref rtlsdr_get_tuner_gains function. + * + * \param dev the device handle given by rtlsdr_open() + * \param gain in tenths of a dB, 115 means 11.5 dB. + * \return 0 on success + */ +RTLSDR_API int rtlsdr_set_tuner_gain(rtlsdr_dev_t *dev, int gain); + +/*! + * Get actual gain the device is configured to. + * + * \param dev the device handle given by rtlsdr_open() + * \return 0 on error, gain in tenths of a dB, 115 means 11.5 dB. + */ +RTLSDR_API int rtlsdr_get_tuner_gain(rtlsdr_dev_t *dev); + +/*! + * Set the intermediate frequency gain for the device. + * + * \param dev the device handle given by rtlsdr_open() + * \param stage intermediate frequency gain stage number (1 to 6 for E4000) + * \param gain in tenths of a dB, -30 means -3.0 dB. + * \return 0 on success + */ +RTLSDR_API int rtlsdr_set_tuner_if_gain(rtlsdr_dev_t *dev, int stage, int gain); + +/*! + * Set the gain mode (automatic/manual) for the device. + * Manual gain mode must be enabled for the gain setter function to work. + * + * \param dev the device handle given by rtlsdr_open() + * \param manual gain mode, 1 means manual gain mode shall be enabled. + * \return 0 on success + */ +RTLSDR_API int rtlsdr_set_tuner_gain_mode(rtlsdr_dev_t *dev, int manual); + +/* this will select the baseband filters according to the requested sample rate */ +RTLSDR_API int rtlsdr_set_sample_rate(rtlsdr_dev_t *dev, uint32_t rate); + +/*! + * Get actual sample rate the device is configured to. + * + * \param dev the device handle given by rtlsdr_open() + * \return 0 on error, sample rate in Hz otherwise + */ +RTLSDR_API uint32_t rtlsdr_get_sample_rate(rtlsdr_dev_t *dev); + +/*! + * Enable test mode that returns an 8 bit counter instead of the samples. + * The counter is generated inside the RTL2832. + * + * \param dev the device handle given by rtlsdr_open() + * \param test mode, 1 means enabled, 0 disabled + * \return 0 on success + */ +RTLSDR_API int rtlsdr_set_testmode(rtlsdr_dev_t *dev, int on); + +/*! + * Enable or disable the internal digital AGC of the RTL2832. + * + * \param dev the device handle given by rtlsdr_open() + * \param digital AGC mode, 1 means enabled, 0 disabled + * \return 0 on success + */ +RTLSDR_API int rtlsdr_set_agc_mode(rtlsdr_dev_t *dev, int on); + +/*! + * Enable or disable the direct sampling mode. When enabled, the IF mode + * of the RTL2832 is activated, and rtlsdr_set_center_freq() will control + * the IF-frequency of the DDC, which can be used to tune from 0 to 28.8 MHz + * (xtal frequency of the RTL2832). + * + * \param dev the device handle given by rtlsdr_open() + * \param on 0 means disabled, 1 I-ADC input enabled, 2 Q-ADC input enabled + * \return 0 on success + */ +RTLSDR_API int rtlsdr_set_direct_sampling(rtlsdr_dev_t *dev, int on); + +/*! + * Get state of the direct sampling mode + * + * \param dev the device handle given by rtlsdr_open() + * \return -1 on error, 0 means disabled, 1 I-ADC input enabled + * 2 Q-ADC input enabled + */ +RTLSDR_API int rtlsdr_get_direct_sampling(rtlsdr_dev_t *dev); + +/*! + * Enable or disable offset tuning for zero-IF tuners, which allows to avoid + * problems caused by the DC offset of the ADCs and 1/f noise. + * + * \param dev the device handle given by rtlsdr_open() + * \param on 0 means disabled, 1 enabled + * \return 0 on success + */ +RTLSDR_API int rtlsdr_set_offset_tuning(rtlsdr_dev_t *dev, int on); + +/*! + * Get state of the offset tuning mode + * + * \param dev the device handle given by rtlsdr_open() + * \return -1 on error, 0 means disabled, 1 enabled + */ +RTLSDR_API int rtlsdr_get_offset_tuning(rtlsdr_dev_t *dev); + +/* streaming functions */ + +RTLSDR_API int rtlsdr_reset_buffer(rtlsdr_dev_t *dev); + +RTLSDR_API int rtlsdr_read_sync(rtlsdr_dev_t *dev, void *buf, int len, int *n_read); + +typedef void(*rtlsdr_read_async_cb_t)(unsigned char *buf, uint32_t len, void *ctx); + +/*! + * Read samples from the device asynchronously. This function will block until + * it is being canceled using rtlsdr_cancel_async() + * + * NOTE: This function is deprecated and is subject for removal. + * + * \param dev the device handle given by rtlsdr_open() + * \param cb callback function to return received samples + * \param ctx user specific context to pass via the callback function + * \return 0 on success + */ +RTLSDR_API int rtlsdr_wait_async(rtlsdr_dev_t *dev, rtlsdr_read_async_cb_t cb, void *ctx); + +/*! + * Read samples from the device asynchronously. This function will block until + * it is being canceled using rtlsdr_cancel_async() + * + * \param dev the device handle given by rtlsdr_open() + * \param cb callback function to return received samples + * \param ctx user specific context to pass via the callback function + * \param buf_num optional buffer count, buf_num * buf_len = overall buffer size + * set to 0 for default buffer count (32) + * \param buf_len optional buffer length, must be multiple of 512, + * set to 0 for default buffer length (16 * 32 * 512) + * \return 0 on success + */ +RTLSDR_API int rtlsdr_read_async(rtlsdr_dev_t *dev, + rtlsdr_read_async_cb_t cb, + void *ctx, + uint32_t buf_num, + uint32_t buf_len); + +/*! + * Cancel all pending asynchronous operations on the device. + * + * \param dev the device handle given by rtlsdr_open() + * \return 0 on success + */ +RTLSDR_API int rtlsdr_cancel_async(rtlsdr_dev_t *dev); + +#ifdef __cplusplus +} +#endif + +#endif /* __RTL_SDR_H */ diff --git a/include/rtl-sdr_export.h b/include/rtl-sdr_export.h new file mode 100644 index 0000000..69e178d --- /dev/null +++ b/include/rtl-sdr_export.h @@ -0,0 +1,47 @@ +/* + * rtl-sdr, turns your Realtek RTL2832 based DVB dongle into a SDR receiver + * Copyright (C) 2012 by Hoernchen + * + * 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, see . + */ + +#ifndef RTLSDR_EXPORT_H +#define RTLSDR_EXPORT_H + +#if defined __GNUC__ +# if __GNUC__ >= 4 +# define __SDR_EXPORT __attribute__((visibility("default"))) +# define __SDR_IMPORT __attribute__((visibility("default"))) +# else +# define __SDR_EXPORT +# define __SDR_IMPORT +# endif +#elif _MSC_VER +# define __SDR_EXPORT __declspec(dllexport) +# define __SDR_IMPORT __declspec(dllimport) +#else +# define __SDR_EXPORT +# define __SDR_IMPORT +#endif + +#ifndef rtlsdr_STATIC +# ifdef rtlsdr_EXPORTS +# define RTLSDR_API __SDR_EXPORT +# else +# define RTLSDR_API __SDR_IMPORT +# endif +#else +#define RTLSDR_API +#endif +#endif /* RTLSDR_EXPORT_H */ diff --git a/include/rtlsdr_i2c.h b/include/rtlsdr_i2c.h new file mode 100644 index 0000000..7676689 --- /dev/null +++ b/include/rtlsdr_i2c.h @@ -0,0 +1,8 @@ +#ifndef __I2C_H +#define __I2C_H + +uint32_t rtlsdr_get_tuner_clock(void *dev); +int rtlsdr_i2c_write_fn(void *dev, uint8_t addr, uint8_t *buf, int len); +int rtlsdr_i2c_read_fn(void *dev, uint8_t addr, uint8_t *buf, int len); + +#endif diff --git a/include/tuner_e4k.h b/include/tuner_e4k.h new file mode 100644 index 0000000..6db6b2a --- /dev/null +++ b/include/tuner_e4k.h @@ -0,0 +1,224 @@ +#ifndef _E4K_TUNER_H +#define _E4K_TUNER_H + +/* + * Elonics E4000 tuner driver + * + * (C) 2011-2012 by Harald Welte + * (C) 2012 by Sylvain Munaut + * (C) 2012 by Hoernchen + * + * All Rights Reserved + * + * 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, see . + */ + +#define E4K_I2C_ADDR 0xc8 +#define E4K_CHECK_ADDR 0x02 +#define E4K_CHECK_VAL 0x40 + +enum e4k_reg { + E4K_REG_MASTER1 = 0x00, + E4K_REG_MASTER2 = 0x01, + E4K_REG_MASTER3 = 0x02, + E4K_REG_MASTER4 = 0x03, + E4K_REG_MASTER5 = 0x04, + E4K_REG_CLK_INP = 0x05, + E4K_REG_REF_CLK = 0x06, + E4K_REG_SYNTH1 = 0x07, + E4K_REG_SYNTH2 = 0x08, + E4K_REG_SYNTH3 = 0x09, + E4K_REG_SYNTH4 = 0x0a, + E4K_REG_SYNTH5 = 0x0b, + E4K_REG_SYNTH6 = 0x0c, + E4K_REG_SYNTH7 = 0x0d, + E4K_REG_SYNTH8 = 0x0e, + E4K_REG_SYNTH9 = 0x0f, + E4K_REG_FILT1 = 0x10, + E4K_REG_FILT2 = 0x11, + E4K_REG_FILT3 = 0x12, + // gap + E4K_REG_GAIN1 = 0x14, + E4K_REG_GAIN2 = 0x15, + E4K_REG_GAIN3 = 0x16, + E4K_REG_GAIN4 = 0x17, + // gap + E4K_REG_AGC1 = 0x1a, + E4K_REG_AGC2 = 0x1b, + E4K_REG_AGC3 = 0x1c, + E4K_REG_AGC4 = 0x1d, + E4K_REG_AGC5 = 0x1e, + E4K_REG_AGC6 = 0x1f, + E4K_REG_AGC7 = 0x20, + E4K_REG_AGC8 = 0x21, + // gap + E4K_REG_AGC11 = 0x24, + E4K_REG_AGC12 = 0x25, + // gap + E4K_REG_DC1 = 0x29, + E4K_REG_DC2 = 0x2a, + E4K_REG_DC3 = 0x2b, + E4K_REG_DC4 = 0x2c, + E4K_REG_DC5 = 0x2d, + E4K_REG_DC6 = 0x2e, + E4K_REG_DC7 = 0x2f, + E4K_REG_DC8 = 0x30, + // gap + E4K_REG_QLUT0 = 0x50, + E4K_REG_QLUT1 = 0x51, + E4K_REG_QLUT2 = 0x52, + E4K_REG_QLUT3 = 0x53, + // gap + E4K_REG_ILUT0 = 0x60, + E4K_REG_ILUT1 = 0x61, + E4K_REG_ILUT2 = 0x62, + E4K_REG_ILUT3 = 0x63, + // gap + E4K_REG_DCTIME1 = 0x70, + E4K_REG_DCTIME2 = 0x71, + E4K_REG_DCTIME3 = 0x72, + E4K_REG_DCTIME4 = 0x73, + E4K_REG_PWM1 = 0x74, + E4K_REG_PWM2 = 0x75, + E4K_REG_PWM3 = 0x76, + E4K_REG_PWM4 = 0x77, + E4K_REG_BIAS = 0x78, + E4K_REG_CLKOUT_PWDN = 0x7a, + E4K_REG_CHFILT_CALIB = 0x7b, + E4K_REG_I2C_REG_ADDR = 0x7d, + // FIXME +}; + +#define E4K_MASTER1_RESET (1 << 0) +#define E4K_MASTER1_NORM_STBY (1 << 1) +#define E4K_MASTER1_POR_DET (1 << 2) + +#define E4K_SYNTH1_PLL_LOCK (1 << 0) +#define E4K_SYNTH1_BAND_SHIF 1 + +#define E4K_SYNTH7_3PHASE_EN (1 << 3) + +#define E4K_SYNTH8_VCOCAL_UPD (1 << 2) + +#define E4K_FILT3_DISABLE (1 << 5) + +#define E4K_AGC1_LIN_MODE (1 << 4) +#define E4K_AGC1_LNA_UPDATE (1 << 5) +#define E4K_AGC1_LNA_G_LOW (1 << 6) +#define E4K_AGC1_LNA_G_HIGH (1 << 7) + +#define E4K_AGC6_LNA_CAL_REQ (1 << 4) + +#define E4K_AGC7_MIX_GAIN_AUTO (1 << 0) +#define E4K_AGC7_GAIN_STEP_5dB (1 << 5) + +#define E4K_AGC8_SENS_LIN_AUTO (1 << 0) + +#define E4K_AGC11_LNA_GAIN_ENH (1 << 0) + +#define E4K_DC1_CAL_REQ (1 << 0) + +#define E4K_DC5_I_LUT_EN (1 << 0) +#define E4K_DC5_Q_LUT_EN (1 << 1) +#define E4K_DC5_RANGE_DET_EN (1 << 2) +#define E4K_DC5_RANGE_EN (1 << 3) +#define E4K_DC5_TIMEVAR_EN (1 << 4) + +#define E4K_CLKOUT_DISABLE 0x96 + +#define E4K_CHFCALIB_CMD (1 << 0) + +#define E4K_AGC1_MOD_MASK 0xF + +enum e4k_agc_mode { + E4K_AGC_MOD_SERIAL = 0x0, + E4K_AGC_MOD_IF_PWM_LNA_SERIAL = 0x1, + E4K_AGC_MOD_IF_PWM_LNA_AUTONL = 0x2, + E4K_AGC_MOD_IF_PWM_LNA_SUPERV = 0x3, + E4K_AGC_MOD_IF_SERIAL_LNA_PWM = 0x4, + E4K_AGC_MOD_IF_PWM_LNA_PWM = 0x5, + E4K_AGC_MOD_IF_DIG_LNA_SERIAL = 0x6, + E4K_AGC_MOD_IF_DIG_LNA_AUTON = 0x7, + E4K_AGC_MOD_IF_DIG_LNA_SUPERV = 0x8, + E4K_AGC_MOD_IF_SERIAL_LNA_AUTON = 0x9, + E4K_AGC_MOD_IF_SERIAL_LNA_SUPERV = 0xa, +}; + +enum e4k_band { + E4K_BAND_VHF2 = 0, + E4K_BAND_VHF3 = 1, + E4K_BAND_UHF = 2, + E4K_BAND_L = 3, +}; + +enum e4k_mixer_filter_bw { + E4K_F_MIX_BW_27M = 0, + E4K_F_MIX_BW_4M6 = 8, + E4K_F_MIX_BW_4M2 = 9, + E4K_F_MIX_BW_3M8 = 10, + E4K_F_MIX_BW_3M4 = 11, + E4K_F_MIX_BW_3M = 12, + E4K_F_MIX_BW_2M7 = 13, + E4K_F_MIX_BW_2M3 = 14, + E4K_F_MIX_BW_1M9 = 15, +}; + +enum e4k_if_filter { + E4K_IF_FILTER_MIX, + E4K_IF_FILTER_CHAN, + E4K_IF_FILTER_RC +}; +struct e4k_pll_params { + uint32_t fosc; + uint32_t intended_flo; + uint32_t flo; + uint16_t x; + uint8_t z; + uint8_t r; + uint8_t r_idx; + uint8_t threephase; +}; + +struct e4k_state { + void *i2c_dev; + uint8_t i2c_addr; + enum e4k_band band; + struct e4k_pll_params vco; + void *rtl_dev; +}; + +int e4k_init(struct e4k_state *e4k); +int e4k_if_gain_set(struct e4k_state *e4k, uint8_t stage, int8_t value); +int e4k_mixer_gain_set(struct e4k_state *e4k, int8_t value); +int e4k_commonmode_set(struct e4k_state *e4k, int8_t value); +int e4k_tune_freq(struct e4k_state *e4k, uint32_t freq); +int e4k_tune_params(struct e4k_state *e4k, struct e4k_pll_params *p); +uint32_t e4k_compute_pll_params(struct e4k_pll_params *oscp, uint32_t fosc, uint32_t intended_flo); +int e4k_if_filter_bw_get(struct e4k_state *e4k, enum e4k_if_filter filter); +int e4k_if_filter_bw_set(struct e4k_state *e4k, enum e4k_if_filter filter, + uint32_t bandwidth); +int e4k_if_filter_chan_enable(struct e4k_state *e4k, int on); +int e4k_rf_filter_set(struct e4k_state *e4k); + +int e4k_reg_write(struct e4k_state *e4k, uint8_t reg, uint8_t val); +uint8_t e4k_reg_read(struct e4k_state *e4k, uint8_t reg); + +int e4k_manual_dc_offset(struct e4k_state *e4k, int8_t iofs, int8_t irange, int8_t qofs, int8_t qrange); +int e4k_dc_offset_calibrate(struct e4k_state *e4k); +int e4k_dc_offset_gen_table(struct e4k_state *e4k); + +int e4k_set_lna_gain(struct e4k_state *e4k, int32_t gain); +int e4k_enable_manual_gain(struct e4k_state *e4k, uint8_t manual); +int e4k_set_enh_gain(struct e4k_state *e4k, int32_t gain); +#endif /* _E4K_TUNER_H */ diff --git a/include/tuner_fc0012.h b/include/tuner_fc0012.h new file mode 100644 index 0000000..9dd5356 --- /dev/null +++ b/include/tuner_fc0012.h @@ -0,0 +1,36 @@ +/* + * Fitipower FC0012 tuner driver + * + * Copyright (C) 2012 Hans-Frieder Vogt + * + * modified for use in librtlsdr + * Copyright (C) 2012 Steve Markgraf + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +#ifndef _FC0012_H_ +#define _FC0012_H_ + +#define FC0012_I2C_ADDR 0xc6 +#define FC0012_CHECK_ADDR 0x00 +#define FC0012_CHECK_VAL 0xa1 + +int fc0012_init(void *dev); +int fc0012_set_params(void *dev, uint32_t freq, uint32_t bandwidth); +int fc0012_set_gain(void *dev, int gain); + +#endif diff --git a/include/tuner_fc0013.h b/include/tuner_fc0013.h new file mode 100644 index 0000000..68a26ee --- /dev/null +++ b/include/tuner_fc0013.h @@ -0,0 +1,37 @@ +/* + * Fitipower FC0013 tuner driver + * + * Copyright (C) 2012 Hans-Frieder Vogt + * + * modified for use in librtlsdr + * Copyright (C) 2012 Steve Markgraf + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +#ifndef _FC0013_H_ +#define _FC0013_H_ + +#define FC0013_I2C_ADDR 0xc6 +#define FC0013_CHECK_ADDR 0x00 +#define FC0013_CHECK_VAL 0xa3 + +int fc0013_init(void *dev); +int fc0013_set_params(void *dev, uint32_t freq, uint32_t bandwidth); +int fc0013_set_gain_mode(void *dev, int manual); +int fc0013_set_lna_gain(void *dev, int gain); + +#endif diff --git a/include/tuner_fc2580.h b/include/tuner_fc2580.h new file mode 100644 index 0000000..9ebd935 --- /dev/null +++ b/include/tuner_fc2580.h @@ -0,0 +1,127 @@ +#ifndef __TUNER_FC2580_H +#define __TUNER_FC2580_H + +#define BORDER_FREQ 2600000 //2.6GHz : The border frequency which determines whether Low VCO or High VCO is used +#define USE_EXT_CLK 0 //0 : Use internal XTAL Oscillator / 1 : Use External Clock input +#define OFS_RSSI 57 + +#define FC2580_I2C_ADDR 0xac +#define FC2580_CHECK_ADDR 0x01 +#define FC2580_CHECK_VAL 0x56 + +typedef enum { + FC2580_UHF_BAND, + FC2580_L_BAND, + FC2580_VHF_BAND, + FC2580_NO_BAND +} fc2580_band_type; + +typedef enum { + FC2580_FCI_FAIL, + FC2580_FCI_SUCCESS +} fc2580_fci_result_type; + +enum FUNCTION_STATUS +{ + FUNCTION_SUCCESS, + FUNCTION_ERROR, +}; + +extern void fc2580_wait_msec(void *pTuner, int a); + +fc2580_fci_result_type fc2580_i2c_write(void *pTuner, unsigned char reg, unsigned char val); +fc2580_fci_result_type fc2580_i2c_read(void *pTuner, unsigned char reg, unsigned char *read_data); + +/*============================================================================== + fc2580 initial setting + + This function is a generic function which gets called to initialize + + fc2580 in DVB-H mode or L-Band TDMB mode + + + + ifagc_mode + type : integer + 1 : Internal AGC + 2 : Voltage Control Mode + +==============================================================================*/ +fc2580_fci_result_type fc2580_set_init(void *pTuner, int ifagc_mode, unsigned int freq_xtal ); + +/*============================================================================== + fc2580 frequency setting + + This function is a generic function which gets called to change LO Frequency + + of fc2580 in DVB-H mode or L-Band TDMB mode + + + + f_lo + Value of target LO Frequency in 'kHz' unit + ex) 2.6GHz = 2600000 + +==============================================================================*/ +fc2580_fci_result_type fc2580_set_freq(void *pTuner, unsigned int f_lo, unsigned int freq_xtal ); + + +/*============================================================================== + fc2580 filter BW setting + + This function is a generic function which gets called to change Bandwidth + + frequency of fc2580's channel selection filter + + + + filter_bw + 1 : 1.53MHz(TDMB) + 6 : 6MHz + 7 : 7MHz + 8 : 7.8MHz + + +==============================================================================*/ +fc2580_fci_result_type fc2580_set_filter( void *pTuner, unsigned char filter_bw, unsigned int freq_xtal ); + +// The following context is FC2580 tuner API source code +// Definitions + +// AGC mode +enum FC2580_AGC_MODE +{ + FC2580_AGC_INTERNAL = 1, + FC2580_AGC_EXTERNAL = 2, +}; + + +// Bandwidth mode +enum FC2580_BANDWIDTH_MODE +{ + FC2580_BANDWIDTH_1530000HZ = 1, + FC2580_BANDWIDTH_6000000HZ = 6, + FC2580_BANDWIDTH_7000000HZ = 7, + FC2580_BANDWIDTH_8000000HZ = 8, +}; + +// Manipulaing functions +int +fc2580_Initialize( + void *pTuner + ); + +int +fc2580_SetRfFreqHz( + void *pTuner, + unsigned long RfFreqHz + ); + +// Extra manipulaing functions +int +fc2580_SetBandwidthMode( + void *pTuner, + int BandwidthMode + ); + +#endif diff --git a/include/tuner_r820t.h b/include/tuner_r820t.h new file mode 100644 index 0000000..f9bd4cf --- /dev/null +++ b/include/tuner_r820t.h @@ -0,0 +1,196 @@ +#ifndef _R820T_TUNER_H +#define _R820T_TUNER_H + +#define R820T_I2C_ADDR 0x34 +#define R820T_CHECK_ADDR 0x00 +#define R820T_CHECK_VAL 0x69 + +#define R820T_IF_FREQ 3570000 + +//*************************************************************** +//* INCLUDES.H +//*************************************************************** +#define VERSION "R820T_v1.49_ASTRO" +#define VER_NUM 49 + +#define USE_16M_XTAL FALSE +#define R828_Xtal 28800 + +#define USE_DIPLEXER FALSE +#define TUNER_CLK_OUT TRUE + +#ifndef _UINT_X_ +#define _UINT_X_ 1 +typedef unsigned char UINT8; +typedef unsigned short UINT16; +typedef unsigned int UINT32; +#endif + +#define TRUE 1 +#define FALSE 0 + +#define FUNCTION_SUCCESS 0 +#define FUNCTION_ERROR -1 + +typedef enum _R828_ErrCode +{ + RT_Success, + RT_Fail +}R828_ErrCode; + +typedef enum _Rafael_Chip_Type //Don't modify chip list +{ + R828 = 0, + R828D, + R828S, + R820T, + R820C, + R620D, + R620S +}Rafael_Chip_Type; +//----------------------------------------------------------// +// R828 Parameter // +//----------------------------------------------------------// + +extern UINT8 R828_ADDRESS; + +#define DIP_FREQ 320000 +#define IMR_TRIAL 9 +#define VCO_pwr_ref 0x02 + +extern UINT32 R828_IF_khz; +extern UINT32 R828_CAL_LO_khz; +extern UINT8 R828_IMR_point_num; +extern UINT8 R828_IMR_done_flag; +extern UINT8 Rafael_Chip; + +typedef enum _R828_Standard_Type //Don't remove standand list!! +{ + NTSC_MN = 0, + PAL_I, + PAL_DK, + PAL_B_7M, //no use + PAL_BGH_8M, //for PAL B/G, PAL G/H + SECAM_L, + SECAM_L1_INV, //for SECAM L' + SECAM_L1, //no use + ATV_SIZE, + DVB_T_6M = ATV_SIZE, + DVB_T_7M, + DVB_T_7M_2, + DVB_T_8M, + DVB_T2_6M, + DVB_T2_7M, + DVB_T2_7M_2, + DVB_T2_8M, + DVB_T2_1_7M, + DVB_T2_10M, + DVB_C_8M, + DVB_C_6M, + ISDB_T, + DTMB, + R828_ATSC, + FM, + STD_SIZE +}R828_Standard_Type; + +extern UINT8 R828_Fil_Cal_flag[STD_SIZE]; + +typedef enum _R828_SetFreq_Type +{ + FAST_MODE = TRUE, + NORMAL_MODE = FALSE +}R828_SetFreq_Type; + +typedef enum _R828_LoopThrough_Type +{ + LOOP_THROUGH = TRUE, + SIGLE_IN = FALSE +}R828_LoopThrough_Type; + + +typedef enum _R828_InputMode_Type +{ + AIR_IN = 0, + CABLE_IN_1, + CABLE_IN_2 +}R828_InputMode_Type; + +typedef enum _R828_IfAgc_Type +{ + IF_AGC1 = 0, + IF_AGC2 +}R828_IfAgc_Type; + +typedef enum _R828_GPIO_Type +{ + HI_SIG = TRUE, + LO_SIG = FALSE +}R828_GPIO_Type; + +typedef struct _R828_Set_Info +{ + UINT32 RF_Hz; + UINT32 RF_KHz; + R828_Standard_Type R828_Standard; + R828_LoopThrough_Type RT_Input; + R828_InputMode_Type RT_InputMode; + R828_IfAgc_Type R828_IfAgc_Select; +}R828_Set_Info; + +typedef struct _R828_RF_Gain_Info +{ + UINT8 RF_gain1; + UINT8 RF_gain2; + UINT8 RF_gain_comb; +}R828_RF_Gain_Info; + +typedef enum _R828_RF_Gain_TYPE +{ + RF_AUTO = 0, + RF_MANUAL +}R828_RF_Gain_TYPE; + +typedef struct _R828_I2C_LEN_TYPE +{ + UINT8 RegAddr; + UINT8 Data[50]; + UINT8 Len; +}R828_I2C_LEN_TYPE; + +typedef struct _R828_I2C_TYPE +{ + UINT8 RegAddr; + UINT8 Data; +}R828_I2C_TYPE; +//----------------------------------------------------------// +// R828 Function // +//----------------------------------------------------------// +R828_ErrCode R828_Init(void *pTuner); +R828_ErrCode R828_Standby(void *pTuner, R828_LoopThrough_Type R828_LoopSwitch); +R828_ErrCode R828_GPIO(void *pTuner, R828_GPIO_Type R828_GPIO_Conrl); +R828_ErrCode R828_SetStandard(void *pTuner, R828_Standard_Type RT_Standard); +R828_ErrCode R828_SetFrequency(void *pTuner, R828_Set_Info R828_INFO, R828_SetFreq_Type R828_SetFreqMode); +R828_ErrCode R828_GetRfGain(void *pTuner, R828_RF_Gain_Info *pR828_rf_gain); +R828_ErrCode R828_SetRfGain(void *pTuner, int gain); +R828_ErrCode R828_RfGainMode(void *pTuner, int manual); + +int +r820t_SetRfFreqHz( + void *pTuner, + unsigned long RfFreqHz + ); + +int +r820t_SetStandardMode( + void *pTuner, + int StandardMode + ); + +int +r820t_SetStandby( + void *pTuner, + int LoopThroughType + ); + +#endif /* _R820T_TUNER_H */ diff --git a/librtlsdr.pc.in b/librtlsdr.pc.in new file mode 100644 index 0000000..5e55049 --- /dev/null +++ b/librtlsdr.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: RTL-SDR Library +Description: C Utility Library +Version: @VERSION@ +Cflags: -I${includedir}/ @RTLSDR_PC_CFLAGS@ +Libs: -L${libdir} -lrtlsdr -lusb-1.0 +Libs.private: @RTLSDR_PC_LIBS@ diff --git a/m4/.gitignore b/m4/.gitignore new file mode 100644 index 0000000..64d9bbc --- /dev/null +++ b/m4/.gitignore @@ -0,0 +1,2 @@ +/libtool.m4 +/lt*.m4 diff --git a/rtl-sdr.rules b/rtl-sdr.rules new file mode 100644 index 0000000..1f68c45 --- /dev/null +++ b/rtl-sdr.rules @@ -0,0 +1,101 @@ +# +# Copyright 2012 Osmocom rtl-sdr project +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +# original RTL2832U vid/pid (hama nano, for example) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2832", MODE:="0666" + +# ezcap EzTV668 (E4000) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", MODE:="0666" + +# Terratec Cinergy T Stick Black (rev 1) (FC0012) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00a9", MODE:="0666" + +# Terratec NOXON rev 1 (FC0013) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b3", MODE:="0666" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b4", MODE:="0666" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b7", MODE:="0666" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00c6", MODE:="0666" + +# Terratec Cinergy T Stick RC (Rev.3) (E4000) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00d3", MODE:="0666" + +# Terratec T Stick PLUS (E4000) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00d7", MODE:="0666" + +# Terratec NOXON rev 2 (E4000) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00e0", MODE:="0666" + +# PixelView PV-DT235U(RN) (FC0012) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1554", ATTRS{idProduct}=="5020", MODE:="0666" + +# Compro Videomate U620F (E4000) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="185b", ATTRS{idProduct}=="0620", MODE:="0666" + +# Compro Videomate U650F (E4000) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="185b", ATTRS{idProduct}=="0650", MODE:="0666" + +# Compro Videomate U680F (E4000) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="185b", ATTRS{idProduct}=="0680", MODE:="0666" + +# Sweex DVB-T USB (FC0012) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="a803", MODE:="0666" + +# GTek T803 (FC0012) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="b803", MODE:="0666" + +# Lifeview LV5TDeluxe (FC0012) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="c803", MODE:="0666" + +# MyGica TD312 (FC0012) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="d286", MODE:="0666" + +# PROlectrix DV107669 (FC0012) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="d803", MODE:="0666" + +# Zaapa ZT-MINDVBZP (FC0012) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d398", MODE:="0666" + +# Twintech UT-40 (FC0013) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d3a4", MODE:="0666" + +# Dexatek DK DVB-T Dongle (Logilink VG0002A) (FC2580) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d19", ATTRS{idProduct}=="1101", MODE:="0666" + +# Dexatek DK DVB-T Dongle (MSI DigiVox mini II V3.0) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d19", ATTRS{idProduct}=="1102", MODE:="0666" + +# Dexatek DK 5217 DVB-T Dongle (FC2580) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d19", ATTRS{idProduct}=="1103", MODE:="0666" + +# MSI DigiVox Micro HD (FC2580) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d19", ATTRS{idProduct}=="1104", MODE:="0666" + +# Genius TVGo DVB-T03 USB dongle (Ver. B) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0458", ATTRS{idProduct}=="707f", MODE:="0666" + +# GIGABYTE GT-U7300 (FC0012) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d393", MODE:="0666" + +# DIKOM USB-DVBT HD +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d394", MODE:="0666" + +# Peak 102569AGPK (FC0012) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d395", MODE:="0666" + +# SVEON STV20 DVB-T USB & FM (FC0012) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d39d", MODE:="0666" + diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..66fbda8 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,140 @@ +# Copyright 2012 OSMOCOM Project +# +# This file is part of rtl-sdr +# +# GNU Radio is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GNU Radio is distributed in the hope that it will be useful, +# but WITHOUT 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 GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +######################################################################## +# Setup library +######################################################################## +add_library(rtlsdr_shared SHARED + librtlsdr.c + tuner_e4k.c + tuner_fc0012.c + tuner_fc0013.c + tuner_fc2580.c + tuner_r820t.c +) + +target_link_libraries(rtlsdr_shared + ${LIBUSB_LIBRARIES} +) + +set_target_properties(rtlsdr_shared PROPERTIES DEFINE_SYMBOL "rtlsdr_EXPORTS") +set_target_properties(rtlsdr_shared PROPERTIES OUTPUT_NAME rtlsdr) +set_target_properties(rtlsdr_shared PROPERTIES SOVERSION 0 VERSION 0.0.0) + +add_library(rtlsdr_static STATIC + librtlsdr.c + tuner_e4k.c + tuner_fc0012.c + tuner_fc0013.c + tuner_fc2580.c + tuner_r820t.c +) + +if(WIN32) +add_library(libgetopt_static STATIC + getopt/getopt.c +) +endif() + +target_link_libraries(rtlsdr_static + ${LIBUSB_LIBRARIES} +) + +set_property(TARGET rtlsdr_static APPEND PROPERTY COMPILE_DEFINITIONS "rtlsdr_STATIC" ) + +if(NOT WIN32) +# Force same library filename for static and shared variants of the library +set_target_properties(rtlsdr_static PROPERTIES OUTPUT_NAME rtlsdr) +endif() + +######################################################################## +# Build utility +######################################################################## +add_executable(rtl_sdr rtl_sdr.c) +add_executable(rtl_tcp rtl_tcp.c) +add_executable(rtl_test rtl_test.c) +add_executable(rtl_fm rtl_fm.c) +add_executable(rtl_eeprom rtl_eeprom.c) +add_executable(rtl_adsb rtl_adsb.c) +add_executable(rtl_433 rtl_433.c) +set(INSTALL_TARGETS rtlsdr_shared rtlsdr_static rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_433) + +target_link_libraries(rtl_sdr rtlsdr_shared + ${LIBUSB_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} +) +target_link_libraries(rtl_tcp rtlsdr_shared + ${LIBUSB_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} +) +target_link_libraries(rtl_test rtlsdr_shared + ${LIBUSB_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} +) +target_link_libraries(rtl_fm rtlsdr_shared + ${LIBUSB_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} +) +target_link_libraries(rtl_433 rtlsdr_shared + ${LIBUSB_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} +) +target_link_libraries(rtl_eeprom rtlsdr_shared + ${LIBUSB_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} +) +target_link_libraries(rtl_adsb rtlsdr_shared + ${LIBUSB_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} +) +if(UNIX) +target_link_libraries(rtl_fm m) +target_link_libraries(rtl_433 m) +target_link_libraries(rtl_adsb m) +if(APPLE) + target_link_libraries(rtl_test m) +else() + target_link_libraries(rtl_test m rt) +endif() +endif() + +if(WIN32) +target_link_libraries(rtl_sdr libgetopt_static) +target_link_libraries(rtl_tcp libgetopt_static) +target_link_libraries(rtl_test libgetopt_static) +target_link_libraries(rtl_fm libgetopt_static) +target_link_libraries(rtl_433 libgetopt_static) +target_link_libraries(rtl_eeprom libgetopt_static) +target_link_libraries(rtl_adsb libgetopt_static) +set_property(TARGET rtl_sdr APPEND PROPERTY COMPILE_DEFINITIONS "rtlsdr_STATIC" ) +set_property(TARGET rtl_tcp APPEND PROPERTY COMPILE_DEFINITIONS "rtlsdr_STATIC" ) +set_property(TARGET rtl_test APPEND PROPERTY COMPILE_DEFINITIONS "rtlsdr_STATIC" ) +set_property(TARGET rtl_fm APPEND PROPERTY COMPILE_DEFINITIONS "rtlsdr_STATIC" ) +set_property(TARGET rtl_433 APPEND PROPERTY COMPILE_DEFINITIONS "rtlsdr_STATIC" ) +set_property(TARGET rtl_eeprom APPEND PROPERTY COMPILE_DEFINITIONS "rtlsdr_STATIC" ) +set_property(TARGET rtl_adsb APPEND PROPERTY COMPILE_DEFINITIONS "rtlsdr_STATIC" ) +endif() +######################################################################## +# Install built library files & utilities +######################################################################## +install(TARGETS ${INSTALL_TARGETS} + LIBRARY DESTINATION lib${LIB_SUFFIX} # .so/.dylib file + ARCHIVE DESTINATION lib${LIB_SUFFIX} # .lib file + RUNTIME DESTINATION bin # .dll file +) diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100755 index 0000000..be48fbd --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,34 @@ +# This is _NOT_ the library release version, it's an API version. +# Please read Chapter 6 "Library interface versions" of the libtool documentation before making any modification +LIBVERSION=0:0:0 + +INCLUDES = $(all_includes) -I$(top_srcdir)/include +AM_CFLAGS = ${CFLAGS} -fPIC ${SYMBOL_VISIBILITY} + +lib_LTLIBRARIES = librtlsdr.la + +librtlsdr_la_SOURCES = librtlsdr.c tuner_e4k.c tuner_fc0012.c tuner_fc0013.c tuner_fc2580.c tuner_r820t.c +librtlsdr_la_LDFLAGS = -version-info $(LIBVERSION) + +bin_PROGRAMS = rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_433 + +rtl_sdr_SOURCES = rtl_sdr.c +rtl_sdr_LDADD = librtlsdr.la + +rtl_tcp_SOURCES = rtl_tcp.c +rtl_tcp_LDADD = librtlsdr.la + +rtl_test_SOURCES = rtl_test.c +rtl_test_LDADD = librtlsdr.la $(LIBM) + +rtl_fm_SOURCES = rtl_fm.c +rtl_fm_LDADD = librtlsdr.la $(LIBM) + +rtl_eeprom_SOURCES = rtl_eeprom.c +rtl_eeprom_LDADD = librtlsdr.la $(LIBM) + +rtl_adsb_SOURCES = rtl_adsb.c +rtl_adsb_LDADD = librtlsdr.la $(LIBM) + +rtl_433_SOURCES = rtl_433.c +rtl_433_LDADD = librtlsdr.la $(LIBM) diff --git a/src/getopt/getopt.c b/src/getopt/getopt.c new file mode 100644 index 0000000..f1d461a --- /dev/null +++ b/src/getopt/getopt.c @@ -0,0 +1,1059 @@ +/* Getopt for GNU. + NOTE: getopt is now part of the C library, so if you don't know what + "Keep this file name-space clean" means, talk to drepper@gnu.org + before changing it! + Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ +/* This tells Alpha OSF/1 not to define a getopt prototype in . + Ditto for AIX 3.2 and . */ +#ifndef _NO_PROTO +# define _NO_PROTO +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if !defined __STDC__ || !__STDC__ +/* This is a separate conditional since some stdc systems + reject `defined (const)'. */ +# ifndef const +# define const +# endif +#endif + +#include + +/* Comment out all this code if we are using the GNU C Library, and are not + actually compiling the library itself. This code is part of the GNU C + Library, but also included in many other GNU distributions. Compiling + and linking in this code is a waste when using the GNU C library + (especially if it is a shared library). Rather than having every GNU + program understand `configure --with-gnu-libc' and omit the object files, + it is simpler to just do this in the source for each such file. */ + +#define GETOPT_INTERFACE_VERSION 2 +#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 +# include +# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION +# define ELIDE_CODE +# endif +#endif + +#ifndef ELIDE_CODE + + +/* This needs to come after some library #include + to get __GNU_LIBRARY__ defined. */ +#ifdef __GNU_LIBRARY__ +/* Don't include stdlib.h for non-GNU C libraries because some of them + contain conflicting prototypes for getopt. */ +# include +# include +#endif /* GNU C library. */ + +#ifdef VMS +# include +# if HAVE_STRING_H - 0 +# include +# endif +#endif + +#ifndef _ +/* This is for other GNU distributions with internationalized messages. */ +# if (HAVE_LIBINTL_H && ENABLE_NLS) || defined _LIBC +# include +# ifndef _ +# define _(msgid) gettext (msgid) +# endif +# else +# define _(msgid) (msgid) +# endif +#endif + +/* This version of `getopt' appears to the caller like standard Unix `getopt' + but it behaves differently for the user, since it allows the user + to intersperse the options with the other arguments. + + As `getopt' works, it permutes the elements of ARGV so that, + when it is done, all the options precede everything else. Thus + all application programs are extended to handle flexible argument order. + + Setting the environment variable POSIXLY_CORRECT disables permutation. + Then the behavior is completely standard. + + GNU application programs can use a third alternative mode in which + they can distinguish the relative order of options and other arguments. */ + +#include "getopt.h" + +/* For communication from `getopt' to the caller. + When `getopt' finds an option that takes an argument, + the argument value is returned here. + Also, when `ordering' is RETURN_IN_ORDER, + each non-option ARGV-element is returned here. */ + +char *optarg; + +/* Index in ARGV of the next element to be scanned. + This is used for communication to and from the caller + and for communication between successive calls to `getopt'. + + On entry to `getopt', zero means this is the first call; initialize. + + When `getopt' returns -1, this is the index of the first of the + non-option elements that the caller should itself scan. + + Otherwise, `optind' communicates from one call to the next + how much of ARGV has been scanned so far. */ + +/* 1003.2 says this must be 1 before any call. */ +int optind = 1; + +/* Formerly, initialization of getopt depended on optind==0, which + causes problems with re-calling getopt as programs generally don't + know that. */ + +int __getopt_initialized; + +/* The next char to be scanned in the option-element + in which the last option character we returned was found. + This allows us to pick up the scan where we left off. + + If this is zero, or a null string, it means resume the scan + by advancing to the next ARGV-element. */ + +static char *nextchar; + +/* Callers store zero here to inhibit the error message + for unrecognized options. */ + +int opterr = 1; + +/* Set to an option character which was unrecognized. + This must be initialized on some systems to avoid linking in the + system's own getopt implementation. */ + +int optopt = '?'; + +/* Describe how to deal with options that follow non-option ARGV-elements. + + If the caller did not specify anything, + the default is REQUIRE_ORDER if the environment variable + POSIXLY_CORRECT is defined, PERMUTE otherwise. + + REQUIRE_ORDER means don't recognize them as options; + stop option processing when the first non-option is seen. + This is what Unix does. + This mode of operation is selected by either setting the environment + variable POSIXLY_CORRECT, or using `+' as the first character + of the list of option characters. + + PERMUTE is the default. We permute the contents of ARGV as we scan, + so that eventually all the non-options are at the end. This allows options + to be given in any order, even with programs that were not written to + expect this. + + RETURN_IN_ORDER is an option available to programs that were written + to expect options and other ARGV-elements in any order and that care about + the ordering of the two. We describe each non-option ARGV-element + as if it were the argument of an option with character code 1. + Using `-' as the first character of the list of option characters + selects this mode of operation. + + The special argument `--' forces an end of option-scanning regardless + of the value of `ordering'. In the case of RETURN_IN_ORDER, only + `--' can cause `getopt' to return -1 with `optind' != ARGC. */ + +static enum +{ + REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER +} ordering; + +/* Value of POSIXLY_CORRECT environment variable. */ +static char *posixly_correct; + +#ifdef __GNU_LIBRARY__ +/* We want to avoid inclusion of string.h with non-GNU libraries + because there are many ways it can cause trouble. + On some systems, it contains special magic macros that don't work + in GCC. */ +# include +# define my_index strchr +#else + +# if 1 //HAVE_STRING_H +# include +# else +# include +# endif + +/* Avoid depending on library functions or files + whose names are inconsistent. */ + +#ifndef getenv +#ifdef _MSC_VER +// DDK will complain if you don't use the stdlib defined getenv +#include +#else +extern char *getenv (); +#endif +#endif + +static char * +my_index (str, chr) + const char *str; + int chr; +{ + while (*str) + { + if (*str == chr) + return (char *) str; + str++; + } + return 0; +} + +/* If using GCC, we can safely declare strlen this way. + If not using GCC, it is ok not to declare it. */ +#ifdef __GNUC__ +/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h. + That was relevant to code that was here before. */ +# if (!defined __STDC__ || !__STDC__) && !defined strlen +/* gcc with -traditional declares the built-in strlen to return int, + and has done so at least since version 2.4.5. -- rms. */ +extern int strlen (const char *); +# endif /* not __STDC__ */ +#endif /* __GNUC__ */ + +#endif /* not __GNU_LIBRARY__ */ + +/* Handle permutation of arguments. */ + +/* Describe the part of ARGV that contains non-options that have + been skipped. `first_nonopt' is the index in ARGV of the first of them; + `last_nonopt' is the index after the last of them. */ + +static int first_nonopt; +static int last_nonopt; + +#ifdef _LIBC +/* Stored original parameters. + XXX This is no good solution. We should rather copy the args so + that we can compare them later. But we must not use malloc(3). */ +extern int __libc_argc; +extern char **__libc_argv; + +/* Bash 2.0 gives us an environment variable containing flags + indicating ARGV elements that should not be considered arguments. */ + +# ifdef USE_NONOPTION_FLAGS +/* Defined in getopt_init.c */ +extern char *__getopt_nonoption_flags; + +static int nonoption_flags_max_len; +static int nonoption_flags_len; +# endif + +# ifdef USE_NONOPTION_FLAGS +# define SWAP_FLAGS(ch1, ch2) \ + if (nonoption_flags_len > 0) \ + { \ + char __tmp = __getopt_nonoption_flags[ch1]; \ + __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ + __getopt_nonoption_flags[ch2] = __tmp; \ + } +# else +# define SWAP_FLAGS(ch1, ch2) +# endif +#else /* !_LIBC */ +# define SWAP_FLAGS(ch1, ch2) +#endif /* _LIBC */ + +/* Exchange two adjacent subsequences of ARGV. + One subsequence is elements [first_nonopt,last_nonopt) + which contains all the non-options that have been skipped so far. + The other is elements [last_nonopt,optind), which contains all + the options processed since those non-options were skipped. + + `first_nonopt' and `last_nonopt' are relocated so that they describe + the new indices of the non-options in ARGV after they are moved. */ + +#if defined __STDC__ && __STDC__ +static void exchange (char **); +#endif + +static void +exchange (argv) + char **argv; +{ + int bottom = first_nonopt; + int middle = last_nonopt; + int top = optind; + char *tem; + + /* Exchange the shorter segment with the far end of the longer segment. + That puts the shorter segment into the right place. + It leaves the longer segment in the right place overall, + but it consists of two parts that need to be swapped next. */ + +#if defined _LIBC && defined USE_NONOPTION_FLAGS + /* First make sure the handling of the `__getopt_nonoption_flags' + string can work normally. Our top argument must be in the range + of the string. */ + if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len) + { + /* We must extend the array. The user plays games with us and + presents new arguments. */ + char *new_str = malloc (top + 1); + if (new_str == NULL) + nonoption_flags_len = nonoption_flags_max_len = 0; + else + { + memset (__mempcpy (new_str, __getopt_nonoption_flags, + nonoption_flags_max_len), + '\0', top + 1 - nonoption_flags_max_len); + nonoption_flags_max_len = top + 1; + __getopt_nonoption_flags = new_str; + } + } +#endif + + while (top > middle && middle > bottom) + { + if (top - middle > middle - bottom) + { + /* Bottom segment is the short one. */ + int len = middle - bottom; + register int i; + + /* Swap it with the top part of the top segment. */ + for (i = 0; i < len; i++) + { + tem = argv[bottom + i]; + argv[bottom + i] = argv[top - (middle - bottom) + i]; + argv[top - (middle - bottom) + i] = tem; + SWAP_FLAGS (bottom + i, top - (middle - bottom) + i); + } + /* Exclude the moved bottom segment from further swapping. */ + top -= len; + } + else + { + /* Top segment is the short one. */ + int len = top - middle; + register int i; + + /* Swap it with the bottom part of the bottom segment. */ + for (i = 0; i < len; i++) + { + tem = argv[bottom + i]; + argv[bottom + i] = argv[middle + i]; + argv[middle + i] = tem; + SWAP_FLAGS (bottom + i, middle + i); + } + /* Exclude the moved top segment from further swapping. */ + bottom += len; + } + } + + /* Update records for the slots the non-options now occupy. */ + + first_nonopt += (optind - last_nonopt); + last_nonopt = optind; +} + +/* Initialize the internal data when the first call is made. */ + +#if defined __STDC__ && __STDC__ +static const char *_getopt_initialize (int, char *const *, const char *); +#endif +static const char * +_getopt_initialize (argc, argv, optstring) + int argc; + char *const *argv; + const char *optstring; +{ + /* Start processing options with ARGV-element 1 (since ARGV-element 0 + is the program name); the sequence of previously skipped + non-option ARGV-elements is empty. */ + + first_nonopt = last_nonopt = optind; + + nextchar = NULL; + + posixly_correct = getenv ("POSIXLY_CORRECT"); + + /* Determine how to handle the ordering of options and nonoptions. */ + + if (optstring[0] == '-') + { + ordering = RETURN_IN_ORDER; + ++optstring; + } + else if (optstring[0] == '+') + { + ordering = REQUIRE_ORDER; + ++optstring; + } + else if (posixly_correct != NULL) + ordering = REQUIRE_ORDER; + else + ordering = PERMUTE; + +#if defined _LIBC && defined USE_NONOPTION_FLAGS + if (posixly_correct == NULL + && argc == __libc_argc && argv == __libc_argv) + { + if (nonoption_flags_max_len == 0) + { + if (__getopt_nonoption_flags == NULL + || __getopt_nonoption_flags[0] == '\0') + nonoption_flags_max_len = -1; + else + { + const char *orig_str = __getopt_nonoption_flags; + int len = nonoption_flags_max_len = strlen (orig_str); + if (nonoption_flags_max_len < argc) + nonoption_flags_max_len = argc; + __getopt_nonoption_flags = + (char *) malloc (nonoption_flags_max_len); + if (__getopt_nonoption_flags == NULL) + nonoption_flags_max_len = -1; + else + memset (__mempcpy (__getopt_nonoption_flags, orig_str, len), + '\0', nonoption_flags_max_len - len); + } + } + nonoption_flags_len = nonoption_flags_max_len; + } + else + nonoption_flags_len = 0; +#endif + + return optstring; +} + +/* Scan elements of ARGV (whose length is ARGC) for option characters + given in OPTSTRING. + + If an element of ARGV starts with '-', and is not exactly "-" or "--", + then it is an option element. The characters of this element + (aside from the initial '-') are option characters. If `getopt' + is called repeatedly, it returns successively each of the option characters + from each of the option elements. + + If `getopt' finds another option character, it returns that character, + updating `optind' and `nextchar' so that the next call to `getopt' can + resume the scan with the following option character or ARGV-element. + + If there are no more option characters, `getopt' returns -1. + Then `optind' is the index in ARGV of the first ARGV-element + that is not an option. (The ARGV-elements have been permuted + so that those that are not options now come last.) + + OPTSTRING is a string containing the legitimate option characters. + If an option character is seen that is not listed in OPTSTRING, + return '?' after printing an error message. If you set `opterr' to + zero, the error message is suppressed but we still return '?'. + + If a char in OPTSTRING is followed by a colon, that means it wants an arg, + so the following text in the same ARGV-element, or the text of the following + ARGV-element, is returned in `optarg'. Two colons mean an option that + wants an optional arg; if there is text in the current ARGV-element, + it is returned in `optarg', otherwise `optarg' is set to zero. + + If OPTSTRING starts with `-' or `+', it requests different methods of + handling the non-option ARGV-elements. + See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. + + Long-named options begin with `--' instead of `-'. + Their names may be abbreviated as long as the abbreviation is unique + or is an exact match for some defined option. If they have an + argument, it follows the option name in the same ARGV-element, separated + from the option name by a `=', or else the in next ARGV-element. + When `getopt' finds a long-named option, it returns 0 if that option's + `flag' field is nonzero, the value of the option's `val' field + if the `flag' field is zero. + + The elements of ARGV aren't really const, because we permute them. + But we pretend they're const in the prototype to be compatible + with other systems. + + LONGOPTS is a vector of `struct option' terminated by an + element containing a name which is zero. + + LONGIND returns the index in LONGOPT of the long-named option found. + It is only valid when a long-named option has been found by the most + recent call. + + If LONG_ONLY is nonzero, '-' as well as '--' can introduce + long-named options. */ + +int +_getopt_internal (argc, argv, optstring, longopts, longind, long_only) + int argc; + char *const *argv; + const char *optstring; + const struct option *longopts; + int *longind; + int long_only; +{ + int print_errors = opterr; + if (optstring[0] == ':') + print_errors = 0; + + if (argc < 1) + return -1; + + optarg = NULL; + + if (optind == 0 || !__getopt_initialized) + { + if (optind == 0) + optind = 1; /* Don't scan ARGV[0], the program name. */ + optstring = _getopt_initialize (argc, argv, optstring); + __getopt_initialized = 1; + } + + /* Test whether ARGV[optind] points to a non-option argument. + Either it does not have option syntax, or there is an environment flag + from the shell indicating it is not an option. The later information + is only used when the used in the GNU libc. */ +#if defined _LIBC && defined USE_NONOPTION_FLAGS +# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ + || (optind < nonoption_flags_len \ + && __getopt_nonoption_flags[optind] == '1')) +#else +# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0') +#endif + + if (nextchar == NULL || *nextchar == '\0') + { + /* Advance to the next ARGV-element. */ + + /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been + moved back by the user (who may also have changed the arguments). */ + if (last_nonopt > optind) + last_nonopt = optind; + if (first_nonopt > optind) + first_nonopt = optind; + + if (ordering == PERMUTE) + { + /* If we have just processed some options following some non-options, + exchange them so that the options come first. */ + + if (first_nonopt != last_nonopt && last_nonopt != optind) + exchange ((char **) argv); + else if (last_nonopt != optind) + first_nonopt = optind; + + /* Skip any additional non-options + and extend the range of non-options previously skipped. */ + + while (optind < argc && NONOPTION_P) + optind++; + last_nonopt = optind; + } + + /* The special ARGV-element `--' means premature end of options. + Skip it like a null option, + then exchange with previous non-options as if it were an option, + then skip everything else like a non-option. */ + + if (optind != argc && !strcmp (argv[optind], "--")) + { + optind++; + + if (first_nonopt != last_nonopt && last_nonopt != optind) + exchange ((char **) argv); + else if (first_nonopt == last_nonopt) + first_nonopt = optind; + last_nonopt = argc; + + optind = argc; + } + + /* If we have done all the ARGV-elements, stop the scan + and back over any non-options that we skipped and permuted. */ + + if (optind == argc) + { + /* Set the next-arg-index to point at the non-options + that we previously skipped, so the caller will digest them. */ + if (first_nonopt != last_nonopt) + optind = first_nonopt; + return -1; + } + + /* If we have come to a non-option and did not permute it, + either stop the scan or describe it to the caller and pass it by. */ + + if (NONOPTION_P) + { + if (ordering == REQUIRE_ORDER) + return -1; + optarg = argv[optind++]; + return 1; + } + + /* We have found another option-ARGV-element. + Skip the initial punctuation. */ + + nextchar = (argv[optind] + 1 + + (longopts != NULL && argv[optind][1] == '-')); + } + + /* Decode the current option-ARGV-element. */ + + /* Check whether the ARGV-element is a long option. + + If long_only and the ARGV-element has the form "-f", where f is + a valid short option, don't consider it an abbreviated form of + a long option that starts with f. Otherwise there would be no + way to give the -f short option. + + On the other hand, if there's a long option "fubar" and + the ARGV-element is "-fu", do consider that an abbreviation of + the long option, just like "--fu", and not "-f" with arg "u". + + This distinction seems to be the most useful approach. */ + + if (longopts != NULL + && (argv[optind][1] == '-' + || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1]))))) + { + char *nameend; + const struct option *p; + const struct option *pfound = NULL; + int exact = 0; + int ambig = 0; + int indfound = -1; + int option_index; + + for (nameend = nextchar; *nameend && *nameend != '='; nameend++) + /* Do nothing. */ ; + + /* Test all long options for either exact match + or abbreviated matches. */ + for (p = longopts, option_index = 0; p->name; p++, option_index++) + if (!strncmp (p->name, nextchar, nameend - nextchar)) + { + if ((unsigned int) (nameend - nextchar) + == (unsigned int) strlen (p->name)) + { + /* Exact match found. */ + pfound = p; + indfound = option_index; + exact = 1; + break; + } + else if (pfound == NULL) + { + /* First nonexact match found. */ + pfound = p; + indfound = option_index; + } + else if (long_only + || pfound->has_arg != p->has_arg + || pfound->flag != p->flag + || pfound->val != p->val) + /* Second or later nonexact match found. */ + ambig = 1; + } + + if (ambig && !exact) + { + if (print_errors) + fprintf (stderr, _("%s: option `%s' is ambiguous\n"), + argv[0], argv[optind]); + nextchar += strlen (nextchar); + optind++; + optopt = 0; + return '?'; + } + + if (pfound != NULL) + { + option_index = indfound; + optind++; + if (*nameend) + { + /* Don't test has_arg with >, because some C compilers don't + allow it to be used on enums. */ + if (pfound->has_arg) + optarg = nameend + 1; + else + { + if (print_errors) + { + if (argv[optind - 1][1] == '-') + /* --option */ + fprintf (stderr, + _("%s: option `--%s' doesn't allow an argument\n"), + argv[0], pfound->name); + else + /* +option or -option */ + fprintf (stderr, + _("%s: option `%c%s' doesn't allow an argument\n"), + argv[0], argv[optind - 1][0], pfound->name); + } + + nextchar += strlen (nextchar); + + optopt = pfound->val; + return '?'; + } + } + else if (pfound->has_arg == 1) + { + if (optind < argc) + optarg = argv[optind++]; + else + { + if (print_errors) + fprintf (stderr, + _("%s: option `%s' requires an argument\n"), + argv[0], argv[optind - 1]); + nextchar += strlen (nextchar); + optopt = pfound->val; + return optstring[0] == ':' ? ':' : '?'; + } + } + nextchar += strlen (nextchar); + if (longind != NULL) + *longind = option_index; + if (pfound->flag) + { + *(pfound->flag) = pfound->val; + return 0; + } + return pfound->val; + } + + /* Can't find it as a long option. If this is not getopt_long_only, + or the option starts with '--' or is not a valid short + option, then it's an error. + Otherwise interpret it as a short option. */ + if (!long_only || argv[optind][1] == '-' + || my_index (optstring, *nextchar) == NULL) + { + if (print_errors) + { + if (argv[optind][1] == '-') + /* --option */ + fprintf (stderr, _("%s: unrecognized option `--%s'\n"), + argv[0], nextchar); + else + /* +option or -option */ + fprintf (stderr, _("%s: unrecognized option `%c%s'\n"), + argv[0], argv[optind][0], nextchar); + } + nextchar = (char *) ""; + optind++; + optopt = 0; + return '?'; + } + } + + /* Look at and handle the next short option-character. */ + + { + char c = *nextchar++; + char *temp = my_index (optstring, c); + + /* Increment `optind' when we start to process its last character. */ + if (*nextchar == '\0') + ++optind; + + if (temp == NULL || c == ':') + { + if (print_errors) + { + if (posixly_correct) + /* 1003.2 specifies the format of this message. */ + fprintf (stderr, _("%s: illegal option -- %c\n"), + argv[0], c); + else + fprintf (stderr, _("%s: invalid option -- %c\n"), + argv[0], c); + } + optopt = c; + return '?'; + } + /* Convenience. Treat POSIX -W foo same as long option --foo */ + if (temp[0] == 'W' && temp[1] == ';') + { + char *nameend; + const struct option *p; + const struct option *pfound = NULL; + int exact = 0; + int ambig = 0; + int indfound = 0; + int option_index; + + /* This is an option that requires an argument. */ + if (*nextchar != '\0') + { + optarg = nextchar; + /* If we end this ARGV-element by taking the rest as an arg, + we must advance to the next element now. */ + optind++; + } + else if (optind == argc) + { + if (print_errors) + { + /* 1003.2 specifies the format of this message. */ + fprintf (stderr, _("%s: option requires an argument -- %c\n"), + argv[0], c); + } + optopt = c; + if (optstring[0] == ':') + c = ':'; + else + c = '?'; + return c; + } + else + /* We already incremented `optind' once; + increment it again when taking next ARGV-elt as argument. */ + optarg = argv[optind++]; + + /* optarg is now the argument, see if it's in the + table of longopts. */ + + for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++) + /* Do nothing. */ ; + + /* Test all long options for either exact match + or abbreviated matches. */ + for (p = longopts, option_index = 0; p->name; p++, option_index++) + if (!strncmp (p->name, nextchar, nameend - nextchar)) + { + if ((unsigned int) (nameend - nextchar) == strlen (p->name)) + { + /* Exact match found. */ + pfound = p; + indfound = option_index; + exact = 1; + break; + } + else if (pfound == NULL) + { + /* First nonexact match found. */ + pfound = p; + indfound = option_index; + } + else + /* Second or later nonexact match found. */ + ambig = 1; + } + if (ambig && !exact) + { + if (print_errors) + fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"), + argv[0], argv[optind]); + nextchar += strlen (nextchar); + optind++; + return '?'; + } + if (pfound != NULL) + { + option_index = indfound; + if (*nameend) + { + /* Don't test has_arg with >, because some C compilers don't + allow it to be used on enums. */ + if (pfound->has_arg) + optarg = nameend + 1; + else + { + if (print_errors) + fprintf (stderr, _("\ + %s: option `-W %s' doesn't allow an argument\n"), + argv[0], pfound->name); + + nextchar += strlen (nextchar); + return '?'; + } + } + else if (pfound->has_arg == 1) + { + if (optind < argc) + optarg = argv[optind++]; + else + { + if (print_errors) + fprintf (stderr, + _("%s: option `%s' requires an argument\n"), + argv[0], argv[optind - 1]); + nextchar += strlen (nextchar); + return optstring[0] == ':' ? ':' : '?'; + } + } + nextchar += strlen (nextchar); + if (longind != NULL) + *longind = option_index; + if (pfound->flag) + { + *(pfound->flag) = pfound->val; + return 0; + } + return pfound->val; + } + nextchar = NULL; + return 'W'; /* Let the application handle it. */ + } + if (temp[1] == ':') + { + if (temp[2] == ':') + { + /* This is an option that accepts an argument optionally. */ + if (*nextchar != '\0') + { + optarg = nextchar; + optind++; + } + else + optarg = NULL; + nextchar = NULL; + } + else + { + /* This is an option that requires an argument. */ + if (*nextchar != '\0') + { + optarg = nextchar; + /* If we end this ARGV-element by taking the rest as an arg, + we must advance to the next element now. */ + optind++; + } + else if (optind == argc) + { + if (print_errors) + { + /* 1003.2 specifies the format of this message. */ + fprintf (stderr, + _("%s: option requires an argument -- %c\n"), + argv[0], c); + } + optopt = c; + if (optstring[0] == ':') + c = ':'; + else + c = '?'; + } + else + /* We already incremented `optind' once; + increment it again when taking next ARGV-elt as argument. */ + optarg = argv[optind++]; + nextchar = NULL; + } + } + return c; + } +} + +int +getopt (argc, argv, optstring) + int argc; + char *const *argv; + const char *optstring; +{ + return _getopt_internal (argc, argv, optstring, + (const struct option *) 0, + (int *) 0, + 0); +} + +#endif /* Not ELIDE_CODE. */ + +#ifdef TEST + +/* Compile with -DTEST to make an executable for use in testing + the above definition of `getopt'. */ + +int +main (argc, argv) + int argc; + char **argv; +{ + int c; + int digit_optind = 0; + + while (1) + { + int this_option_optind = optind ? optind : 1; + + c = getopt (argc, argv, "abc:d:0123456789"); + if (c == -1) + break; + + switch (c) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + if (digit_optind != 0 && digit_optind != this_option_optind) + printf ("digits occur in two different argv-elements.\n"); + digit_optind = this_option_optind; + printf ("option %c\n", c); + break; + + case 'a': + printf ("option a\n"); + break; + + case 'b': + printf ("option b\n"); + break; + + case 'c': + printf ("option c with value `%s'\n", optarg); + break; + + case '?': + break; + + default: + printf ("?? getopt returned character code 0%o ??\n", c); + } + } + + if (optind < argc) + { + printf ("non-option ARGV-elements: "); + while (optind < argc) + printf ("%s ", argv[optind++]); + printf ("\n"); + } + + exit (0); +} + +#endif /* TEST */ diff --git a/src/getopt/getopt.h b/src/getopt/getopt.h new file mode 100644 index 0000000..a1b8dd6 --- /dev/null +++ b/src/getopt/getopt.h @@ -0,0 +1,180 @@ +/* Declarations for getopt. + Copyright (C) 1989-1994, 1996-1999, 2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _GETOPT_H + +#ifndef __need_getopt +# define _GETOPT_H 1 +#endif + +/* If __GNU_LIBRARY__ is not already defined, either we are being used + standalone, or this is the first header included in the source file. + If we are being used with glibc, we need to include , but + that does not exist if we are standalone. So: if __GNU_LIBRARY__ is + not defined, include , which will pull in for us + if it's from glibc. (Why ctype.h? It's guaranteed to exist and it + doesn't flood the namespace with stuff the way some other headers do.) */ +#if !defined __GNU_LIBRARY__ +# include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* For communication from `getopt' to the caller. + When `getopt' finds an option that takes an argument, + the argument value is returned here. + Also, when `ordering' is RETURN_IN_ORDER, + each non-option ARGV-element is returned here. */ + +extern char *optarg; + +/* Index in ARGV of the next element to be scanned. + This is used for communication to and from the caller + and for communication between successive calls to `getopt'. + + On entry to `getopt', zero means this is the first call; initialize. + + When `getopt' returns -1, this is the index of the first of the + non-option elements that the caller should itself scan. + + Otherwise, `optind' communicates from one call to the next + how much of ARGV has been scanned so far. */ + +extern int optind; + +/* Callers store zero here to inhibit the error message `getopt' prints + for unrecognized options. */ + +extern int opterr; + +/* Set to an option character which was unrecognized. */ + +extern int optopt; + +#ifndef __need_getopt +/* Describe the long-named options requested by the application. + The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector + of `struct option' terminated by an element containing a name which is + zero. + + The field `has_arg' is: + no_argument (or 0) if the option does not take an argument, + required_argument (or 1) if the option requires an argument, + optional_argument (or 2) if the option takes an optional argument. + + If the field `flag' is not NULL, it points to a variable that is set + to the value given in the field `val' when the option is found, but + left unchanged if the option is not found. + + To have a long-named option do something other than set an `int' to + a compiled-in constant, such as set a value from `optarg', set the + option's `flag' field to zero and its `val' field to a nonzero + value (the equivalent single-letter option character, if there is + one). For long options that have a zero `flag' field, `getopt' + returns the contents of the `val' field. */ + +struct option +{ +# if (defined __STDC__ && __STDC__) || defined __cplusplus + const char *name; +# else + char *name; +# endif + /* has_arg can't be an enum because some compilers complain about + type mismatches in all the code that assumes it is an int. */ + int has_arg; + int *flag; + int val; +}; + +/* Names for the values of the `has_arg' field of `struct option'. */ + +# define no_argument 0 +# define required_argument 1 +# define optional_argument 2 +#endif /* need getopt */ + + +/* Get definitions and prototypes for functions to process the + arguments in ARGV (ARGC of them, minus the program name) for + options given in OPTS. + + Return the option character from OPTS just read. Return -1 when + there are no more options. For unrecognized options, or options + missing arguments, `optopt' is set to the option letter, and '?' is + returned. + + The OPTS string is a list of characters which are recognized option + letters, optionally followed by colons, specifying that that letter + takes an argument, to be placed in `optarg'. + + If a letter in OPTS is followed by two colons, its argument is + optional. This behavior is specific to the GNU `getopt'. + + The argument `--' causes premature termination of argument + scanning, explicitly telling `getopt' that there are no more + options. + + If OPTS begins with `--', then non-option arguments are treated as + arguments to the option '\0'. This behavior is specific to the GNU + `getopt'. */ + +#if (defined __STDC__ && __STDC__) || defined __cplusplus +# ifdef __GNU_LIBRARY__ +/* Many other libraries have conflicting prototypes for getopt, with + differences in the consts, in stdlib.h. To avoid compilation + errors, only prototype getopt for the GNU C library. */ +extern int getopt (int __argc, char *const *__argv, const char *__shortopts); +# else /* not __GNU_LIBRARY__ */ +extern int getopt (); +# endif /* __GNU_LIBRARY__ */ + +# ifndef __need_getopt +extern int getopt_long (int __argc, char *const *__argv, const char *__shortopts, + const struct option *__longopts, int *__longind); +extern int getopt_long_only (int __argc, char *const *__argv, + const char *__shortopts, + const struct option *__longopts, int *__longind); + +/* Internal only. Users should not call this directly. */ +extern int _getopt_internal (int __argc, char *const *__argv, + const char *__shortopts, + const struct option *__longopts, int *__longind, + int __long_only); +# endif +#else /* not __STDC__ */ +extern int getopt (); +# ifndef __need_getopt +extern int getopt_long (); +extern int getopt_long_only (); + +extern int _getopt_internal (); +# endif +#endif /* __STDC__ */ + +#ifdef __cplusplus +} +#endif + +/* Make sure we later can get all the definitions and declarations. */ +#undef __need_getopt + +#endif /* getopt.h */ diff --git a/src/librtlsdr.c b/src/librtlsdr.c new file mode 100644 index 0000000..50c536a --- /dev/null +++ b/src/librtlsdr.c @@ -0,0 +1,1696 @@ +/* + * rtl-sdr, turns your Realtek RTL2832 based DVB dongle into a SDR receiver + * Copyright (C) 2012 by Steve Markgraf + * Copyright (C) 2012 by Dimitri Stolnikov + * + * 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, see . + */ + +#include +#include +#include +#include +#include +#ifndef _WIN32 +#include +#define min(a, b) (((a) < (b)) ? (a) : (b)) +#endif + +#include + +/* + * All libusb callback functions should be marked with the LIBUSB_CALL macro + * to ensure that they are compiled with the same calling convention as libusb. + * + * If the macro isn't available in older libusb versions, we simply define it. + */ +#ifndef LIBUSB_CALL +#define LIBUSB_CALL +#endif + +/* two raised to the power of n */ +#define TWO_POW(n) ((double)(1ULL<<(n))) + +#include "rtl-sdr.h" +#include "tuner_e4k.h" +#include "tuner_fc0012.h" +#include "tuner_fc0013.h" +#include "tuner_fc2580.h" +#include "tuner_r820t.h" + +typedef struct rtlsdr_tuner_iface { + /* tuner interface */ + int (*init)(void *); + int (*exit)(void *); + int (*set_freq)(void *, uint32_t freq /* Hz */); + int (*set_bw)(void *, int bw /* Hz */); + int (*set_gain)(void *, int gain /* tenth dB */); + int (*set_if_gain)(void *, int stage, int gain /* tenth dB */); + int (*set_gain_mode)(void *, int manual); +} rtlsdr_tuner_iface_t; + +enum rtlsdr_async_status { + RTLSDR_INACTIVE = 0, + RTLSDR_CANCELING, + RTLSDR_RUNNING +}; + +struct rtlsdr_dev { + libusb_context *ctx; + struct libusb_device_handle *devh; + uint32_t xfer_buf_num; + uint32_t xfer_buf_len; + struct libusb_transfer **xfer; + unsigned char **xfer_buf; + rtlsdr_read_async_cb_t cb; + void *cb_ctx; + enum rtlsdr_async_status async_status; + /* rtl demod context */ + uint32_t rate; /* Hz */ + uint32_t rtl_xtal; /* Hz */ + int direct_sampling; + /* tuner context */ + enum rtlsdr_tuner tuner_type; + rtlsdr_tuner_iface_t *tuner; + uint32_t tun_xtal; /* Hz */ + uint32_t freq; /* Hz */ + uint32_t offs_freq; /* Hz */ + int corr; /* ppm */ + int gain; /* tenth dB */ + struct e4k_state e4k_s; +}; + +void rtlsdr_set_gpio_bit(rtlsdr_dev_t *dev, uint8_t gpio, int val); + +/* generic tuner interface functions, shall be moved to the tuner implementations */ +int e4000_init(void *dev) { + rtlsdr_dev_t* devt = (rtlsdr_dev_t*)dev; + devt->e4k_s.i2c_addr = E4K_I2C_ADDR; + rtlsdr_get_xtal_freq(devt, NULL, &devt->e4k_s.vco.fosc); + devt->e4k_s.rtl_dev = dev; + return e4k_init(&devt->e4k_s); +} +int e4000_exit(void *dev) { return 0; } +int e4000_set_freq(void *dev, uint32_t freq) { + rtlsdr_dev_t* devt = (rtlsdr_dev_t*)dev; + return e4k_tune_freq(&devt->e4k_s, freq); +} + +int e4000_set_bw(void *dev, int bw) { + int r = 0; + rtlsdr_dev_t* devt = (rtlsdr_dev_t*)dev; + + r |= e4k_if_filter_bw_set(&devt->e4k_s, E4K_IF_FILTER_MIX, bw); + r |= e4k_if_filter_bw_set(&devt->e4k_s, E4K_IF_FILTER_RC, bw); + r |= e4k_if_filter_bw_set(&devt->e4k_s, E4K_IF_FILTER_CHAN, bw); + + return r; +} + +int e4000_set_gain(void *dev, int gain) { + rtlsdr_dev_t* devt = (rtlsdr_dev_t*)dev; + int mixgain = (gain > 340) ? 12 : 4; +#if 0 + int enhgain = (gain - 420); +#endif + if(e4k_set_lna_gain(&devt->e4k_s, min(300, gain - mixgain * 10)) == -EINVAL) + return -1; + if(e4k_mixer_gain_set(&devt->e4k_s, mixgain) == -EINVAL) + return -1; +#if 0 /* enhanced mixer gain seems to have no effect */ + if(enhgain >= 0) + if(e4k_set_enh_gain(&devt->e4k_s, enhgain) == -EINVAL) + return -1; +#endif + return 0; +} +int e4000_set_if_gain(void *dev, int stage, int gain) { + rtlsdr_dev_t* devt = (rtlsdr_dev_t*)dev; + return e4k_if_gain_set(&devt->e4k_s, (uint8_t)stage, (int8_t)(gain / 10)); +} +int e4000_set_gain_mode(void *dev, int manual) { + rtlsdr_dev_t* devt = (rtlsdr_dev_t*)dev; + return e4k_enable_manual_gain(&devt->e4k_s, manual); +} + +int _fc0012_init(void *dev) { return fc0012_init(dev); } +int fc0012_exit(void *dev) { return 0; } +int fc0012_set_freq(void *dev, uint32_t freq) { + /* select V-band/U-band filter */ + rtlsdr_set_gpio_bit(dev, 6, (freq > 300000000) ? 1 : 0); + return fc0012_set_params(dev, freq, 6000000); +} +int fc0012_set_bw(void *dev, int bw) { return 0; } +int _fc0012_set_gain(void *dev, int gain) { return fc0012_set_gain(dev, gain); } +int fc0012_set_gain_mode(void *dev, int manual) { return 0; } + +int _fc0013_init(void *dev) { return fc0013_init(dev); } +int fc0013_exit(void *dev) { return 0; } +int fc0013_set_freq(void *dev, uint32_t freq) { + return fc0013_set_params(dev, freq, 6000000); +} +int fc0013_set_bw(void *dev, int bw) { return 0; } +int _fc0013_set_gain(void *dev, int gain) { return fc0013_set_lna_gain(dev, gain); } + +int fc2580_init(void *dev) { return fc2580_Initialize(dev); } +int fc2580_exit(void *dev) { return 0; } +int _fc2580_set_freq(void *dev, uint32_t freq) { + return fc2580_SetRfFreqHz(dev, freq); +} +int fc2580_set_bw(void *dev, int bw) { return fc2580_SetBandwidthMode(dev, 1); } +int fc2580_set_gain(void *dev, int gain) { return 0; } +int fc2580_set_gain_mode(void *dev, int manual) { return 0; } + +int r820t_init(void *dev) { + int r = R828_Init(dev); + r820t_SetStandardMode(dev, DVB_T_6M); + return r; +} +int r820t_exit(void *dev) { return 0; } +int r820t_set_freq(void *dev, uint32_t freq) { return r820t_SetRfFreqHz(dev, freq); } +int r820t_set_bw(void *dev, int bw) { return 0; } +int r820t_set_gain(void *dev, int gain) { return R828_SetRfGain(dev, gain); } +int r820t_set_gain_mode(void *dev, int manual) { return R828_RfGainMode(dev, manual); } + +/* definition order must match enum rtlsdr_tuner */ +static rtlsdr_tuner_iface_t tuners[] = { + { + NULL, NULL, NULL, NULL, NULL, NULL, NULL /* dummy for unknown tuners */ + }, + { + e4000_init, e4000_exit, + e4000_set_freq, e4000_set_bw, e4000_set_gain, e4000_set_if_gain, + e4000_set_gain_mode + }, + { + _fc0012_init, fc0012_exit, + fc0012_set_freq, fc0012_set_bw, _fc0012_set_gain, NULL, + fc0012_set_gain_mode + }, + { + _fc0013_init, fc0013_exit, + fc0013_set_freq, fc0013_set_bw, _fc0013_set_gain, NULL, + fc0013_set_gain_mode + }, + { + fc2580_init, fc2580_exit, + _fc2580_set_freq, fc2580_set_bw, fc2580_set_gain, NULL, + fc2580_set_gain_mode + }, + { + r820t_init, r820t_exit, + r820t_set_freq, r820t_set_bw, r820t_set_gain, NULL, + r820t_set_gain_mode + }, +}; + +typedef struct rtlsdr_dongle { + uint16_t vid; + uint16_t pid; + const char *name; +} rtlsdr_dongle_t; + +/* + * Please add your device here and send a patch to osmocom-sdr@lists.osmocom.org + */ +static rtlsdr_dongle_t known_devices[] = { + { 0x0bda, 0x2832, "Generic RTL2832U (e.g. hama nano)" }, + { 0x0bda, 0x2838, "ezcap USB 2.0 DVB-T/DAB/FM dongle" }, + { 0x0ccd, 0x00a9, "Terratec Cinergy T Stick Black (rev 1)" }, + { 0x0ccd, 0x00b3, "Terratec NOXON DAB/DAB+ USB dongle (rev 1)" }, + { 0x0ccd, 0x00b4, "Terratec NOXON DAB/DAB+ USB dongle (rev 1)" }, + { 0x0ccd, 0x00b7, "Terratec NOXON DAB/DAB+ USB dongle (rev 1)" }, + { 0x0ccd, 0x00c6, "Terratec NOXON DAB/DAB+ USB dongle (rev 1)" }, + { 0x0ccd, 0x00d3, "Terratec Cinergy T Stick RC (Rev.3)" }, + { 0x0ccd, 0x00d7, "Terratec T Stick PLUS" }, + { 0x0ccd, 0x00e0, "Terratec NOXON DAB/DAB+ USB dongle (rev 2)" }, + { 0x1554, 0x5020, "PixelView PV-DT235U(RN)" }, + { 0x185b, 0x0620, "Compro Videomate U620F"}, + { 0x185b, 0x0650, "Compro Videomate U650F"}, + { 0x185b, 0x0680, "Compro Videomate U680F"}, + { 0x1f4d, 0xa803, "Sweex DVB-T USB" }, + { 0x1f4d, 0xb803, "GTek T803" }, + { 0x1f4d, 0xc803, "Lifeview LV5TDeluxe" }, + { 0x1f4d, 0xd286, "MyGica TD312" }, + { 0x1f4d, 0xd803, "PROlectrix DV107669" }, + { 0x1b80, 0xd398, "Zaapa ZT-MINDVBZP" }, + { 0x1b80, 0xd3a4, "Twintech UT-40" }, + { 0x1d19, 0x1101, "Dexatek DK DVB-T Dongle (Logilink VG0002A)" }, + { 0x1d19, 0x1102, "Dexatek DK DVB-T Dongle (MSI DigiVox mini II V3.0)" }, + { 0x1d19, 0x1103, "Dexatek Technology Ltd. DK 5217 DVB-T Dongle" }, + { 0x1d19, 0x1104, "MSI DigiVox Micro HD" }, + { 0x0458, 0x707f, "Genius TVGo DVB-T03 USB dongle (Ver. B)" }, + { 0x1b80, 0xd393, "GIGABYTE GT-U7300" }, + { 0x1b80, 0xd394, "DIKOM USB-DVBT HD" }, + { 0x1b80, 0xd395, "Peak 102569AGPK" }, + { 0x1b80, 0xd39d, "SVEON STV20 DVB-T USB & FM" }, +}; + +#define DEFAULT_BUF_NUMBER 32 +#define DEFAULT_BUF_LENGTH (16 * 32 * 512) + +#define DEF_RTL_XTAL_FREQ 28800000 +#define MIN_RTL_XTAL_FREQ (DEF_RTL_XTAL_FREQ - 1000) +#define MAX_RTL_XTAL_FREQ (DEF_RTL_XTAL_FREQ + 1000) + +#define MAX_SAMP_RATE 3200000 + +#define CTRL_IN (LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_ENDPOINT_IN) +#define CTRL_OUT (LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_ENDPOINT_OUT) +#define CTRL_TIMEOUT 300 +#define BULK_TIMEOUT 0 + +#define EEPROM_ADDR 0xa0 + +enum usb_reg { + USB_SYSCTL = 0x2000, + USB_CTRL = 0x2010, + USB_STAT = 0x2014, + USB_EPA_CFG = 0x2144, + USB_EPA_CTL = 0x2148, + USB_EPA_MAXPKT = 0x2158, + USB_EPA_MAXPKT_2 = 0x215a, + USB_EPA_FIFO_CFG = 0x2160, +}; + +enum sys_reg { + DEMOD_CTL = 0x3000, + GPO = 0x3001, + GPI = 0x3002, + GPOE = 0x3003, + GPD = 0x3004, + SYSINTE = 0x3005, + SYSINTS = 0x3006, + GP_CFG0 = 0x3007, + GP_CFG1 = 0x3008, + SYSINTE_1 = 0x3009, + SYSINTS_1 = 0x300a, + DEMOD_CTL_1 = 0x300b, + IR_SUSPEND = 0x300c, +}; + +enum blocks { + DEMODB = 0, + USBB = 1, + SYSB = 2, + TUNB = 3, + ROMB = 4, + IRB = 5, + IICB = 6, +}; + +int rtlsdr_read_array(rtlsdr_dev_t *dev, uint8_t block, uint16_t addr, uint8_t *array, uint8_t len) +{ + int r; + uint16_t index = (block << 8); + + r = libusb_control_transfer(dev->devh, CTRL_IN, 0, addr, index, array, len, CTRL_TIMEOUT); +#if 0 + if (r < 0) + fprintf(stderr, "%s failed with %d\n", __FUNCTION__, r); +#endif + return r; +} + +int rtlsdr_write_array(rtlsdr_dev_t *dev, uint8_t block, uint16_t addr, uint8_t *array, uint8_t len) +{ + int r; + uint16_t index = (block << 8) | 0x10; + + r = libusb_control_transfer(dev->devh, CTRL_OUT, 0, addr, index, array, len, CTRL_TIMEOUT); +#if 0 + if (r < 0) + fprintf(stderr, "%s failed with %d\n", __FUNCTION__, r); +#endif + return r; +} + +int rtlsdr_i2c_write_reg(rtlsdr_dev_t *dev, uint8_t i2c_addr, uint8_t reg, uint8_t val) +{ + uint16_t addr = i2c_addr; + uint8_t data[2]; + + data[0] = reg; + data[1] = val; + return rtlsdr_write_array(dev, IICB, addr, (uint8_t *)&data, 2); +} + +uint8_t rtlsdr_i2c_read_reg(rtlsdr_dev_t *dev, uint8_t i2c_addr, uint8_t reg) +{ + uint16_t addr = i2c_addr; + uint8_t data = 0; + + rtlsdr_write_array(dev, IICB, addr, ®, 1); + rtlsdr_read_array(dev, IICB, addr, &data, 1); + + return data; +} + +/* TODO clean this up again */ +int e4k_reg_write(struct e4k_state *e4k, uint8_t reg, uint8_t val) +{ + return rtlsdr_i2c_write_reg((rtlsdr_dev_t*)e4k->rtl_dev, e4k->i2c_addr, reg, val);} + +uint8_t e4k_reg_read(struct e4k_state *e4k, uint8_t reg) +{ + return rtlsdr_i2c_read_reg((rtlsdr_dev_t*)e4k->rtl_dev, e4k->i2c_addr, reg); +} + +int rtlsdr_i2c_write(rtlsdr_dev_t *dev, uint8_t i2c_addr, uint8_t *buffer, int len) +{ + uint16_t addr = i2c_addr; + + if (!dev) + return -1; + + return rtlsdr_write_array(dev, IICB, addr, buffer, len); +} + +int rtlsdr_i2c_read(rtlsdr_dev_t *dev, uint8_t i2c_addr, uint8_t *buffer, int len) +{ + uint16_t addr = i2c_addr; + + if (!dev) + return -1; + + return rtlsdr_read_array(dev, IICB, addr, buffer, len); +} + +uint16_t rtlsdr_read_reg(rtlsdr_dev_t *dev, uint8_t block, uint16_t addr, uint8_t len) +{ + int r; + unsigned char data[2]; + uint16_t index = (block << 8); + uint16_t reg; + + r = libusb_control_transfer(dev->devh, CTRL_IN, 0, addr, index, data, len, CTRL_TIMEOUT); + + if (r < 0) + fprintf(stderr, "%s failed with %d\n", __FUNCTION__, r); + + reg = (data[1] << 8) | data[0]; + + return reg; +} + +int rtlsdr_write_reg(rtlsdr_dev_t *dev, uint8_t block, uint16_t addr, uint16_t val, uint8_t len) +{ + int r; + unsigned char data[2]; + + uint16_t index = (block << 8) | 0x10; + + if (len == 1) + data[0] = val & 0xff; + else + data[0] = val >> 8; + + data[1] = val & 0xff; + + r = libusb_control_transfer(dev->devh, CTRL_OUT, 0, addr, index, data, len, CTRL_TIMEOUT); + + if (r < 0) + fprintf(stderr, "%s failed with %d\n", __FUNCTION__, r); + + return r; +} + +uint16_t rtlsdr_demod_read_reg(rtlsdr_dev_t *dev, uint8_t page, uint16_t addr, uint8_t len) +{ + int r; + unsigned char data[2]; + + uint16_t index = page; + uint16_t reg; + addr = (addr << 8) | 0x20; + + r = libusb_control_transfer(dev->devh, CTRL_IN, 0, addr, index, data, len, CTRL_TIMEOUT); + + if (r < 0) + fprintf(stderr, "%s failed with %d\n", __FUNCTION__, r); + + reg = (data[1] << 8) | data[0]; + + return reg; +} + +int rtlsdr_demod_write_reg(rtlsdr_dev_t *dev, uint8_t page, uint16_t addr, uint16_t val, uint8_t len) +{ + int r; + unsigned char data[2]; + uint16_t index = 0x10 | page; + addr = (addr << 8) | 0x20; + + if (len == 1) + data[0] = val & 0xff; + else + data[0] = val >> 8; + + data[1] = val & 0xff; + + r = libusb_control_transfer(dev->devh, CTRL_OUT, 0, addr, index, data, len, CTRL_TIMEOUT); + + if (r < 0) + fprintf(stderr, "%s failed with %d\n", __FUNCTION__, r); + + rtlsdr_demod_read_reg(dev, 0x0a, 0x01, 1); + + return (r == len) ? 0 : -1; +} + +void rtlsdr_set_gpio_bit(rtlsdr_dev_t *dev, uint8_t gpio, int val) +{ + uint8_t r; + + gpio = 1 << gpio; + r = rtlsdr_read_reg(dev, SYSB, GPO, 1); + r = val ? (r | gpio) : (r & ~gpio); + rtlsdr_write_reg(dev, SYSB, GPO, r, 1); +} + +void rtlsdr_set_gpio_output(rtlsdr_dev_t *dev, uint8_t gpio) +{ + int r; + gpio = 1 << gpio; + + r = rtlsdr_read_reg(dev, SYSB, GPD, 1); + rtlsdr_write_reg(dev, SYSB, GPO, r & ~gpio, 1); + r = rtlsdr_read_reg(dev, SYSB, GPOE, 1); + rtlsdr_write_reg(dev, SYSB, GPOE, r | gpio, 1); +} + +void rtlsdr_set_i2c_repeater(rtlsdr_dev_t *dev, int on) +{ + rtlsdr_demod_write_reg(dev, 1, 0x01, on ? 0x18 : 0x10, 1); +} + +void rtlsdr_init_baseband(rtlsdr_dev_t *dev) +{ + unsigned int i; + + /* default FIR coefficients used for DAB/FM by the Windows driver, + * the DVB driver uses different ones */ + uint8_t fir_coeff[] = { + 0xca, 0xdc, 0xd7, 0xd8, 0xe0, 0xf2, 0x0e, 0x35, 0x06, 0x50, + 0x9c, 0x0d, 0x71, 0x11, 0x14, 0x71, 0x74, 0x19, 0x41, 0xa5, + }; + + /* initialize USB */ + rtlsdr_write_reg(dev, USBB, USB_SYSCTL, 0x09, 1); + rtlsdr_write_reg(dev, USBB, USB_EPA_MAXPKT, 0x0002, 2); + rtlsdr_write_reg(dev, USBB, USB_EPA_CTL, 0x1002, 2); + + /* poweron demod */ + rtlsdr_write_reg(dev, SYSB, DEMOD_CTL_1, 0x22, 1); + rtlsdr_write_reg(dev, SYSB, DEMOD_CTL, 0xe8, 1); + + /* reset demod (bit 3, soft_rst) */ + rtlsdr_demod_write_reg(dev, 1, 0x01, 0x14, 1); + rtlsdr_demod_write_reg(dev, 1, 0x01, 0x10, 1); + + /* disable spectrum inversion and adjacent channel rejection */ + rtlsdr_demod_write_reg(dev, 1, 0x15, 0x00, 1); + rtlsdr_demod_write_reg(dev, 1, 0x16, 0x0000, 2); + + /* clear both DDC shift and IF frequency registers */ + for (i = 0; i < 6; i++) + rtlsdr_demod_write_reg(dev, 1, 0x16 + i, 0x00, 1); + + /* set FIR coefficients */ + for (i = 0; i < sizeof (fir_coeff); i++) + rtlsdr_demod_write_reg(dev, 1, 0x1c + i, fir_coeff[i], 1); + + /* enable SDR mode, disable DAGC (bit 5) */ + rtlsdr_demod_write_reg(dev, 0, 0x19, 0x05, 1); + + /* init FSM state-holding register */ + rtlsdr_demod_write_reg(dev, 1, 0x93, 0xf0, 1); + rtlsdr_demod_write_reg(dev, 1, 0x94, 0x0f, 1); + + /* disable AGC (en_dagc, bit 0) (this seems to have no effect) */ + rtlsdr_demod_write_reg(dev, 1, 0x11, 0x00, 1); + + /* disable RF and IF AGC loop */ + rtlsdr_demod_write_reg(dev, 1, 0x04, 0x00, 1); + + /* disable PID filter (enable_PID = 0) */ + rtlsdr_demod_write_reg(dev, 0, 0x61, 0x60, 1); + + /* opt_adc_iq = 0, default ADC_I/ADC_Q datapath */ + rtlsdr_demod_write_reg(dev, 0, 0x06, 0x80, 1); + + /* Enable Zero-IF mode (en_bbin bit), DC cancellation (en_dc_est), + * IQ estimation/compensation (en_iq_comp, en_iq_est) */ + rtlsdr_demod_write_reg(dev, 1, 0xb1, 0x1b, 1); + + /* disable 4.096 MHz clock output on pin TP_CK0 */ + rtlsdr_demod_write_reg(dev, 0, 0x0d, 0x83, 1); +} + +int rtlsdr_deinit_baseband(rtlsdr_dev_t *dev) +{ + int r = 0; + + if (!dev) + return -1; + + if (dev->tuner && dev->tuner->exit) { + rtlsdr_set_i2c_repeater(dev, 1); + r = dev->tuner->exit(dev); /* deinitialize tuner */ + rtlsdr_set_i2c_repeater(dev, 0); + } + + /* poweroff demodulator and ADCs */ + rtlsdr_write_reg(dev, SYSB, DEMOD_CTL, 0x20, 1); + + return r; +} + +int rtlsdr_set_if_freq(rtlsdr_dev_t *dev, uint32_t freq) +{ + uint32_t rtl_xtal; + int32_t if_freq; + uint8_t tmp; + int r; + + if (!dev) + return -1; + + /* read corrected clock value */ + if (rtlsdr_get_xtal_freq(dev, &rtl_xtal, NULL)) + return -2; + + if_freq = ((freq * TWO_POW(22)) / rtl_xtal) * (-1); + + tmp = (if_freq >> 16) & 0x3f; + r = rtlsdr_demod_write_reg(dev, 1, 0x19, tmp, 1); + tmp = (if_freq >> 8) & 0xff; + r |= rtlsdr_demod_write_reg(dev, 1, 0x1a, tmp, 1); + tmp = if_freq & 0xff; + r |= rtlsdr_demod_write_reg(dev, 1, 0x1b, tmp, 1); + + return r; +} + +int rtlsdr_set_sample_freq_correction(rtlsdr_dev_t *dev, int ppm) +{ + int r = 0; + uint8_t tmp; + int16_t offs = ppm * (-1) * TWO_POW(24) / 1000000; + + tmp = offs & 0xff; + r |= rtlsdr_demod_write_reg(dev, 1, 0x3f, tmp, 1); + tmp = (offs >> 8) & 0x3f; + r |= rtlsdr_demod_write_reg(dev, 1, 0x3e, tmp, 1); + + return r; +} + +int rtlsdr_set_xtal_freq(rtlsdr_dev_t *dev, uint32_t rtl_freq, uint32_t tuner_freq) +{ + int r = 0; + + if (!dev) + return -1; + + if (rtl_freq > 0 && + (rtl_freq < MIN_RTL_XTAL_FREQ || rtl_freq > MAX_RTL_XTAL_FREQ)) + return -2; + + if (rtl_freq > 0 && dev->rtl_xtal != rtl_freq) { + dev->rtl_xtal = rtl_freq; + + /* update xtal-dependent settings */ + if (dev->rate) + r = rtlsdr_set_sample_rate(dev, dev->rate); + } + + if (dev->tun_xtal != tuner_freq) { + if (0 == tuner_freq) + dev->tun_xtal = dev->rtl_xtal; + else + dev->tun_xtal = tuner_freq; + + /* read corrected clock value into e4k structure */ + if (rtlsdr_get_xtal_freq(dev, NULL, &dev->e4k_s.vco.fosc)) + return -3; + + /* update xtal-dependent settings */ + if (dev->freq) + r = rtlsdr_set_center_freq(dev, dev->freq); + } + + return r; +} + +int rtlsdr_get_xtal_freq(rtlsdr_dev_t *dev, uint32_t *rtl_freq, uint32_t *tuner_freq) +{ + if (!dev) + return -1; + + #define APPLY_PPM_CORR(val,ppm) (((val) * (1.0 + (ppm) / 1e6))) + + if (rtl_freq) + *rtl_freq = (uint32_t) APPLY_PPM_CORR(dev->rtl_xtal, dev->corr); + + if (tuner_freq) + *tuner_freq = (uint32_t) APPLY_PPM_CORR(dev->tun_xtal, dev->corr); + + return 0; +} + +int rtlsdr_get_usb_strings(rtlsdr_dev_t *dev, char *manufact, char *product, + char *serial) +{ + struct libusb_device_descriptor dd; + libusb_device *device = NULL; + const int buf_max = 256; + int r = 0; + + if (!dev || !dev->devh) + return -1; + + device = libusb_get_device(dev->devh); + + r = libusb_get_device_descriptor(device, &dd); + if (r < 0) + return -1; + + if (manufact) { + memset(manufact, 0, buf_max); + libusb_get_string_descriptor_ascii(dev->devh, dd.iManufacturer, + (unsigned char *)manufact, + buf_max); + } + + if (product) { + memset(product, 0, buf_max); + libusb_get_string_descriptor_ascii(dev->devh, dd.iProduct, + (unsigned char *)product, + buf_max); + } + + if (serial) { + memset(serial, 0, buf_max); + libusb_get_string_descriptor_ascii(dev->devh, dd.iSerialNumber, + (unsigned char *)serial, + buf_max); + } + + return 0; +} + +int rtlsdr_write_eeprom(rtlsdr_dev_t *dev, uint8_t *data, uint8_t offset, uint16_t len) +{ + int r = 0; + int i; + uint8_t cmd[2]; + + if (!dev) + return -1; + + if ((len + offset) > 256) + return -2; + + for (i = 0; i < len; i++) { + cmd[0] = i + offset; + r = rtlsdr_write_array(dev, IICB, EEPROM_ADDR, cmd, 1); + r = rtlsdr_read_array(dev, IICB, EEPROM_ADDR, &cmd[1], 1); + + /* only write the byte if it differs */ + if (cmd[1] == data[i]) + continue; + + cmd[1] = data[i]; + r = rtlsdr_write_array(dev, IICB, EEPROM_ADDR, cmd, 2); + if (r != sizeof(cmd)) + return -3; + + /* for some EEPROMs (e.g. ATC 240LC02) we need a delay + * between write operations, otherwise they will fail */ +#ifdef _WIN32 + Sleep(5); +#else + usleep(5000); +#endif + } + + return 0; +} + +int rtlsdr_read_eeprom(rtlsdr_dev_t *dev, uint8_t *data, uint8_t offset, uint16_t len) +{ + int r = 0; + int i; + + if (!dev) + return -1; + + if ((len + offset) > 256) + return -2; + + r = rtlsdr_write_array(dev, IICB, EEPROM_ADDR, &offset, 1); + if (r < 0) + return -3; + + for (i = 0; i < len; i++) { + r = rtlsdr_read_array(dev, IICB, EEPROM_ADDR, data + i, 1); + + if (r < 0) + return -3; + } + + return r; +} + +int rtlsdr_set_center_freq(rtlsdr_dev_t *dev, uint32_t freq) +{ + int r = -1; + + if (!dev || !dev->tuner) + return -1; + + if (dev->direct_sampling) { + r = rtlsdr_set_if_freq(dev, freq); + } else if (dev->tuner && dev->tuner->set_freq) { + rtlsdr_set_i2c_repeater(dev, 1); + r = dev->tuner->set_freq(dev, freq - dev->offs_freq); + rtlsdr_set_i2c_repeater(dev, 0); + } + + if (!r) + dev->freq = freq; + else + dev->freq = 0; + + return r; +} + +uint32_t rtlsdr_get_center_freq(rtlsdr_dev_t *dev) +{ + if (!dev) + return 0; + + return dev->freq; +} + +int rtlsdr_set_freq_correction(rtlsdr_dev_t *dev, int ppm) +{ + int r = 0; + + if (!dev) + return -1; + + if (dev->corr == ppm) + return -2; + + dev->corr = ppm; + + r |= rtlsdr_set_sample_freq_correction(dev, ppm); + + /* read corrected clock value into e4k structure */ + if (rtlsdr_get_xtal_freq(dev, NULL, &dev->e4k_s.vco.fosc)) + return -3; + + if (dev->freq) /* retune to apply new correction value */ + r |= rtlsdr_set_center_freq(dev, dev->freq); + + return r; +} + +int rtlsdr_get_freq_correction(rtlsdr_dev_t *dev) +{ + if (!dev) + return 0; + + return dev->corr; +} + +enum rtlsdr_tuner rtlsdr_get_tuner_type(rtlsdr_dev_t *dev) +{ + if (!dev) + return RTLSDR_TUNER_UNKNOWN; + + return dev->tuner_type; +} + +int rtlsdr_get_tuner_gains(rtlsdr_dev_t *dev, int *gains) +{ + /* all gain values are expressed in tenths of a dB */ + const int e4k_gains[] = { -10, 15, 40, 65, 90, 115, 140, 165, 190, 215, + 240, 290, 340, 420 }; + const int fc0012_gains[] = { -99, -40, 71, 179, 192 }; + const int fc0013_gains[] = { -99, -73, -65, -63, -60, -58, -54, 58, 61, + 63, 65, 67, 68, 70, 71, 179, 181, 182, + 184, 186, 188, 191, 197 }; + const int fc2580_gains[] = { 0 /* no gain values */ }; + const int r820t_gains[] = { 0, 9, 14, 27, 37, 77, 87, 125, 144, 157, + 166, 197, 207, 229, 254, 280, 297, 328, + 338, 364, 372, 386, 402, 421, 434, 439, + 445, 480, 496 }; + const int unknown_gains[] = { 0 /* no gain values */ }; + + const int *ptr = NULL; + int len = 0; + + if (!dev) + return -1; + + switch (dev->tuner_type) { + case RTLSDR_TUNER_E4000: + ptr = e4k_gains; len = sizeof(e4k_gains); + break; + case RTLSDR_TUNER_FC0012: + ptr = fc0012_gains; len = sizeof(fc0012_gains); + break; + case RTLSDR_TUNER_FC0013: + ptr = fc0013_gains; len = sizeof(fc0013_gains); + break; + case RTLSDR_TUNER_FC2580: + ptr = fc2580_gains; len = sizeof(fc2580_gains); + break; + case RTLSDR_TUNER_R820T: + ptr = r820t_gains; len = sizeof(r820t_gains); + break; + default: + ptr = unknown_gains; len = sizeof(unknown_gains); + break; + } + + if (!gains) { /* no buffer provided, just return the count */ + return len / sizeof(int); + } else { + if (len) + memcpy(gains, ptr, len); + + return len / sizeof(int); + } +} + +int rtlsdr_set_tuner_gain(rtlsdr_dev_t *dev, int gain) +{ + int r = 0; + + if (!dev || !dev->tuner) + return -1; + + if (dev->tuner->set_gain) { + rtlsdr_set_i2c_repeater(dev, 1); + r = dev->tuner->set_gain((void *)dev, gain); + rtlsdr_set_i2c_repeater(dev, 0); + } + + if (!r) + dev->gain = gain; + else + dev->gain = 0; + + return r; +} + +int rtlsdr_get_tuner_gain(rtlsdr_dev_t *dev) +{ + if (!dev) + return 0; + + return dev->gain; +} + +int rtlsdr_set_tuner_if_gain(rtlsdr_dev_t *dev, int stage, int gain) +{ + int r = 0; + + if (!dev || !dev->tuner) + return -1; + + if (dev->tuner->set_if_gain) { + rtlsdr_set_i2c_repeater(dev, 1); + r = dev->tuner->set_if_gain(dev, stage, gain); + rtlsdr_set_i2c_repeater(dev, 0); + } + + return r; +} + +int rtlsdr_set_tuner_gain_mode(rtlsdr_dev_t *dev, int mode) +{ + int r = 0; + + if (!dev || !dev->tuner) + return -1; + + if (dev->tuner->set_gain_mode) { + rtlsdr_set_i2c_repeater(dev, 1); + r = dev->tuner->set_gain_mode((void *)dev, mode); + rtlsdr_set_i2c_repeater(dev, 0); + } + + return r; +} + +int rtlsdr_set_sample_rate(rtlsdr_dev_t *dev, uint32_t samp_rate) +{ + int r = 0; + uint16_t tmp; + uint32_t rsamp_ratio; + double real_rate; + + if (!dev) + return -1; + + /* check for the maximum rate the resampler supports */ + if (samp_rate > MAX_SAMP_RATE) + samp_rate = MAX_SAMP_RATE; + + rsamp_ratio = (dev->rtl_xtal * TWO_POW(22)) / samp_rate; + rsamp_ratio &= ~3; + + real_rate = (dev->rtl_xtal * TWO_POW(22)) / rsamp_ratio; + + if ( ((double)samp_rate) != real_rate ) + fprintf(stderr, "Exact sample rate is: %f Hz\n", real_rate); + + if (dev->tuner && dev->tuner->set_bw) { + rtlsdr_set_i2c_repeater(dev, 1); + dev->tuner->set_bw(dev, (int)real_rate); + rtlsdr_set_i2c_repeater(dev, 0); + } + + dev->rate = (uint32_t)real_rate; + + tmp = (rsamp_ratio >> 16); + r |= rtlsdr_demod_write_reg(dev, 1, 0x9f, tmp, 2); + tmp = rsamp_ratio & 0xffff; + r |= rtlsdr_demod_write_reg(dev, 1, 0xa1, tmp, 2); + + r |= rtlsdr_set_sample_freq_correction(dev, dev->corr); + + /* reset demod (bit 3, soft_rst) */ + r |= rtlsdr_demod_write_reg(dev, 1, 0x01, 0x14, 1); + r |= rtlsdr_demod_write_reg(dev, 1, 0x01, 0x10, 1); + + /* recalculate offset frequency if offset tuning is enabled */ + if (dev->offs_freq) + rtlsdr_set_offset_tuning(dev, 1); + + return r; +} + +uint32_t rtlsdr_get_sample_rate(rtlsdr_dev_t *dev) +{ + if (!dev) + return 0; + + return dev->rate; +} + +int rtlsdr_set_testmode(rtlsdr_dev_t *dev, int on) +{ + if (!dev) + return -1; + + return rtlsdr_demod_write_reg(dev, 0, 0x19, on ? 0x03 : 0x05, 1); +} + +int rtlsdr_set_agc_mode(rtlsdr_dev_t *dev, int on) +{ + if (!dev) + return -1; + + return rtlsdr_demod_write_reg(dev, 0, 0x19, on ? 0x25 : 0x05, 1); +} + +int rtlsdr_set_direct_sampling(rtlsdr_dev_t *dev, int on) +{ + int r = 0; + + if (!dev) + return -1; + + if (on) { + if (dev->tuner && dev->tuner->exit) { + rtlsdr_set_i2c_repeater(dev, 1); + r = dev->tuner->exit(dev); + rtlsdr_set_i2c_repeater(dev, 0); + } + + /* disable Zero-IF mode */ + r |= rtlsdr_demod_write_reg(dev, 1, 0xb1, 0x1a, 1); + + /* disable spectrum inversion */ + r |= rtlsdr_demod_write_reg(dev, 1, 0x15, 0x00, 1); + + /* only enable In-phase ADC input */ + r |= rtlsdr_demod_write_reg(dev, 0, 0x08, 0x4d, 1); + + /* swap I and Q ADC, this allows to select between two inputs */ + r |= rtlsdr_demod_write_reg(dev, 0, 0x06, (on > 1) ? 0x90 : 0x80, 1); + + fprintf(stderr, "Enabled direct sampling mode, input %i\n", on); + dev->direct_sampling = on; + } else { + if (dev->tuner && dev->tuner->init) { + rtlsdr_set_i2c_repeater(dev, 1); + r |= dev->tuner->init(dev); + rtlsdr_set_i2c_repeater(dev, 0); + } + + if (dev->tuner_type == RTLSDR_TUNER_R820T) { + r |= rtlsdr_set_if_freq(dev, R820T_IF_FREQ); + + /* enable spectrum inversion */ + r |= rtlsdr_demod_write_reg(dev, 1, 0x15, 0x01, 1); + } else { + r |= rtlsdr_set_if_freq(dev, 0); + + /* enable In-phase + Quadrature ADC input */ + r |= rtlsdr_demod_write_reg(dev, 0, 0x08, 0xcd, 1); + + /* Enable Zero-IF mode */ + r |= rtlsdr_demod_write_reg(dev, 1, 0xb1, 0x1b, 1); + } + + /* opt_adc_iq = 0, default ADC_I/ADC_Q datapath */ + r |= rtlsdr_demod_write_reg(dev, 0, 0x06, 0x80, 1); + + fprintf(stderr, "Disabled direct sampling mode\n"); + dev->direct_sampling = 0; + } + + r |= rtlsdr_set_center_freq(dev, dev->freq); + + return r; +} + +int rtlsdr_get_direct_sampling(rtlsdr_dev_t *dev) +{ + if (!dev) + return -1; + + return dev->direct_sampling; +} + +int rtlsdr_set_offset_tuning(rtlsdr_dev_t *dev, int on) +{ + int r = 0; + + if (!dev) + return -1; + + if (dev->tuner_type == RTLSDR_TUNER_R820T) + return -2; + + if (dev->direct_sampling) + return -3; + + /* based on keenerds 1/f noise measurements */ + dev->offs_freq = on ? ((dev->rate / 2) * 170 / 100) : 0; + r |= rtlsdr_set_if_freq(dev, dev->offs_freq); + + if (dev->tuner && dev->tuner->set_bw) { + rtlsdr_set_i2c_repeater(dev, 1); + dev->tuner->set_bw(dev, on ? (2 * dev->offs_freq) : dev->rate); + rtlsdr_set_i2c_repeater(dev, 0); + } + + if (dev->freq > dev->offs_freq) + r |= rtlsdr_set_center_freq(dev, dev->freq); + + return r; +} + +int rtlsdr_get_offset_tuning(rtlsdr_dev_t *dev) +{ + if (!dev) + return -1; + + return (dev->offs_freq) ? 1 : 0; +} + +static rtlsdr_dongle_t *find_known_device(uint16_t vid, uint16_t pid) +{ + unsigned int i; + rtlsdr_dongle_t *device = NULL; + + for (i = 0; i < sizeof(known_devices)/sizeof(rtlsdr_dongle_t); i++ ) { + if (known_devices[i].vid == vid && known_devices[i].pid == pid) { + device = &known_devices[i]; + break; + } + } + + return device; +} + +uint32_t rtlsdr_get_device_count(void) +{ + int i; + libusb_context *ctx; + libusb_device **list; + uint32_t device_count = 0; + struct libusb_device_descriptor dd; + ssize_t cnt; + + libusb_init(&ctx); + + cnt = libusb_get_device_list(ctx, &list); + + for (i = 0; i < cnt; i++) { + libusb_get_device_descriptor(list[i], &dd); + + if (find_known_device(dd.idVendor, dd.idProduct)) + device_count++; + } + + libusb_free_device_list(list, 1); + + libusb_exit(ctx); + + return device_count; +} + +const char *rtlsdr_get_device_name(uint32_t index) +{ + int i; + libusb_context *ctx; + libusb_device **list; + struct libusb_device_descriptor dd; + rtlsdr_dongle_t *device = NULL; + uint32_t device_count = 0; + ssize_t cnt; + + libusb_init(&ctx); + + cnt = libusb_get_device_list(ctx, &list); + + for (i = 0; i < cnt; i++) { + libusb_get_device_descriptor(list[i], &dd); + + device = find_known_device(dd.idVendor, dd.idProduct); + + if (device) { + device_count++; + + if (index == device_count - 1) + break; + } + } + + libusb_free_device_list(list, 1); + + libusb_exit(ctx); + + if (device) + return device->name; + else + return ""; +} + +int rtlsdr_get_device_usb_strings(uint32_t index, char *manufact, + char *product, char *serial) +{ + int r = -2; + int i; + libusb_context *ctx; + libusb_device **list; + struct libusb_device_descriptor dd; + rtlsdr_dongle_t *device = NULL; + rtlsdr_dev_t devt; + uint32_t device_count = 0; + ssize_t cnt; + + libusb_init(&ctx); + + cnt = libusb_get_device_list(ctx, &list); + + for (i = 0; i < cnt; i++) { + libusb_get_device_descriptor(list[i], &dd); + + device = find_known_device(dd.idVendor, dd.idProduct); + + if (device) { + device_count++; + + if (index == device_count - 1) { + r = libusb_open(list[i], &devt.devh); + if (!r) { + r = rtlsdr_get_usb_strings(&devt, + manufact, + product, + serial); + libusb_close(devt.devh); + } + break; + } + } + } + + libusb_free_device_list(list, 1); + + libusb_exit(ctx); + + return r; +} + +int rtlsdr_get_index_by_serial(const char *serial) +{ + int i, cnt, r; + char str[256]; + + if (!serial) + return -1; + + cnt = rtlsdr_get_device_count(); + + if (!cnt) + return -2; + + for (i = 0; i < cnt; i++) { + r = rtlsdr_get_device_usb_strings(i, NULL, NULL, str); + if (!r && !strcmp(serial, str)) + return i; + } + + return -3; +} + +int rtlsdr_open(rtlsdr_dev_t **out_dev, uint32_t index) +{ + int r; + int i; + libusb_device **list; + rtlsdr_dev_t *dev = NULL; + libusb_device *device = NULL; + uint32_t device_count = 0; + struct libusb_device_descriptor dd; + uint8_t reg; + ssize_t cnt; + + dev = malloc(sizeof(rtlsdr_dev_t)); + if (NULL == dev) + return -ENOMEM; + + memset(dev, 0, sizeof(rtlsdr_dev_t)); + + libusb_init(&dev->ctx); + + cnt = libusb_get_device_list(dev->ctx, &list); + + for (i = 0; i < cnt; i++) { + device = list[i]; + + libusb_get_device_descriptor(list[i], &dd); + + if (find_known_device(dd.idVendor, dd.idProduct)) { + device_count++; + } + + if (index == device_count - 1) + break; + + device = NULL; + } + + if (!device) { + r = -1; + goto err; + } + + r = libusb_open(device, &dev->devh); + if (r < 0) { + libusb_free_device_list(list, 1); + fprintf(stderr, "usb_open error %d\n", r); + goto err; + } + + libusb_free_device_list(list, 1); + + r = libusb_claim_interface(dev->devh, 0); + if (r < 0) { + fprintf(stderr, "usb_claim_interface error %d\n", r); + goto err; + } + + dev->rtl_xtal = DEF_RTL_XTAL_FREQ; + + /* perform a dummy write, if it fails, reset the device */ + if (rtlsdr_write_reg(dev, USBB, USB_SYSCTL, 0x09, 1) < 0) { + fprintf(stderr, "Resetting device...\n"); + libusb_reset_device(dev->devh); + } + + rtlsdr_init_baseband(dev); + + /* Probe tuners */ + rtlsdr_set_i2c_repeater(dev, 1); + + reg = rtlsdr_i2c_read_reg(dev, E4K_I2C_ADDR, E4K_CHECK_ADDR); + if (reg == E4K_CHECK_VAL) { + fprintf(stderr, "Found Elonics E4000 tuner\n"); + dev->tuner_type = RTLSDR_TUNER_E4000; + goto found; + } + + reg = rtlsdr_i2c_read_reg(dev, FC0013_I2C_ADDR, FC0013_CHECK_ADDR); + if (reg == FC0013_CHECK_VAL) { + fprintf(stderr, "Found Fitipower FC0013 tuner\n"); + dev->tuner_type = RTLSDR_TUNER_FC0013; + goto found; + } + + reg = rtlsdr_i2c_read_reg(dev, R820T_I2C_ADDR, R820T_CHECK_ADDR); + if (reg == R820T_CHECK_VAL) { + fprintf(stderr, "Found Rafael Micro R820T tuner\n"); + dev->tuner_type = RTLSDR_TUNER_R820T; + + /* disable Zero-IF mode */ + rtlsdr_demod_write_reg(dev, 1, 0xb1, 0x1a, 1); + + /* only enable In-phase ADC input */ + rtlsdr_demod_write_reg(dev, 0, 0x08, 0x4d, 1); + + /* the R820T uses 3.57 MHz IF for the DVB-T 6 MHz mode, and + * 4.57 MHz for the 8 MHz mode */ + rtlsdr_set_if_freq(dev, R820T_IF_FREQ); + + /* enable spectrum inversion */ + rtlsdr_demod_write_reg(dev, 1, 0x15, 0x01, 1); + + goto found; + } + + /* initialise GPIOs */ + rtlsdr_set_gpio_output(dev, 5); + + /* reset tuner before probing */ + rtlsdr_set_gpio_bit(dev, 5, 1); + rtlsdr_set_gpio_bit(dev, 5, 0); + + reg = rtlsdr_i2c_read_reg(dev, FC2580_I2C_ADDR, FC2580_CHECK_ADDR); + if ((reg & 0x7f) == FC2580_CHECK_VAL) { + fprintf(stderr, "Found FCI 2580 tuner\n"); + dev->tuner_type = RTLSDR_TUNER_FC2580; + goto found; + } + + reg = rtlsdr_i2c_read_reg(dev, FC0012_I2C_ADDR, FC0012_CHECK_ADDR); + if (reg == FC0012_CHECK_VAL) { + fprintf(stderr, "Found Fitipower FC0012 tuner\n"); + rtlsdr_set_gpio_output(dev, 6); + dev->tuner_type = RTLSDR_TUNER_FC0012; + goto found; + } + +found: + if (dev->tuner_type == RTLSDR_TUNER_UNKNOWN) { + fprintf(stderr, "No supported tuner found\n"); + rtlsdr_set_direct_sampling(dev, 1); + } + + dev->tuner = &tuners[dev->tuner_type]; + dev->tun_xtal = dev->rtl_xtal; /* use the rtl clock value by default */ + + if (dev->tuner->init) + r = dev->tuner->init(dev); + + rtlsdr_set_i2c_repeater(dev, 0); + + *out_dev = dev; + + return 0; +err: + if (dev) { + if (dev->ctx) + libusb_exit(dev->ctx); + + free(dev); + } + + return r; +} + +int rtlsdr_close(rtlsdr_dev_t *dev) +{ + if (!dev) + return -1; + + /* block until all async operations have been completed (if any) */ + while (RTLSDR_INACTIVE != dev->async_status) { +#ifdef _WIN32 + Sleep(1); +#else + usleep(1000); +#endif + } + + rtlsdr_deinit_baseband(dev); + + libusb_release_interface(dev->devh, 0); + libusb_close(dev->devh); + + libusb_exit(dev->ctx); + + free(dev); + + return 0; +} + +int rtlsdr_reset_buffer(rtlsdr_dev_t *dev) +{ + if (!dev) + return -1; + + rtlsdr_write_reg(dev, USBB, USB_EPA_CTL, 0x1002, 2); + rtlsdr_write_reg(dev, USBB, USB_EPA_CTL, 0x0000, 2); + + return 0; +} + +int rtlsdr_read_sync(rtlsdr_dev_t *dev, void *buf, int len, int *n_read) +{ + if (!dev) + return -1; + + return libusb_bulk_transfer(dev->devh, 0x81, buf, len, n_read, BULK_TIMEOUT); +} + +static void LIBUSB_CALL _libusb_callback(struct libusb_transfer *xfer) +{ + rtlsdr_dev_t *dev = (rtlsdr_dev_t *)xfer->user_data; + + if (LIBUSB_TRANSFER_COMPLETED == xfer->status) { + if (dev->cb) + dev->cb(xfer->buffer, xfer->actual_length, dev->cb_ctx); + + libusb_submit_transfer(xfer); /* resubmit transfer */ + } else if (LIBUSB_TRANSFER_CANCELLED == xfer->status) { + /* nothing to do */ + } else { + /*fprintf(stderr, "transfer status: %d\n", xfer->status);*/ + } +} + +int rtlsdr_wait_async(rtlsdr_dev_t *dev, rtlsdr_read_async_cb_t cb, void *ctx) +{ + return rtlsdr_read_async(dev, cb, ctx, 0, 0); +} + +static int _rtlsdr_alloc_async_buffers(rtlsdr_dev_t *dev) +{ + unsigned int i; + + if (!dev) + return -1; + + if (!dev->xfer) { + dev->xfer = malloc(dev->xfer_buf_num * + sizeof(struct libusb_transfer *)); + + for(i = 0; i < dev->xfer_buf_num; ++i) + dev->xfer[i] = libusb_alloc_transfer(0); + } + + if (!dev->xfer_buf) { + dev->xfer_buf = malloc(dev->xfer_buf_num * + sizeof(unsigned char *)); + + for(i = 0; i < dev->xfer_buf_num; ++i) + dev->xfer_buf[i] = malloc(dev->xfer_buf_len); + } + + return 0; +} + +static int _rtlsdr_free_async_buffers(rtlsdr_dev_t *dev) +{ + unsigned int i; + + if (!dev) + return -1; + + if (dev->xfer) { + for(i = 0; i < dev->xfer_buf_num; ++i) { + if (dev->xfer[i]) { + libusb_free_transfer(dev->xfer[i]); + } + } + + free(dev->xfer); + dev->xfer = NULL; + } + + if (dev->xfer_buf) { + for(i = 0; i < dev->xfer_buf_num; ++i) { + if (dev->xfer_buf[i]) + free(dev->xfer_buf[i]); + } + + free(dev->xfer_buf); + dev->xfer_buf = NULL; + } + + return 0; +} + +int rtlsdr_read_async(rtlsdr_dev_t *dev, rtlsdr_read_async_cb_t cb, void *ctx, + uint32_t buf_num, uint32_t buf_len) +{ + unsigned int i; + int r = 0; + struct timeval tv = { 1, 0 }; + enum rtlsdr_async_status next_status = RTLSDR_INACTIVE; + + if (!dev) + return -1; + + if (RTLSDR_INACTIVE != dev->async_status) + return -2; + + dev->async_status = RTLSDR_RUNNING; + + dev->cb = cb; + dev->cb_ctx = ctx; + + if (buf_num > 0) + dev->xfer_buf_num = buf_num; + else + dev->xfer_buf_num = DEFAULT_BUF_NUMBER; + + if (buf_len > 0 && buf_len % 512 == 0) /* len must be multiple of 512 */ + dev->xfer_buf_len = buf_len; + else + dev->xfer_buf_len = DEFAULT_BUF_LENGTH; + + _rtlsdr_alloc_async_buffers(dev); + + for(i = 0; i < dev->xfer_buf_num; ++i) { + libusb_fill_bulk_transfer(dev->xfer[i], + dev->devh, + 0x81, + dev->xfer_buf[i], + dev->xfer_buf_len, + _libusb_callback, + (void *)dev, + BULK_TIMEOUT); + + libusb_submit_transfer(dev->xfer[i]); + } + + while (RTLSDR_INACTIVE != dev->async_status) { + r = libusb_handle_events_timeout(dev->ctx, &tv); + if (r < 0) { + /*fprintf(stderr, "handle_events returned: %d\n", r);*/ + if (r == LIBUSB_ERROR_INTERRUPTED) /* stray signal */ + continue; + break; + } + + if (RTLSDR_CANCELING == dev->async_status) { + next_status = RTLSDR_INACTIVE; + + if (!dev->xfer) + break; + + for(i = 0; i < dev->xfer_buf_num; ++i) { + if (!dev->xfer[i]) + continue; + + if (LIBUSB_TRANSFER_CANCELLED != + dev->xfer[i]->status) { + libusb_cancel_transfer(dev->xfer[i]); + next_status = RTLSDR_CANCELING; + } + } + + if (RTLSDR_INACTIVE == next_status) + break; + } + } + + _rtlsdr_free_async_buffers(dev); + + dev->async_status = next_status; + + return r; +} + +int rtlsdr_cancel_async(rtlsdr_dev_t *dev) +{ + if (!dev) + return -1; + + /* if streaming, try to cancel gracefully */ + if (RTLSDR_RUNNING == dev->async_status) { + dev->async_status = RTLSDR_CANCELING; + return 0; + } + + /* if called while in pending state, change the state forcefully */ + if (RTLSDR_INACTIVE != dev->async_status) { + dev->async_status = RTLSDR_INACTIVE; + return 0; + } + + return -2; +} + +uint32_t rtlsdr_get_tuner_clock(void *dev) +{ + uint32_t tuner_freq; + + if (!dev) + return 0; + + /* read corrected clock value */ + if (rtlsdr_get_xtal_freq((rtlsdr_dev_t *)dev, NULL, &tuner_freq)) + return 0; + + return tuner_freq; +} + +int rtlsdr_i2c_write_fn(void *dev, uint8_t addr, uint8_t *buf, int len) +{ + if (dev) + return rtlsdr_i2c_write(((rtlsdr_dev_t *)dev), addr, buf, len); + + return -1; +} + +int rtlsdr_i2c_read_fn(void *dev, uint8_t addr, uint8_t *buf, int len) +{ + if (dev) + return rtlsdr_i2c_read(((rtlsdr_dev_t *)dev), addr, buf, len); + + return -1; +} diff --git a/src/rtl_433.c b/src/rtl_433.c new file mode 100755 index 0000000..c997acb --- /dev/null +++ b/src/rtl_433.c @@ -0,0 +1,1789 @@ +/* + * rtl_433, turns your Realtek RTL2832 based DVB dongle into a 433.92MHz generic data receiver + * Copyright (C) 2012 by Benjamin Larsson + * + * Based on rtl_sdr + * + * Copyright (C) 2012 by Steve Markgraf + * + * 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, see . + */ + + +/* Currently this can decode the temperature and id from Rubicson sensors + * + * the sensor sends 36 bits 12 times pwm modulated + * the data is grouped into 9 nibles + * [id0] [id1], [unk0] [temp0], [temp1] [temp2], [unk1] [unk2], [unk3] + * + * The id changes when the battery is changed in the sensor. + * unk0 is always 1 0 0 0, most likely 2 channel bits as the sensor can recevice 3 channels + * unk1-3 changes and the meaning is unknown + * temp is 12 bit signed scaled by 10 + * + * The sensor can be bought at Kjell&Co + */ + +/* Prologue sensor protocol + * + * the sensor sends 36 bits 7 times, before the first packet there is a pulse sent + * the packets are pwm modulated + * + * the data is grouped in 9 nibles + * [id0] [rid0] [rid1] [data0] [temp0] [temp1] [temp2] [humi0] [humi1] + * + * id0 is always 1001,9 + * rid is a random id that is generated when the sensor starts, could include battery status + * the same batteries often generate the same id + * data(3) is 0 the battery status, 1 ok, 0 low, first reading always say low + * data(2) is 1 when the sensor sends a reading when pressing the button on the sensor + * data(1,0)+1 forms the channel number that can be set by the sensor (1-3) + * temp is 12 bit signed scaled by 10 + * humi0 is always 1100,c if no humidity sensor is available + * humi1 is always 1100,c if no humidity sensor is available + * + * The sensor can be bought at Clas Ohlson + */ + +#include +#include +#include +#include +#include +#include + +#ifndef _WIN32 +#include +#else +#include +#include +#include +#include "getopt/getopt.h" +#endif + +#include "rtl-sdr.h" + +#define DEFAULT_SAMPLE_RATE 250000 +#define DEFAULT_FREQUENCY 433920000 +#define DEFAULT_HOP_TIME (60*10) +#define DEFAULT_HOP_EVENTS 2 +#define DEFAULT_ASYNC_BUF_NUMBER 32 +#define DEFAULT_BUF_LENGTH (16 * 16384) +#define DEFAULT_LEVEL_LIMIT 10000 +#define DEFAULT_DECIMATION_LEVEL 0 +#define MINIMAL_BUF_LENGTH 512 +#define MAXIMAL_BUF_LENGTH (256 * 16384) +#define FILTER_ORDER 1 +#define MAX_PROTOCOLS 10 +#define SIGNAL_GRABBER_BUFFER (12 * DEFAULT_BUF_LENGTH) +#define BITBUF_COLS 34 +#define BITBUF_ROWS 50 + +static int do_exit = 0; +static int do_exit_async=0, frequencies=0, events=0; +uint32_t frequency[MAX_PROTOCOLS]; +time_t rawtime_old; +int flag; +uint32_t samp_rate=DEFAULT_SAMPLE_RATE; +static uint32_t bytes_to_read = 0; +static rtlsdr_dev_t *dev = NULL; +static uint16_t scaled_squares[256]; +static int debug_output = 0; +static int override_short = 0; +static int override_long = 0; + +/* Supported modulation types */ +#define OOK_PWM_D 1 /* Pulses are of the same length, the distance varies */ +#define OOK_PWM_P 2 /* The length of the pulses varies */ + + +typedef struct { + unsigned int id; + char name[256]; + unsigned int modulation; + unsigned int short_limit; + unsigned int long_limit; + unsigned int reset_limit; + int (*json_callback)(uint8_t bits_buffer[BITBUF_ROWS][BITBUF_COLS]) ; +} r_device; + +static int debug_callback(uint8_t bb[BITBUF_ROWS][BITBUF_COLS]) { + int i,j,k; + fprintf(stderr, "\n"); + for (i=0 ; i=0 ; k--) { + if (bb[i][j] & 1<>1; + payload[1] = bb[0][2]>>1 | ((bb[0][1]&1) << 7 ); + payload[2] = bb[0][3]>>1 | ((bb[0][2]&1) << 7 ); + payload[3] = bb[0][4]>>1 | ((bb[0][3]&1) << 7 ); + + received_crc8 = (bb[0][5]>>1) | ((bb[0][4]&1) << 7 ); + + payload_crc8 = crc8(payload,4); + + if (payload_crc8 != received_crc8) return 0; + + wh2_id = (payload[0] << 4) + (payload[1] >> 4); + wh2_temp = ((payload[1] & 0x7) << 8) + payload[2]; + if (payload[1] & 0x8) { + wh2_temp = -wh2_temp; + } + wh2_temp = wh2_temp/10; + + wh2_humidity = payload[3]; + + fprintf(stdout, "SENSOR:TYPE=WH2,ID=%X,HUMIDITY=%g,TEMPERATURE=%g\n",wh2_id,wh2_humidity,wh2_temp); + + return 1; +} + +static int silvercrest_callback(uint8_t bb[BITBUF_ROWS][BITBUF_COLS]) { + /* FIXME validate the received message better */ + if (bb[1][0] == 0xF8 && + bb[2][0] == 0xF8 && + bb[3][0] == 0xF8 && + bb[4][0] == 0xF8 && + bb[1][1] == 0x4d && + bb[2][1] == 0x4d && + bb[3][1] == 0x4d && + bb[4][1] == 0x4d) { + /* Pretty sure this is a Silvercrest remote */ + fprintf(stdout, "BUTTON:TYPE=SILVERCREST,CODE=%02x-%02x-%02x-%02x-%02x\n",bb[1][0],bb[0][1],bb[0][2],bb[0][3],bb[0][4]); + + if (debug_output) + debug_callback(bb); + + return 1; + } + return 0; +} + +static int rubicson_callback(uint8_t bb[BITBUF_ROWS][BITBUF_COLS]) { + int temperature_before_dec; + int temperature_after_dec; + int16_t temp; + float ftemp; + + /* FIXME validate the received message better, figure out crc */ + if (bb[1][0] == bb[2][0] && bb[2][0] == bb[3][0] && bb[3][0] == bb[4][0] && + bb[4][0] == bb[5][0] && bb[5][0] == bb[6][0] && bb[6][0] == bb[7][0] && bb[7][0] == bb[8][0] && + bb[8][0] == bb[9][0] && (bb[5][0] != 0 && bb[5][1] != 0 && bb[5][2] != 0)) { + + /* Nible 3,4,5 contains 12 bits of temperature + * The temperature is signed and scaled by 10 */ + temp = (int16_t)((uint16_t)(bb[0][1] << 12) | (bb[0][2] << 4)); + temp = temp >> 4; + ftemp = (float)temp/10; + + fprintf(stdout, "SENSOR:TYPE=RUBICSON,ID=%X,TEMPERATURE=%f\n",bb[0][0],ftemp); + + if (debug_output) + debug_callback(bb); + + return 1; + } + return 0; +} + +static int prologue_callback(uint8_t bb[BITBUF_ROWS][BITBUF_COLS]) { + int rid; + + int16_t temp2; + float ftemp; + + /* FIXME validate the received message better */ + if (((bb[1][0]&0xF0) == 0x90 && (bb[2][0]&0xF0) == 0x90 && (bb[3][0]&0xF0) == 0x90 && (bb[4][0]&0xF0) == 0x90 && + (bb[5][0]&0xF0) == 0x90 && (bb[6][0]&0xF0) == 0x90) || + ((bb[1][0]&0xF0) == 0x50 && (bb[2][0]&0xF0) == 0x50 && (bb[3][0]&0xF0) == 0x50 && (bb[4][0]&0xF0) == 0x50)) { + + /* Prologue sensor */ + temp2 = (int16_t)((uint16_t)(bb[1][2] << 8) | (bb[1][3]&0xF0)); + temp2 = temp2 >> 4; + ftemp = (float)temp2/10; + rid = ((bb[1][0]&0x0F)<<4)|(bb[1][1]&0xF0)>>4; + fprintf(stdout, + "SENSOR:TYPE=PROLOGUE,BUTTON=%d,BATTERY=%s,TEMPERATURE=%f,HUMIDITY=%d,CHANNEL=%d,ID=%d,RID=%02x\n", + bb[1][1]&0x04?1:0, + bb[1][1]&0x08?"Ok":"Low", + ftemp, + ((bb[1][3]&0x0F)<<4)|(bb[1][4]>>4), + (int)((bb[1][1]&0x03)+1), + (int)((bb[1][0]&0xF0)>>4), + rid); + + if (debug_output) + debug_callback(bb); + + return 1; + } + return 0; +} + +static int waveman_callback(uint8_t bb[BITBUF_ROWS][BITBUF_COLS]) { + /* Two bits map to 2 states, 0 1 -> 0 and 1 1 -> 1 */ + int i; + uint8_t nb[3] = {0}; + + if (((bb[0][0]&0x55)==0x55) && ((bb[0][1]&0x55)==0x55) && ((bb[0][2]&0x55)==0x55) && ((bb[0][3]&0x55)==0x00)) { + for (i=0 ; i<3 ; i++) { + nb[i] |= ((bb[0][i]&0xC0)==0xC0) ? 0x00 : 0x01; + nb[i] |= ((bb[0][i]&0x30)==0x30) ? 0x00 : 0x02; + nb[i] |= ((bb[0][i]&0x0C)==0x0C) ? 0x00 : 0x04; + nb[i] |= ((bb[0][i]&0x03)==0x03) ? 0x00 : 0x08; + } + + fprintf(stdout, + "BUTTON:TYPE=WAVEMAN,ID=%c,CHANNEL=%d,BUTTON=%d,STATE=%s\n", + 'A'+nb[0], + (int)((nb[1]>>2)+1), + (int)((nb[1]&3)+1), + ((nb[2]==0xe) ? "on" : "off")); + + if (debug_output) + debug_callback(bb); + + return 1; + } + return 0; +} + +static int steffen_callback(uint8_t bb[BITBUF_ROWS][BITBUF_COLS]) { + + if (bb[0][0]==0x00 && ((bb[1][0]&0x07)==0x07) && bb[1][0]==bb[2][0] && bb[2][0]==bb[3][0]) { + + fprintf(stdout, "BUTTON:TYPE=STEFFAN,CODE=%d%d%d%d%d,",(bb[1][0]&0x80)>>7, (bb[1][0]&0x40)>>6, (bb[1][0]&0x20)>>5, (bb[1][0]&0x10)>>4, (bb[1][0]&0x08)>>3); + + if ((bb[1][2]&0x0f)==0x0e) + fprintf(stdout, "BUTTON=A,"); + else if ((bb[1][2]&0x0f)==0x0d) + fprintf(stdout, "BUTTON=B,"); + else if ((bb[1][2]&0x0f)==0x0b) + fprintf(stdout, "BUTTON=C,"); + else if ((bb[1][2]&0x0f)==0x07) + fprintf(stdout, "BUTTON=D,"); + else if ((bb[1][2]&0x0f)==0x0f) + fprintf(stdout, "BUTTON=ALL,"); + else + fprintf(stdout, "BUTTON=UNKNOWN,"); + + if ((bb[1][2]&0xf0)==0xf0) { + fprintf(stdout, "STATE=OFF\n"); + } else { + fprintf(stdout, "STATE=ON\n"); + } + + if (debug_output) + debug_callback(bb); + + return 1; + } + return 0; +} + + +uint16_t AD_POP(uint8_t bb[BITBUF_COLS], uint8_t bits, uint8_t bit) { + uint16_t val = 0; + uint8_t i, byte_no, bit_no; + for (i=0;i=1&&dec[0]<=3?types[dec[0]-1]:"?",dec[1],dec[2],dec[3]|dec[4]<<8,dec[5]|dec[6]<<8,dec[7]|dec[8]<<8); + + return 1; +} + +static int ws2000_callback(uint8_t bb[BITBUF_ROWS][BITBUF_COLS]) { + // based on http://www.dc3yc.privat.t-online.de/protocol.htm + uint8_t dec[13]; + uint8_t nibbles=0; + uint8_t bit=11; // preamble + char* types[]={"!AS3", "AS2000/ASH2000/S2000/S2001A/S2001IA/ASH2200/S300IA", "!S2000R", "!S2000W", "S2001I/S2001ID", "!S2500H", "!Pyrano", "!KS200/KS300"}; + uint8_t check_calculated=0, sum_calculated=0; + uint8_t i; + uint8_t stopbit; + uint8_t sum_received; + + dec[0] = AD_POP (bb[0], 4, bit); bit+=4; + stopbit= AD_POP (bb[0], 1, bit); bit+=1; + if (!stopbit) { +//fprintf(stderr, "!stopbit\n"); + return 0; + } + check_calculated ^= dec[0]; + sum_calculated += dec[0]; + + // read nibbles with stopbit ... + for (i = 1; i <= (dec[0]==4?12:8); i++) { + dec[i] = AD_POP (bb[0], 4, bit); bit+=4; + stopbit= AD_POP (bb[0], 1, bit); bit+=1; + if (!stopbit) { +//fprintf(stderr, "!stopbit %i\n", i); + return 0; + } + check_calculated ^= dec[i]; + sum_calculated += dec[i]; + nibbles++; + } + + if (check_calculated) { +//fprintf(stderr, "check_calculated (%d) != 0\n", check_calculated); + return 0; + } + + // Read sum + sum_received = AD_POP (bb[0], 4, bit); bit+=4; + sum_calculated+=5; + sum_calculated&=0xF; + if (sum_received != sum_calculated) { +//fprintf(stderr, "sum_received (%d) != sum_calculated (%d) ", sum_received, sum_calculated); + return 0; + } + +//for (i = 0; i < nibbles; i++) fprintf(stderr, "%02X ", dec[i]); fprintf(stderr, "\n"); + + fprintf(stdout, "SENSOR:TYPE=ELV-WS-2000,MODEL=%s,CODE=%d,TEMPERATURE=%s%d.%d,HUMIDITY=%d.%d",dec[0]<=7?types[dec[0]]:"?",dec[1]&7,dec[1]&8?"-":"",dec[4]*10+dec[3],dec[2],dec[7]*10+dec[6], dec[5]); + if(dec[0]==4) { + fprintf(stdout, "PRESSURE=%d\n", 200+dec[10]*100+dec[9]*10+dec[8]); + } else { + fprintf(stdout, "\n"); + } + + return 1; +} + +// ** Acurite 5n1 functions ** + +const float acurite_winddirections[] = + { 337.5, 315.0, 292.5, 270.0, 247.5, 225.0, 202.5, 180, + 157.5, 135.0, 112.5, 90.0, 67.5, 45.0, 22.5, 0.0 }; + +static int acurite_raincounter = 0; + +static int acurite_crc(uint8_t row[BITBUF_COLS], int cols) { + // sum of first n-1 bytes modulo 256 should equal nth byte + int i; + int sum = 0; + for ( i=0; i < cols; i++) + sum += row[i]; + if ( sum % 256 == row[cols] ) + return 1; + else + return 0; +} + +static int acurite_detect(uint8_t *pRow) { + int i; + if ( pRow[0] != 0x00 ) { + // invert bits due to wierd issue + for (i = 0; i < 8; i++) + pRow[i] = ~pRow[i] & 0xFF; + pRow[0] |= pRow[8]; // fix first byte that has mashed leading bit + + if (acurite_crc(pRow, 7)) + return 1; // passes crc check + } + return 0; +} + +static float acurite_getTemp (uint8_t highbyte, uint8_t lowbyte) { + // range -40 to 158 F + int highbits = (highbyte & 0x0F) << 7 ; + int lowbits = lowbyte & 0x7F; + int rawtemp = highbits | lowbits; + float temp = (rawtemp - 400) / 10.0; + return temp; +} + +static int acurite_getWindSpeed (uint8_t highbyte, uint8_t lowbyte) { + // range: 0 to 159 kph + int highbits = ( highbyte & 0x1F) << 3; + int lowbits = ( lowbyte & 0x70 ) >> 4; + int speed = highbits | lowbits; + return speed; +} + +static float acurite_getWindDirection (uint8_t byte) { + // 16 compass points, ccw from (NNW) to 15 (N) + int direction = byte & 0x0F; + return acurite_winddirections[direction]; +} + +static int acurite_getHumidity (uint8_t byte) { + // range: 1 to 99 %RH + int humidity = byte & 0x7F; + return humidity; +} + +static int acurite_getRainfallCounter (uint8_t highbyte, uint8_t lowbyte) { + // range: 0 to 99.99 in, 0.01 in incr., rolling counter? + int highbits = (highbyte & 0x3F) << 7 ; + int lowbits = lowbyte & 0x7F; + int raincounter = highbits | lowbits; + return raincounter; +} + +static int acurite5n1_callback(uint8_t bb[BITBUF_ROWS][BITBUF_COLS]) { + // acurite 5n1 weather sensor decoding for rtl_433 + // Jens Jensen 2014 + int i; + uint8_t *buf = NULL; + // run through rows til we find one with good crc (brute force) + for (i=0; i < BITBUF_ROWS; i++) { + if (acurite_detect(bb[i])) { + buf = bb[i]; + break; // done + } + } + + if (buf) { + // decode packet here + fprintf(stdout, "SENSOR:TYPE=ACURITE"); + if (debug_output) { + for (i=0; i < 8; i++) + fprintf(stderr, "%02X ", buf[i]); + fprintf(stderr, "CRC OK\n"); + } + + if ((buf[2] & 0x0F) == 1) { + // wind speed, wind direction, rainfall + + float rainfall = 0.00; + int raincounter = 0; + if (acurite_raincounter > 0) { + // track rainfall difference after first run + raincounter = acurite_getRainfallCounter(buf[5], buf[6]); + rainfall = ( raincounter - acurite_raincounter ) * 0.01; + } else { + // capture starting counter + acurite_raincounter = raincounter; + } + + fprintf(stdout, ",WINDSPEED=%d", + acurite_getWindSpeed(buf[3], buf[4])); + fprintf(stdout, ",WINDDIRECTION=%0.1f", + acurite_getWindDirection(buf[4])); + fprintf(stdout, ",RAINGAUGE: %0.2f\n", rainfall); + + } else if ((buf[2] & 0x0F) == 8) { + // wind speed, temp, RH + fprintf(stdout, ",WINDSPEED=%d", + acurite_getWindSpeed(buf[3], buf[4])); + fprintf(stdout, ",TEMPERATURE=%2.1f", + acurite_getTemp(buf[4], buf[5])); + fprintf(stdout, ",HUMIDITY=%d\n", + acurite_getHumidity(buf[6])); + } + } + //if (debug_output) + // debug_callback(bb); + return 1; +} + + +// timings based on samp_rate=1024000 +r_device rubicson = { + /* .id = */ 1, + /* .name = */ "Rubicson Temperature Sensor", + /* .modulation = */ OOK_PWM_D, + /* .short_limit = */ 1744/4, + /* .long_limit = */ 3500/4, + /* .reset_limit = */ 5000/4, + /* .json_callback = */ &rubicson_callback, +}; + +r_device prologue = { + /* .id = */ 2, + /* .name = */ "Prologue Temperature Sensor", + /* .modulation = */ OOK_PWM_D, + /* .short_limit = */ 3500/4, + /* .long_limit = */ 7000/4, + /* .reset_limit = */ 15000/4, + /* .json_callback = */ &prologue_callback, +}; + +r_device silvercrest = { + /* .id = */ 3, + /* .name = */ "Silvercrest Remote Control", + /* .modulation = */ OOK_PWM_P, + /* .short_limit = */ 600/4, + /* .long_limit = */ 5000/4, + /* .reset_limit = */ 15000/4, + /* .json_callback = */ &silvercrest_callback, +}; + +r_device tech_line_fws_500 = { + /* .id = */ 4, + /* .name = */ "Tech Line FWS-500 Sensor", + /* .modulation = */ OOK_PWM_D, + /* .short_limit = */ 3500/4, + /* .long_limit = */ 7000/4, + /* .reset_limit = */ 15000/4, + // /* .json_callback = */ &rubicson_callback, +}; + +r_device generic_hx2262 = { + /* .id = */ 5, + /* .name = */ "Window/Door sensor", + /* .modulation = */ OOK_PWM_P, + /* .short_limit = */ 1300/4, + /* .long_limit = */ 10000/4, + /* .reset_limit = */ 40000/4, + // /* .json_callback = */ &silvercrest_callback, +}; + +r_device technoline_ws9118 = { + /* .id = */ 6, + /* .name = */ "Technoline WS9118", + /* .modulation = */ OOK_PWM_D, + /* .short_limit = */ 1800/4, + /* .long_limit = */ 3500/4, + /* .reset_limit = */ 15000/4, + /* .json_callback = */ &debug_callback, +}; + + +r_device elv_em1000 = { + /* .id = */ 7, + /* .name = */ "ELV EM 1000", + /* .modulation = */ OOK_PWM_D, + /* .short_limit = */ 750/4, + /* .long_limit = */ 7250/4, + /* .reset_limit = */ 30000/4, + /* .json_callback = */ &em1000_callback, +}; + +r_device elv_ws2000 = { + /* .id = */ 8, + /* .name = */ "ELV WS 2000", + /* .modulation = */ OOK_PWM_D, + /* .short_limit = */ (602+(1155-602)/2)/4, + /* .long_limit = */ ((1755635-1655517)/2)/4, // no repetitions + /* .reset_limit = */ ((1755635-1655517)*2)/4, + /* .json_callback = */ &ws2000_callback, +}; + +r_device waveman = { + /* .id = */ 6, + /* .name = */ "Waveman Switch Transmitter", + /* .modulation = */ OOK_PWM_P, + /* .short_limit = */ 1000/4, + /* .long_limit = */ 8000/4, + /* .reset_limit = */ 30000/4, + /* .json_callback = */ &waveman_callback, +}; + +r_device steffen = { + /* .id = */ 9, + /* .name = */ "Steffen Switch Transmitter", + /* .modulation = */ OOK_PWM_D, + /* .short_limit = */ 140, + /* .long_limit = */ 270, + /* .reset_limit = */ 1500, + /* .json_callback = */ &steffen_callback, +}; + +r_device acurite5n1 = { + /* .id = */ 10, + /* .name = */ "Acurite 5n1 Weather Station", + /* .modulation = */ OOK_PWM_P, + /* .short_limit = */ 75, + /* .long_limit = */ 220, + /* .reset_limit = */ 20000, + /* .json_callback = */ &acurite5n1_callback, +}; + +r_device wh2 = { + /* .id = */ 11, + /* .name = */ "WH2 Weather Station", + /* .modulation = */ OOK_PWM_P, + /* .short_limit = */ 150, + /* .long_limit = */ 400, + /* .reset_limit = */ 20000, + /* .json_callback = */ &wh2_callback, +}; + +struct protocol_state { + int (*callback)(uint8_t bits_buffer[BITBUF_ROWS][BITBUF_COLS]); + + /* bits state */ + int bits_col_idx; + int bits_row_idx; + int bits_bit_col_idx; + uint8_t bits_buffer[BITBUF_ROWS][BITBUF_COLS]; + int16_t bits_per_row[BITBUF_ROWS]; + int bit_rows; + unsigned int modulation; + + /* demod state */ + int pulse_length; + int pulse_count; + int pulse_distance; + int sample_counter; + int start_c; + + int packet_present; + int pulse_start; + int real_bits; + int start_bit; + /* pwm limits */ + int short_limit; + int long_limit; + int reset_limit; + + +}; + + +struct dm_state { + FILE *file; + int save_data; + int32_t level_limit; + int32_t decimation_level; + int16_t filter_buffer[MAXIMAL_BUF_LENGTH+FILTER_ORDER]; + int16_t* f_buf; + int analyze; + int debug_mode; + + /* Signal grabber variables */ + int signal_grabber; + int8_t* sg_buf; + int sg_index; + int sg_len; + + + /* Protocol states */ + int r_dev_num; + struct protocol_state *r_devs[MAX_PROTOCOLS]; + +}; + +void usage(void) +{ + fprintf(stderr, + "rtl_433, an ISM band generic data receiver for RTL2832 based DVB-T receivers\n\n" + "Usage:\t[-d device_index (default: 0)]\n" + "\t[-g gain (default: 0 for auto)]\n" + "\t[-a analyze mode, print a textual description of the signal]\n" + "\t[-t signal auto save, use it together with analyze mode (-a -t)\n" + "\t[-l change the detection level used to determine pulses (0-3200) default: %i]\n" + "\t[-f [-f...] receive frequency[s], default: %i Hz]\n" + "\t[-s samplerate (default: %i Hz)]\n" + "\t[-S force sync output (default: async)]\n" + "\t[-r read data from file instead of from a receiver]\n" + "\t[-p ppm_error (default: 0)]\n" + "\t[-r test file name (indata)]\n" + "\t[-m test file mode (0 rtl_sdr data, 1 rtl_433 data)]\n" + "\t[-D print debug info on event\n" + "\t[-z override short value\n" + "\t[-x override long value\n" + "\tfilename (a '-' dumps samples to stdout)\n\n", DEFAULT_LEVEL_LIMIT, DEFAULT_FREQUENCY, DEFAULT_SAMPLE_RATE); + exit(1); +} + +#ifdef _WIN32 +BOOL WINAPI +sighandler(int signum) +{ + if (CTRL_C_EVENT == signum) { + fprintf(stderr, "Signal caught, exiting!\n"); + do_exit = 1; + rtlsdr_cancel_async(dev); + return TRUE; + } + return FALSE; +} +#else +static void sighandler(int signum) +{ + fprintf(stderr, "Signal caught, exiting!\n"); + do_exit = 1; + rtlsdr_cancel_async(dev); +} +#endif + +/* precalculate lookup table for envelope detection */ +static void calc_squares() { + int i; + for (i=0 ; i<256 ; i++) + scaled_squares[i] = (128-i) * (128-i); +} + +/** This will give a noisy envelope of OOK/ASK signals + * Subtract the bias (-128) and get an envelope estimation + * The output will be written in the input buffer + * @returns pointer to the input buffer + */ + +static void envelope_detect(unsigned char *buf, uint32_t len, int decimate) +{ + uint16_t* sample_buffer = (uint16_t*) buf; + unsigned int i; + unsigned op = 0; + unsigned int stride = 1<bits_buffer, 0 ,BITBUF_ROWS*BITBUF_COLS); + memset(p->bits_per_row, 0 ,BITBUF_ROWS); + p->bits_col_idx = 0; + p->bits_bit_col_idx = 7; + p->bits_row_idx = 0; + p->bit_rows = 0; +} + +static void demod_add_bit(struct protocol_state* p, int bit) { + p->bits_buffer[p->bits_row_idx][p->bits_col_idx] |= bit<bits_bit_col_idx; + p->bits_bit_col_idx--; + if (p->bits_bit_col_idx<0) { + p->bits_bit_col_idx = 7; + p->bits_col_idx++; + if (p->bits_col_idx>BITBUF_COLS-1) { + p->bits_col_idx = BITBUF_COLS-1; +// fprintf(stderr, "p->bits_col_idx>%i!\n", BITBUF_COLS-1); + } + } + p->bits_per_row[p->bit_rows]++; +} + +static void demod_next_bits_packet(struct protocol_state* p) { + p->bits_col_idx = 0; + p->bits_row_idx++; + p->bits_bit_col_idx = 7; + if (p->bits_row_idx>BITBUF_ROWS-1) { + p->bits_row_idx = BITBUF_ROWS-1; + //fprintf(stderr, "p->bits_row_idx>%i!\n", BITBUF_ROWS-1); + } + p->bit_rows++; + if (p->bit_rows > BITBUF_ROWS-1) + p->bit_rows -=1; +} + +static void demod_print_bits_packet(struct protocol_state* p) { + int i,j,k; + + fprintf(stderr, "\n"); + for (i=0 ; ibit_rows+1 ; i++) { + fprintf(stderr, "[%02d] {%d} ",i, p->bits_per_row[i]); + for (j=0 ; j<((p->bits_per_row[i]+8)/8) ; j++) { + fprintf(stderr, "%02x ", p->bits_buffer[i][j]); + } + fprintf(stderr, ": "); + for (j=0 ; j<((p->bits_per_row[i]+8)/8) ; j++) { + for (k=7 ; k>=0 ; k--) { + if (p->bits_buffer[i][j] & 1<bits_buffer[i][j]); + fprintf(stderr, " "); + } + fprintf(stderr, "\n"); + } + fprintf(stderr, "\n"); + return; +} + +static void register_protocol(struct dm_state *demod, r_device *t_dev) { + struct protocol_state *p = calloc(1,sizeof(struct protocol_state)); + p->short_limit = (float)t_dev->short_limit/((float)DEFAULT_SAMPLE_RATE/(float)samp_rate); + p->long_limit = (float)t_dev->long_limit /((float)DEFAULT_SAMPLE_RATE/(float)samp_rate); + p->reset_limit = (float)t_dev->reset_limit/((float)DEFAULT_SAMPLE_RATE/(float)samp_rate); + p->modulation = t_dev->modulation; + p->callback = t_dev->json_callback; + demod_reset_bits_packet(p); + + demod->r_devs[demod->r_dev_num] = p; + demod->r_dev_num++; + + fprintf(stderr, "Registering protocol[%02d] %s\n",demod->r_dev_num, t_dev->name); + + if (demod->r_dev_num > MAX_PROTOCOLS) + fprintf(stderr, "Max number of protocols reached %d\n",MAX_PROTOCOLS); +} + + +static unsigned int counter = 0; +static unsigned int print = 1; +static unsigned int print2 = 0; +static unsigned int pulses_found = 0; +static unsigned int prev_pulse_start = 0; +static unsigned int pulse_start = 0; +static unsigned int pulse_end = 0; +static unsigned int pulse_avg = 0; +static unsigned int signal_start = 0; +static unsigned int signal_end = 0; +static unsigned int signal_pulse_data[4000][3] = {{0}}; +static unsigned int signal_pulse_counter = 0; + + +static void classify_signal() { + unsigned int i,k, max=0, min=1000000, t; + unsigned int delta, count_min, count_max, min_new, max_new, p_limit; + unsigned int a[3], b[2], a_cnt[3], a_new[3], b_new[2]; + unsigned int signal_distance_data[4000] = {0}; + struct protocol_state p = {0}; + unsigned int signal_type; + + if (!signal_pulse_data[0][0]) + return; + + for (i=0 ; i<1000 ; i++) { + if (signal_pulse_data[i][0] > 0) { + //fprintf(stderr, "[%03d] s: %d\t e:\t %d\t l:%d\n", + //i, signal_pulse_data[i][0], signal_pulse_data[i][1], + //signal_pulse_data[i][2]); + if (signal_pulse_data[i][2] > max) + max = signal_pulse_data[i][2]; + if (signal_pulse_data[i][2] <= min) + min = signal_pulse_data[i][2]; + } + } + t=(max+min)/2; + //fprintf(stderr, "\n\nMax: %d, Min: %d t:%d\n", max, min, t); + + delta = (max - min)*(max-min); + + //TODO use Lloyd-Max quantizer instead + k=1; + while((k < 10) && (delta > 0)) { + min_new = 0; count_min = 0; + max_new = 0; count_max = 0; + + for (i=0 ; i < 1000 ; i++) { + if (signal_pulse_data[i][0] > 0) { + if (signal_pulse_data[i][2] < t) { + min_new = min_new + signal_pulse_data[i][2]; + count_min++; + } + else { + max_new = max_new + signal_pulse_data[i][2]; + count_max++; + } + } + } + min_new = min_new / count_min; + max_new = max_new / count_max; + + delta = (min - min_new)*(min - min_new) + (max - max_new)*(max - max_new); + min = min_new; + max = max_new; + t = (min + max)/2; + + fprintf(stderr, "Iteration %d. t: %d min: %d (%d) max: %d (%d) delta %d\n", k,t, min, count_min, max, count_max, delta); + k++; + } + + for (i=0 ; i<1000 ; i++) { + if (signal_pulse_data[i][0] > 0) { + //fprintf(stderr, "%d\n", signal_pulse_data[i][1]); + } + } + /* 50% decision limit */ + if (max/min > 1) { + fprintf(stderr, "Pulse coding: Short pulse length %d - Long pulse length %d\n", min, max); + signal_type = 2; + } else { + fprintf(stderr, "Distance coding: Pulse length %d\n", (min+max)/2); + signal_type = 1; + } + p_limit = (max+min)/2; + + /* Initial guesses */ + a[0] = 1000000; + a[2] = 0; + for (i=1 ; i<1000 ; i++) { + if (signal_pulse_data[i][0] > 0) { +// fprintf(stderr, "[%03d] s: %d\t e:\t %d\t l:%d\t d:%d\n", +// i, signal_pulse_data[i][0], signal_pulse_data[i][1], +// signal_pulse_data[i][2], signal_pulse_data[i][0]-signal_pulse_data[i-1][1]); + signal_distance_data[i-1] = signal_pulse_data[i][0]-signal_pulse_data[i-1][1]; + if (signal_distance_data[i-1] > a[2]) + a[2] = signal_distance_data[i-1]; + if (signal_distance_data[i-1] <= a[0]) + a[0] = signal_distance_data[i-1]; + } + } + min = a[0]; + max = a[2]; + a[1] = (a[0]+a[2])/2; +// for (i=0 ; i<1 ; i++) { +// b[i] = (a[i]+a[i+1])/2; +// } + b[0] = (a[0]+a[1])/2; + b[1] = (a[1]+a[2])/2; +// fprintf(stderr, "a[0]: %d\t a[1]: %d\t a[2]: %d\t\n",a[0],a[1],a[2]); +// fprintf(stderr, "b[0]: %d\t b[1]: %d\n",b[0],b[1]); + + k=1; + delta = 10000000; + while((k < 10) && (delta > 0)) { + for (i=0 ; i<3 ; i++) { + a_new[i] = 0; + a_cnt[i] = 0; + } + + for (i=0 ; i < 1000 ; i++) { + if (signal_distance_data[i] > 0) { + if (signal_distance_data[i] < b[0]) { + a_new[0] += signal_distance_data[i]; + a_cnt[0]++; + } else if (signal_distance_data[i] < b[1] && signal_distance_data[i] >= b[0]){ + a_new[1] += signal_distance_data[i]; + a_cnt[1]++; + } else if (signal_distance_data[i] >= b[1]) { + a_new[2] += signal_distance_data[i]; + a_cnt[2]++; + } + } + } + +// fprintf(stderr, "Iteration %d.", k); + delta = 0; + for (i=0 ; i<3 ; i++) { + if (a_cnt[i]) + a_new[i] /= a_cnt[i]; + delta += (a[i]-a_new[i])*(a[i]-a_new[i]); +// fprintf(stderr, "\ta[%d]: %d (%d)", i, a_new[i], a[i]); + a[i] = a_new[i]; + } +// fprintf(stderr, " delta %d\n", delta); + + if (a[0] < min) { + a[0] = min; +// fprintf(stderr, "Fixing a[0] = %d\n", min); + } + if (a[2] > max) { + a[0] = max; +// fprintf(stderr, "Fixing a[2] = %d\n", max); + } +// if (a[1] == 0) { +// a[1] = (a[2]+a[0])/2; +// fprintf(stderr, "Fixing a[1] = %d\n", a[1]); +// } + +// fprintf(stderr, "Iteration %d.", k); + for (i=0 ; i<2 ; i++) { +// fprintf(stderr, "\tb[%d]: (%d) ", i, b[i]); + b[i] = (a[i]+a[i+1])/2; +// fprintf(stderr, "%d ", b[i]); + } +// fprintf(stderr, "\n"); + k++; + } + + if (override_short) { + p_limit = override_short; + a[0] = override_short; + } + + if (override_long) { + a[1] = override_long; + } + + if (a[1] 0) { + if (signal_distance_data[i] < (a[0]+a[1])/2) { +// fprintf(stderr, "0 [%d] %d < %d\n",i, signal_distance_data[i], (a[0]+a[1])/2); + demod_add_bit(&p, 0); + } else if ((signal_distance_data[i] > (a[0]+a[1])/2) && (signal_distance_data[i] < (a[1]+a[2])/2)) { +// fprintf(stderr, "0 [%d] %d > %d\n",i, signal_distance_data[i], (a[0]+a[1])/2); + demod_add_bit(&p, 1); + } else if (signal_distance_data[i] > (a[1]+a[2])/2) { +// fprintf(stderr, "0 [%d] %d > %d\n",i, signal_distance_data[i], (a[1]+a[2])/2); + demod_next_bits_packet(&p); + } + + } + + } + demod_print_bits_packet(&p); + } + if (signal_type == 2) { + for(i=0 ; i<1000 ; i++){ + if(signal_pulse_data[i][2] > 0) { + if (signal_pulse_data[i][2] < p_limit) { +// fprintf(stderr, "0 [%d] %d < %d\n",i, signal_pulse_data[i][2], p_limit); + demod_add_bit(&p, 0); + } else { +// fprintf(stderr, "1 [%d] %d > %d\n",i, signal_pulse_data[i][2], p_limit); + demod_add_bit(&p, 1); + } + if ((signal_distance_data[i] >= (a[1]+a[2])/2)) { +// fprintf(stderr, "\\n [%d] %d > %d\n",i, signal_distance_data[i], (a[1]+a[2])/2); + demod_next_bits_packet(&p); + } + + + } + } + demod_print_bits_packet(&p); + } + + for (i=0 ; i<1000 ; i++) { + signal_pulse_data[i][0] = 0; + signal_pulse_data[i][1] = 0; + signal_pulse_data[i][2] = 0; + signal_distance_data[i] = 0; + } + +}; + + +static void pwm_analyze(struct dm_state *demod, int16_t *buf, uint32_t len) +{ + unsigned int i; + + for (i=0 ; i demod->level_limit) { + if (!signal_start) + signal_start = counter; + if (print) { + pulses_found++; + pulse_start = counter; + signal_pulse_data[signal_pulse_counter][0] = counter; + signal_pulse_data[signal_pulse_counter][1] = -1; + signal_pulse_data[signal_pulse_counter][2] = -1; + if (debug_output) fprintf(stderr, "pulse_distance %d\n",counter-pulse_end); + if (debug_output) fprintf(stderr, "pulse_start distance %d\n",pulse_start-prev_pulse_start); + if (debug_output) fprintf(stderr, "pulse_start[%d] found at sample %d, value = %d\n",pulses_found, counter, buf[i]); + prev_pulse_start = pulse_start; + print =0; + print2 = 1; + } + } + counter++; + if (buf[i] < demod->level_limit) { + if (print2) { + pulse_avg += counter-pulse_start; + if (debug_output) fprintf(stderr, "pulse_end [%d] found at sample %d, pulse length = %d, pulse avg length = %d\n", + pulses_found, counter, counter-pulse_start, pulse_avg/pulses_found); + pulse_end = counter; + print2 = 0; + signal_pulse_data[signal_pulse_counter][1] = counter; + signal_pulse_data[signal_pulse_counter][2] = counter-pulse_start; + signal_pulse_counter++; + if (signal_pulse_counter >= 4000) { + signal_pulse_counter = 0; + goto err; + } + } + print = 1; + if (signal_start && (pulse_end + 50000 < counter)) { + signal_end = counter - 40000; + fprintf(stderr, "*** signal_start = %d, signal_end = %d\n",signal_start-10000, signal_end); + fprintf(stderr, "signal_len = %d, pulses = %d\n", signal_end-(signal_start-10000), pulses_found); + pulses_found = 0; + classify_signal(); + + signal_pulse_counter = 0; + if (demod->sg_buf) { + int start_pos, signal_bszie, wlen, wrest=0, sg_idx, idx; + char sgf_name[256] = {0}; + FILE *sgfp; + + sprintf(sgf_name, "gfile%03d.data",demod->signal_grabber); + demod->signal_grabber++; + signal_bszie = 2*(signal_end-(signal_start-10000)); + signal_bszie = (131072-(signal_bszie%131072)) + signal_bszie; + sg_idx = demod->sg_index-demod->sg_len; + if (sg_idx < 0) + sg_idx = SIGNAL_GRABBER_BUFFER-demod->sg_len; + idx = (i-40000)*2; + start_pos = sg_idx+idx-signal_bszie; + fprintf(stderr, "signal_bszie = %d - sg_index = %d\n", signal_bszie, demod->sg_index); + fprintf(stderr, "start_pos = %d - buffer_size = %d\n", start_pos, SIGNAL_GRABBER_BUFFER); + if (signal_bszie > SIGNAL_GRABBER_BUFFER) + fprintf(stderr, "Signal bigger then buffer, signal = %d > buffer %d !!\n", signal_bszie, SIGNAL_GRABBER_BUFFER); + + if (start_pos < 0) { + start_pos = SIGNAL_GRABBER_BUFFER+start_pos; + fprintf(stderr, "restart_pos = %d\n", start_pos); + } + + fprintf(stderr, "*** Saving signal to file %s\n",sgf_name); + sgfp = fopen(sgf_name, "wb"); + if (!sgfp) { + fprintf(stderr, "Failed to open %s\n", sgf_name); + } + wlen = signal_bszie; + if (start_pos + signal_bszie > SIGNAL_GRABBER_BUFFER) { + wlen = SIGNAL_GRABBER_BUFFER - start_pos; + wrest = signal_bszie - wlen; + } + fprintf(stderr, "*** Writing data from %d, len %d\n",start_pos, wlen); + fwrite(&demod->sg_buf[start_pos], 1, wlen, sgfp); + + if (wrest) { + fprintf(stderr, "*** Writing data from %d, len %d\n",0, wrest); + fwrite(&demod->sg_buf[0], 1, wrest, sgfp); + } + + fclose(sgfp); + } + signal_start = 0; + } + } + + + } + return; + +err: + fprintf(stderr, "To many pulses detected, probably bad input data or input parameters\n"); + return; +} + +/* The distance between pulses decodes into bits */ + +static void pwm_d_decode(struct dm_state *demod, struct protocol_state* p, int16_t *buf, uint32_t len) { + unsigned int i; + + for (i=0 ; i demod->level_limit) { + p->pulse_count = 1; + p->start_c = 1; + } + if (p->pulse_count && (buf[i] < demod->level_limit)) { + p->pulse_length = 0; + p->pulse_distance = 1; + p->sample_counter = 0; + p->pulse_count = 0; + } + if (p->start_c) p->sample_counter++; + if (p->pulse_distance && (buf[i] > demod->level_limit)) { + if (p->sample_counter < p->short_limit) { + demod_add_bit(p, 0); + } else if (p->sample_counter < p->long_limit) { + demod_add_bit(p, 1); + } else { + demod_next_bits_packet(p); + p->pulse_count = 0; + p->sample_counter = 0; + } + p->pulse_distance = 0; + } + if (p->sample_counter > p->reset_limit) { + p->start_c = 0; + p->sample_counter = 0; + p->pulse_distance = 0; + if (p->callback) + events+=p->callback(p->bits_buffer); + else + demod_print_bits_packet(p); + + demod_reset_bits_packet(p); + } + } +} + +/* The length of pulses decodes into bits */ + +static void pwm_p_decode(struct dm_state *demod, struct protocol_state* p, int16_t *buf, uint32_t len) { + unsigned int i; + + for (i=0 ; i demod->level_limit && !p->start_bit) { + /* start bit detected */ + p->start_bit = 1; + p->start_c = 1; + p->sample_counter = 0; +// fprintf(stderr, "start bit pulse start detected\n"); + } + + if (!p->real_bits && p->start_bit && (buf[i] < demod->level_limit)) { + /* end of startbit */ + p->real_bits = 1; +// fprintf(stderr, "start bit pulse end detected\n"); + } + if (p->start_c) p->sample_counter++; + + + if (!p->pulse_start && p->real_bits && (buf[i] > demod->level_limit)) { + /* save the pulse start, it will never be zero */ + p->pulse_start = p->sample_counter; +// fprintf(stderr, "real bit pulse start detected\n"); + + } + + if (p->real_bits && p->pulse_start && (buf[i] < demod->level_limit)) { + /* end of pulse */ + + p->pulse_length = p->sample_counter-p->pulse_start; +// fprintf(stderr, "real bit pulse end detected %d\n", p->pulse_length); +// fprintf(stderr, "space duration %d\n", p->sample_counter); + + if (p->pulse_length <= p->short_limit) { + demod_add_bit(p, 1); + } else if (p->pulse_length > p->short_limit) { + demod_add_bit(p, 0); + } + p->sample_counter = 0; + p->pulse_start = 0; + } + + if (p->real_bits && p->pulse_length > p->long_limit) { + demod_next_bits_packet(p); + + p->start_bit = 0; + p->real_bits = 0; + } + + if (p->sample_counter > p->reset_limit) { + p->start_c = 0; + p->sample_counter = 0; + if (p->callback) + events+=p->callback(p->bits_buffer); + else + demod_print_bits_packet(p); + demod_reset_bits_packet(p); + + p->start_bit = 0; + p->real_bits = 0; + } + } +} + + + +/** Something that might look like a IIR lowpass filter + * + * [b,a] = butter(1, 0.01) -> quantizes nicely thus suitable for fixed point + * Q1.15*Q15.0 = Q16.15 + * Q16.15>>1 = Q15.14 + * Q15.14 + Q15.14 + Q15.14 could possibly overflow to 17.14 + * but the b coeffs are small so it wont happen + * Q15.14>>14 = Q15.0 \o/ + */ + +static uint16_t lp_xmem[FILTER_ORDER] = {0}; + +#define F_SCALE 15 +#define S_CONST (1<>1) + (b[0]*x_buf[0]>>1) + (b[1]*lp_xmem[0]>>1)) >> (F_SCALE-1); + for (i=1 ; i>1) + (b[0]*x_buf[i]>>1) + (b[1]*x_buf[i-1]>>1)) >> (F_SCALE-1); + } + + /* Save last sample */ + memcpy(lp_xmem, &x_buf[len-1-FILTER_ORDER], FILTER_ORDER*sizeof(int16_t)); + memcpy(&y_buf[-FILTER_ORDER], &y_buf[len-1-FILTER_ORDER], FILTER_ORDER*sizeof(int16_t)); + //fprintf(stderr, "%d\n", y_buf[0]); +} + + +static void rtlsdr_callback(unsigned char *buf, uint32_t len, void *ctx) +{ + struct dm_state *demod = ctx; + uint16_t* sbuf = (uint16_t*) buf; + int i; + if (demod->file || !demod->save_data) { + if (do_exit || do_exit_async) + return; + + if ((bytes_to_read > 0) && (bytes_to_read < len)) { + len = bytes_to_read; + do_exit = 1; + rtlsdr_cancel_async(dev); + } + + if (demod->signal_grabber) { + //fprintf(stderr, "[%d] sg_index - len %d\n", demod->sg_index, len ); + memcpy(&demod->sg_buf[demod->sg_index], buf, len); + demod->sg_len =len; + demod->sg_index +=len; + if (demod->sg_index+len > SIGNAL_GRABBER_BUFFER) + demod->sg_index = 0; + } + + + if (demod->debug_mode == 0) { + envelope_detect(buf, len, demod->decimation_level); + low_pass_filter(sbuf, demod->f_buf, len>>(demod->decimation_level+1)); + } else if (demod->debug_mode == 1){ + memcpy(demod->f_buf, buf, len); + } + if (demod->analyze) { + pwm_analyze(demod, demod->f_buf, len/2); + } + { + for (i=0 ; ir_dev_num ; i++) { + switch (demod->r_devs[i]->modulation) { + case OOK_PWM_D: + pwm_d_decode(demod, demod->r_devs[i], demod->f_buf, len/2); + break; + case OOK_PWM_P: + pwm_p_decode(demod, demod->r_devs[i], demod->f_buf, len/2); + break; + default: + fprintf(stderr, "Unknown modulation %d in protocol!\n", demod->r_devs[i]->modulation); + } + } + } + + if (demod->save_data) { + if (fwrite(demod->f_buf, 1, len>>demod->decimation_level, demod->file) != len>>demod->decimation_level) { + fprintf(stderr, "Short write, samples lost, exiting!\n"); + rtlsdr_cancel_async(dev); + } + } + + if (bytes_to_read > 0) + bytes_to_read -= len; + + if(frequencies>1) { + time_t rawtime; + time(&rawtime); + if(difftime(rawtime, rawtime_old)>DEFAULT_HOP_TIME || events>=DEFAULT_HOP_EVENTS) { + rawtime_old=rawtime; + events=0; + do_exit_async=1; + rtlsdr_cancel_async(dev); + } + } + } +} + +int main(int argc, char **argv) +{ +#ifndef _WIN32 + struct sigaction sigact; +#endif + char *filename = NULL; + char *test_mode_file = NULL; + FILE *test_mode; + int n_read; + int r, opt; + int i, gain = 0; + int sync_mode = 0; + int ppm_error = 0; + struct dm_state* demod; + uint8_t *buffer; + uint32_t dev_index = 0; + int frequency_current=0; + uint32_t out_block_size = DEFAULT_BUF_LENGTH; + int device_count; + char vendor[256], product[256], serial[256]; + + demod = malloc(sizeof(struct dm_state)); + memset(demod,0,sizeof(struct dm_state)); + + /* initialize tables */ + calc_squares(); + + demod->f_buf = &demod->filter_buffer[FILTER_ORDER]; + demod->decimation_level = DEFAULT_DECIMATION_LEVEL; + demod->level_limit = DEFAULT_LEVEL_LIMIT; + + + while ((opt = getopt(argc, argv, "x:z:p:Dtam:r:c:l:d:f:g:s:b:n:S::")) != -1) { + switch (opt) { + case 'd': + dev_index = atoi(optarg); + break; + case 'f': + if(frequencieslevel_limit = (uint32_t)atof(optarg); + break; + case 'n': + bytes_to_read = (uint32_t)atof(optarg) * 2; + break; + case 'c': + demod->decimation_level = (uint32_t)atof(optarg); + break; + case 'a': + demod->analyze = 1; + break; + case 'r': + test_mode_file = optarg; + break; + case 't': + demod->signal_grabber = 1; + break; + case 'm': + demod->debug_mode = atoi(optarg); + break; + case 'S': + sync_mode = 1; + break; + case 'D': + debug_output = 1; + break; + case 'z': + override_short = atoi(optarg); + break; + case 'x': + override_long = atoi(optarg); + break; + default: + usage(); + break; + } + } + + /* init protocols somewhat ok */ + register_protocol(demod, &rubicson); + register_protocol(demod, &prologue); + register_protocol(demod, &silvercrest); +// register_protocol(demod, &generic_hx2262); +// register_protocol(demod, &technoline_ws9118); + register_protocol(demod, &elv_em1000); + register_protocol(demod, &elv_ws2000); + register_protocol(demod, &waveman); + register_protocol(demod, &steffen); + register_protocol(demod, &acurite5n1); + register_protocol(demod, &wh2); + + if (argc <= optind-1) { + usage(); + } else { + filename = argv[optind]; + } + + if(out_block_size < MINIMAL_BUF_LENGTH || + out_block_size > MAXIMAL_BUF_LENGTH ){ + fprintf(stderr, + "Output block size wrong value, falling back to default\n"); + fprintf(stderr, + "Minimal length: %u\n", MINIMAL_BUF_LENGTH); + fprintf(stderr, + "Maximal length: %u\n", MAXIMAL_BUF_LENGTH); + out_block_size = DEFAULT_BUF_LENGTH; + } + + buffer = malloc(out_block_size * sizeof(uint8_t)); + + device_count = rtlsdr_get_device_count(); + if (!device_count) { + fprintf(stderr, "No supported devices found.\n"); + if (!test_mode_file) + exit(1); + } + + fprintf(stderr, "Found %d device(s):\n", device_count); + for (i = 0; i < device_count; i++) { + rtlsdr_get_device_usb_strings(i, vendor, product, serial); + fprintf(stderr, " %d: %s, %s, SN: %s\n", i, vendor, product, serial); + } + fprintf(stderr, "\n"); + + fprintf(stderr, "Using device %d: %s\n", + dev_index, rtlsdr_get_device_name(dev_index)); + + r = rtlsdr_open(&dev, dev_index); + if (r < 0) { + fprintf(stderr, "Failed to open rtlsdr device #%d.\n", dev_index); + if (!test_mode_file) + exit(1); + } +#ifndef _WIN32 + sigact.sa_handler = sighandler; + sigemptyset(&sigact.sa_mask); + sigact.sa_flags = 0; + sigaction(SIGINT, &sigact, NULL); + sigaction(SIGTERM, &sigact, NULL); + sigaction(SIGQUIT, &sigact, NULL); + sigaction(SIGPIPE, &sigact, NULL); +#else + SetConsoleCtrlHandler( (PHANDLER_ROUTINE) sighandler, TRUE ); +#endif + /* Set the sample rate */ + r = rtlsdr_set_sample_rate(dev, samp_rate); + if (r < 0) + fprintf(stderr, "WARNING: Failed to set sample rate.\n"); + else + fprintf(stderr, "Sample rate set to %d.\n", rtlsdr_get_sample_rate(dev)); // Unfortunately, doesn't return real rate + + fprintf(stderr, "Sample rate decimation set to %d. %d->%d\n",demod->decimation_level, samp_rate, samp_rate>>demod->decimation_level); + fprintf(stderr, "Bit detection level set to %d.\n", demod->level_limit); + + if (0 == gain) { + /* Enable automatic gain */ + r = rtlsdr_set_tuner_gain_mode(dev, 0); + if (r < 0) + fprintf(stderr, "WARNING: Failed to enable automatic gain.\n"); + else + fprintf(stderr, "Tuner gain set to Auto.\n"); + } else { + /* Enable manual gain */ + r = rtlsdr_set_tuner_gain_mode(dev, 1); + if (r < 0) + fprintf(stderr, "WARNING: Failed to enable manual gain.\n"); + + /* Set the tuner gain */ + r = rtlsdr_set_tuner_gain(dev, gain); + if (r < 0) + fprintf(stderr, "WARNING: Failed to set tuner gain.\n"); + else + fprintf(stderr, "Tuner gain set to %f dB.\n", gain/10.0); + } + + r = rtlsdr_set_freq_correction(dev, ppm_error); + + demod->save_data = 1; + if (!filename) { + demod->save_data = 0; + } else if(strcmp(filename, "-") == 0) { /* Write samples to stdout */ + demod->file = stdout; +#ifdef _WIN32 + _setmode(_fileno(stdin), _O_BINARY); +#endif + } else { + demod->file = fopen(filename, "wb"); + if (!demod->file) { + fprintf(stderr, "Failed to open %s\n", filename); + goto out; + } + } + + if (demod->signal_grabber) + demod->sg_buf = malloc(SIGNAL_GRABBER_BUFFER); + + if (test_mode_file) { + int i = 0; + unsigned char test_mode_buf[DEFAULT_BUF_LENGTH]; + fprintf(stderr, "Test mode active. Reading samples from file: %s\n",test_mode_file); + test_mode = fopen(test_mode_file, "r"); + if (!test_mode) { + fprintf(stderr, "Opening file: %s failed!\n",test_mode_file); + goto out; + } + while(fread(test_mode_buf, 131072, 1, test_mode) != 0) { + rtlsdr_callback(test_mode_buf, 131072, demod); + i++; + } + //Always classify a signal at the end of the file + classify_signal(); + fprintf(stderr, "Test mode file issued %d packets\n", i); + fprintf(stderr, "Filter coeffs used:\n"); + fprintf(stderr, "a: %d %d\n", a[0], a[1]); + fprintf(stderr, "b: %d %d\n", b[0], b[1]); + exit(0); + } + + /* Reset endpoint before we start reading from it (mandatory) */ + r = rtlsdr_reset_buffer(dev); + if (r < 0) + fprintf(stderr, "WARNING: Failed to reset buffers.\n"); + + if (sync_mode) { + fprintf(stderr, "Reading samples in sync mode...\n"); + while (!do_exit) { + r = rtlsdr_read_sync(dev, buffer, out_block_size, &n_read); + if (r < 0) { + fprintf(stderr, "WARNING: sync read failed.\n"); + break; + } + + if ((bytes_to_read > 0) && (bytes_to_read < (uint32_t)n_read)) { + n_read = bytes_to_read; + do_exit = 1; + } + + if (fwrite(buffer, 1, n_read, demod->file) != (size_t)n_read) { + fprintf(stderr, "Short write, samples lost, exiting!\n"); + break; + } + + if ((uint32_t)n_read < out_block_size) { + fprintf(stderr, "Short read, samples lost, exiting!\n"); + break; + } + + if (bytes_to_read > 0) + bytes_to_read -= n_read; + } + } else { + if(frequencies==0) { + frequency[0] = DEFAULT_FREQUENCY; + frequencies=1; + } else { + time(&rawtime_old); + } + fprintf(stderr, "Reading samples in async mode...\n"); + while(!do_exit) { + /* Set the frequency */ + r = rtlsdr_set_center_freq(dev, frequency[frequency_current]); + if (r < 0) + fprintf(stderr, "WARNING: Failed to set center freq.\n"); + else + fprintf(stderr, "Tuned to %u Hz.\n", rtlsdr_get_center_freq(dev)); + r = rtlsdr_read_async(dev, rtlsdr_callback, (void *)demod, + DEFAULT_ASYNC_BUF_NUMBER, out_block_size); + do_exit_async=0; + frequency_current++; + if(frequency_current>frequencies-1) frequency_current=0; + } + } + + if (do_exit) + fprintf(stderr, "\nUser cancel, exiting...\n"); + else + fprintf(stderr, "\nLibrary error %d, exiting...\n", r); + + if (demod->file && (demod->file != stdout)) + fclose(demod->file); + + for (i=0 ; ir_dev_num ; i++) + free(demod->r_devs[i]); + + if (demod->signal_grabber) + free(demod->sg_buf); + + if(demod) + free(demod); + + rtlsdr_close(dev); + free (buffer); +out: + return r >= 0 ? r : -r; +} diff --git a/src/rtl_433.c~ b/src/rtl_433.c~ new file mode 100755 index 0000000..7911d9e --- /dev/null +++ b/src/rtl_433.c~ @@ -0,0 +1,1789 @@ +/* + * rtl_433, turns your Realtek RTL2832 based DVB dongle into a 433.92MHz generic data receiver + * Copyright (C) 2012 by Benjamin Larsson + * + * Based on rtl_sdr + * + * Copyright (C) 2012 by Steve Markgraf + * + * 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, see . + */ + + +/* Currently this can decode the temperature and id from Rubicson sensors + * + * the sensor sends 36 bits 12 times pwm modulated + * the data is grouped into 9 nibles + * [id0] [id1], [unk0] [temp0], [temp1] [temp2], [unk1] [unk2], [unk3] + * + * The id changes when the battery is changed in the sensor. + * unk0 is always 1 0 0 0, most likely 2 channel bits as the sensor can recevice 3 channels + * unk1-3 changes and the meaning is unknown + * temp is 12 bit signed scaled by 10 + * + * The sensor can be bought at Kjell&Co + */ + +/* Prologue sensor protocol + * + * the sensor sends 36 bits 7 times, before the first packet there is a pulse sent + * the packets are pwm modulated + * + * the data is grouped in 9 nibles + * [id0] [rid0] [rid1] [data0] [temp0] [temp1] [temp2] [humi0] [humi1] + * + * id0 is always 1001,9 + * rid is a random id that is generated when the sensor starts, could include battery status + * the same batteries often generate the same id + * data(3) is 0 the battery status, 1 ok, 0 low, first reading always say low + * data(2) is 1 when the sensor sends a reading when pressing the button on the sensor + * data(1,0)+1 forms the channel number that can be set by the sensor (1-3) + * temp is 12 bit signed scaled by 10 + * humi0 is always 1100,c if no humidity sensor is available + * humi1 is always 1100,c if no humidity sensor is available + * + * The sensor can be bought at Clas Ohlson + */ + +#include +#include +#include +#include +#include +#include + +#ifndef _WIN32 +#include +#else +#include +#include +#include +#include "getopt/getopt.h" +#endif + +#include "rtl-sdr.h" + +#define DEFAULT_SAMPLE_RATE 250000 +#define DEFAULT_FREQUENCY 433920000 +#define DEFAULT_HOP_TIME (60*10) +#define DEFAULT_HOP_EVENTS 2 +#define DEFAULT_ASYNC_BUF_NUMBER 32 +#define DEFAULT_BUF_LENGTH (16 * 16384) +#define DEFAULT_LEVEL_LIMIT 10000 +#define DEFAULT_DECIMATION_LEVEL 0 +#define MINIMAL_BUF_LENGTH 512 +#define MAXIMAL_BUF_LENGTH (256 * 16384) +#define FILTER_ORDER 1 +#define MAX_PROTOCOLS 10 +#define SIGNAL_GRABBER_BUFFER (12 * DEFAULT_BUF_LENGTH) +#define BITBUF_COLS 34 +#define BITBUF_ROWS 50 + +static int do_exit = 0; +static int do_exit_async=0, frequencies=0, events=0; +uint32_t frequency[MAX_PROTOCOLS]; +time_t rawtime_old; +int flag; +uint32_t samp_rate=DEFAULT_SAMPLE_RATE; +static uint32_t bytes_to_read = 0; +static rtlsdr_dev_t *dev = NULL; +static uint16_t scaled_squares[256]; +static int debug_output = 0; +static int override_short = 0; +static int override_long = 0; + +/* Supported modulation types */ +#define OOK_PWM_D 1 /* Pulses are of the same length, the distance varies */ +#define OOK_PWM_P 2 /* The length of the pulses varies */ + + +typedef struct { + unsigned int id; + char name[256]; + unsigned int modulation; + unsigned int short_limit; + unsigned int long_limit; + unsigned int reset_limit; + int (*json_callback)(uint8_t bits_buffer[BITBUF_ROWS][BITBUF_COLS]) ; +} r_device; + +static int debug_callback(uint8_t bb[BITBUF_ROWS][BITBUF_COLS]) { + int i,j,k; + fprintf(stderr, "\n"); + for (i=0 ; i=0 ; k--) { + if (bb[i][j] & 1<>1; + payload[1] = bb[0][2]>>1 | ((bb[0][1]&1) << 7 ); + payload[2] = bb[0][3]>>1 | ((bb[0][2]&1) << 7 ); + payload[3] = bb[0][4]>>1 | ((bb[0][3]&1) << 7 ); + + received_crc8 = (bb[0][5]>>1) | ((bb[0][4]&1) << 7 ); + + payload_crc8 = crc8(payload,4); + + if (payload_crc8 != received_crc8) return 0; + + wh2_id = (payload[0] << 4) + (payload[1] >> 4); + wh2_temp = ((payload[1] & 0x7) << 8) + payload[2]; + if (payload[1] & 0x8) { + wh2_temp = -wh2_temp; + } + wh2_temp = wh2_temp/10; + + wh2_humidity = payload[3]; + + fprintf(stdout, "SENSOR:TYPE=WH2,ID=%x,HUMIDITY=%g,TEMPERATURE=%g\n",wh2_id,wh2_humidity,wh2_temp); + + return 1; +} + +static int silvercrest_callback(uint8_t bb[BITBUF_ROWS][BITBUF_COLS]) { + /* FIXME validate the received message better */ + if (bb[1][0] == 0xF8 && + bb[2][0] == 0xF8 && + bb[3][0] == 0xF8 && + bb[4][0] == 0xF8 && + bb[1][1] == 0x4d && + bb[2][1] == 0x4d && + bb[3][1] == 0x4d && + bb[4][1] == 0x4d) { + /* Pretty sure this is a Silvercrest remote */ + fprintf(stdout, "BUTTON:TYPE=SILVERCREST,CODE=%02x-%02x-%02x-%02x-%02x\n",bb[1][0],bb[0][1],bb[0][2],bb[0][3],bb[0][4]); + + if (debug_output) + debug_callback(bb); + + return 1; + } + return 0; +} + +static int rubicson_callback(uint8_t bb[BITBUF_ROWS][BITBUF_COLS]) { + int temperature_before_dec; + int temperature_after_dec; + int16_t temp; + float ftemp; + + /* FIXME validate the received message better, figure out crc */ + if (bb[1][0] == bb[2][0] && bb[2][0] == bb[3][0] && bb[3][0] == bb[4][0] && + bb[4][0] == bb[5][0] && bb[5][0] == bb[6][0] && bb[6][0] == bb[7][0] && bb[7][0] == bb[8][0] && + bb[8][0] == bb[9][0] && (bb[5][0] != 0 && bb[5][1] != 0 && bb[5][2] != 0)) { + + /* Nible 3,4,5 contains 12 bits of temperature + * The temperature is signed and scaled by 10 */ + temp = (int16_t)((uint16_t)(bb[0][1] << 12) | (bb[0][2] << 4)); + temp = temp >> 4; + ftemp = (float)temp/10; + + fprintf(stdout, "SENSOR:TYPE=RUBICSON,ID=%x,TEMPERATURE=%f\n",bb[0][0],ftemp); + + if (debug_output) + debug_callback(bb); + + return 1; + } + return 0; +} + +static int prologue_callback(uint8_t bb[BITBUF_ROWS][BITBUF_COLS]) { + int rid; + + int16_t temp2; + float ftemp; + + /* FIXME validate the received message better */ + if (((bb[1][0]&0xF0) == 0x90 && (bb[2][0]&0xF0) == 0x90 && (bb[3][0]&0xF0) == 0x90 && (bb[4][0]&0xF0) == 0x90 && + (bb[5][0]&0xF0) == 0x90 && (bb[6][0]&0xF0) == 0x90) || + ((bb[1][0]&0xF0) == 0x50 && (bb[2][0]&0xF0) == 0x50 && (bb[3][0]&0xF0) == 0x50 && (bb[4][0]&0xF0) == 0x50)) { + + /* Prologue sensor */ + temp2 = (int16_t)((uint16_t)(bb[1][2] << 8) | (bb[1][3]&0xF0)); + temp2 = temp2 >> 4; + ftemp = (float)temp2/10; + rid = ((bb[1][0]&0x0F)<<4)|(bb[1][1]&0xF0)>>4; + fprintf(stdout, + "SENSOR:TYPE=PROLOGUE,BUTTON=%d,BATTERY=%s,TEMPERATURE=%f,HUMIDITY=%d,CHANNEL=%d,ID=%d,RID=%02x\n", + bb[1][1]&0x04?1:0, + bb[1][1]&0x08?"Ok":"Low", + ftemp, + ((bb[1][3]&0x0F)<<4)|(bb[1][4]>>4), + (int)((bb[1][1]&0x03)+1), + (int)((bb[1][0]&0xF0)>>4), + rid); + + if (debug_output) + debug_callback(bb); + + return 1; + } + return 0; +} + +static int waveman_callback(uint8_t bb[BITBUF_ROWS][BITBUF_COLS]) { + /* Two bits map to 2 states, 0 1 -> 0 and 1 1 -> 1 */ + int i; + uint8_t nb[3] = {0}; + + if (((bb[0][0]&0x55)==0x55) && ((bb[0][1]&0x55)==0x55) && ((bb[0][2]&0x55)==0x55) && ((bb[0][3]&0x55)==0x00)) { + for (i=0 ; i<3 ; i++) { + nb[i] |= ((bb[0][i]&0xC0)==0xC0) ? 0x00 : 0x01; + nb[i] |= ((bb[0][i]&0x30)==0x30) ? 0x00 : 0x02; + nb[i] |= ((bb[0][i]&0x0C)==0x0C) ? 0x00 : 0x04; + nb[i] |= ((bb[0][i]&0x03)==0x03) ? 0x00 : 0x08; + } + + fprintf(stdout, + "BUTTON:TYPE=WAVEMAN,ID=%c,CHANNEL=%d,BUTTON=%d,STATE=%s\n", + 'A'+nb[0], + (int)((nb[1]>>2)+1), + (int)((nb[1]&3)+1), + ((nb[2]==0xe) ? "on" : "off")); + + if (debug_output) + debug_callback(bb); + + return 1; + } + return 0; +} + +static int steffen_callback(uint8_t bb[BITBUF_ROWS][BITBUF_COLS]) { + + if (bb[0][0]==0x00 && ((bb[1][0]&0x07)==0x07) && bb[1][0]==bb[2][0] && bb[2][0]==bb[3][0]) { + + fprintf(stdout, "BUTTON:TYPE=STEFFAN,CODE=%d%d%d%d%d,",(bb[1][0]&0x80)>>7, (bb[1][0]&0x40)>>6, (bb[1][0]&0x20)>>5, (bb[1][0]&0x10)>>4, (bb[1][0]&0x08)>>3); + + if ((bb[1][2]&0x0f)==0x0e) + fprintf(stdout, "BUTTON=A,"); + else if ((bb[1][2]&0x0f)==0x0d) + fprintf(stdout, "BUTTON=B,"); + else if ((bb[1][2]&0x0f)==0x0b) + fprintf(stdout, "BUTTON=C,"); + else if ((bb[1][2]&0x0f)==0x07) + fprintf(stdout, "BUTTON=D,"); + else if ((bb[1][2]&0x0f)==0x0f) + fprintf(stdout, "BUTTON=ALL,"); + else + fprintf(stdout, "BUTTON=UNKNOWN,"); + + if ((bb[1][2]&0xf0)==0xf0) { + fprintf(stdout, "STATE=OFF\n"); + } else { + fprintf(stdout, "STATE=ON\n"); + } + + if (debug_output) + debug_callback(bb); + + return 1; + } + return 0; +} + + +uint16_t AD_POP(uint8_t bb[BITBUF_COLS], uint8_t bits, uint8_t bit) { + uint16_t val = 0; + uint8_t i, byte_no, bit_no; + for (i=0;i=1&&dec[0]<=3?types[dec[0]-1]:"?",dec[1],dec[2],dec[3]|dec[4]<<8,dec[5]|dec[6]<<8,dec[7]|dec[8]<<8); + + return 1; +} + +static int ws2000_callback(uint8_t bb[BITBUF_ROWS][BITBUF_COLS]) { + // based on http://www.dc3yc.privat.t-online.de/protocol.htm + uint8_t dec[13]; + uint8_t nibbles=0; + uint8_t bit=11; // preamble + char* types[]={"!AS3", "AS2000/ASH2000/S2000/S2001A/S2001IA/ASH2200/S300IA", "!S2000R", "!S2000W", "S2001I/S2001ID", "!S2500H", "!Pyrano", "!KS200/KS300"}; + uint8_t check_calculated=0, sum_calculated=0; + uint8_t i; + uint8_t stopbit; + uint8_t sum_received; + + dec[0] = AD_POP (bb[0], 4, bit); bit+=4; + stopbit= AD_POP (bb[0], 1, bit); bit+=1; + if (!stopbit) { +//fprintf(stderr, "!stopbit\n"); + return 0; + } + check_calculated ^= dec[0]; + sum_calculated += dec[0]; + + // read nibbles with stopbit ... + for (i = 1; i <= (dec[0]==4?12:8); i++) { + dec[i] = AD_POP (bb[0], 4, bit); bit+=4; + stopbit= AD_POP (bb[0], 1, bit); bit+=1; + if (!stopbit) { +//fprintf(stderr, "!stopbit %i\n", i); + return 0; + } + check_calculated ^= dec[i]; + sum_calculated += dec[i]; + nibbles++; + } + + if (check_calculated) { +//fprintf(stderr, "check_calculated (%d) != 0\n", check_calculated); + return 0; + } + + // Read sum + sum_received = AD_POP (bb[0], 4, bit); bit+=4; + sum_calculated+=5; + sum_calculated&=0xF; + if (sum_received != sum_calculated) { +//fprintf(stderr, "sum_received (%d) != sum_calculated (%d) ", sum_received, sum_calculated); + return 0; + } + +//for (i = 0; i < nibbles; i++) fprintf(stderr, "%02X ", dec[i]); fprintf(stderr, "\n"); + + fprintf(stdout, "SENSOR:TYPE=ELV-WS-2000,MODEL=%s,CODE=%d,TEMPERATURE=%s%d.%d,HUMIDITY=%d.%d",dec[0]<=7?types[dec[0]]:"?",dec[1]&7,dec[1]&8?"-":"",dec[4]*10+dec[3],dec[2],dec[7]*10+dec[6], dec[5]); + if(dec[0]==4) { + fprintf(stdout, "PRESSURE=%d\n", 200+dec[10]*100+dec[9]*10+dec[8]); + } else { + fprintf(stdout, "\n"); + } + + return 1; +} + +// ** Acurite 5n1 functions ** + +const float acurite_winddirections[] = + { 337.5, 315.0, 292.5, 270.0, 247.5, 225.0, 202.5, 180, + 157.5, 135.0, 112.5, 90.0, 67.5, 45.0, 22.5, 0.0 }; + +static int acurite_raincounter = 0; + +static int acurite_crc(uint8_t row[BITBUF_COLS], int cols) { + // sum of first n-1 bytes modulo 256 should equal nth byte + int i; + int sum = 0; + for ( i=0; i < cols; i++) + sum += row[i]; + if ( sum % 256 == row[cols] ) + return 1; + else + return 0; +} + +static int acurite_detect(uint8_t *pRow) { + int i; + if ( pRow[0] != 0x00 ) { + // invert bits due to wierd issue + for (i = 0; i < 8; i++) + pRow[i] = ~pRow[i] & 0xFF; + pRow[0] |= pRow[8]; // fix first byte that has mashed leading bit + + if (acurite_crc(pRow, 7)) + return 1; // passes crc check + } + return 0; +} + +static float acurite_getTemp (uint8_t highbyte, uint8_t lowbyte) { + // range -40 to 158 F + int highbits = (highbyte & 0x0F) << 7 ; + int lowbits = lowbyte & 0x7F; + int rawtemp = highbits | lowbits; + float temp = (rawtemp - 400) / 10.0; + return temp; +} + +static int acurite_getWindSpeed (uint8_t highbyte, uint8_t lowbyte) { + // range: 0 to 159 kph + int highbits = ( highbyte & 0x1F) << 3; + int lowbits = ( lowbyte & 0x70 ) >> 4; + int speed = highbits | lowbits; + return speed; +} + +static float acurite_getWindDirection (uint8_t byte) { + // 16 compass points, ccw from (NNW) to 15 (N) + int direction = byte & 0x0F; + return acurite_winddirections[direction]; +} + +static int acurite_getHumidity (uint8_t byte) { + // range: 1 to 99 %RH + int humidity = byte & 0x7F; + return humidity; +} + +static int acurite_getRainfallCounter (uint8_t highbyte, uint8_t lowbyte) { + // range: 0 to 99.99 in, 0.01 in incr., rolling counter? + int highbits = (highbyte & 0x3F) << 7 ; + int lowbits = lowbyte & 0x7F; + int raincounter = highbits | lowbits; + return raincounter; +} + +static int acurite5n1_callback(uint8_t bb[BITBUF_ROWS][BITBUF_COLS]) { + // acurite 5n1 weather sensor decoding for rtl_433 + // Jens Jensen 2014 + int i; + uint8_t *buf = NULL; + // run through rows til we find one with good crc (brute force) + for (i=0; i < BITBUF_ROWS; i++) { + if (acurite_detect(bb[i])) { + buf = bb[i]; + break; // done + } + } + + if (buf) { + // decode packet here + fprintf(stdout, "SENSOR:TYPE=ACURITE"); + if (debug_output) { + for (i=0; i < 8; i++) + fprintf(stderr, "%02X ", buf[i]); + fprintf(stderr, "CRC OK\n"); + } + + if ((buf[2] & 0x0F) == 1) { + // wind speed, wind direction, rainfall + + float rainfall = 0.00; + int raincounter = 0; + if (acurite_raincounter > 0) { + // track rainfall difference after first run + raincounter = acurite_getRainfallCounter(buf[5], buf[6]); + rainfall = ( raincounter - acurite_raincounter ) * 0.01; + } else { + // capture starting counter + acurite_raincounter = raincounter; + } + + fprintf(stdout, ",WINDSPEED=%d", + acurite_getWindSpeed(buf[3], buf[4])); + fprintf(stdout, ",WINDDIRECTION=%0.1f", + acurite_getWindDirection(buf[4])); + fprintf(stdout, ",RAINGAUGE: %0.2f\n", rainfall); + + } else if ((buf[2] & 0x0F) == 8) { + // wind speed, temp, RH + fprintf(stdout, ",WINDSPEED=%d", + acurite_getWindSpeed(buf[3], buf[4])); + fprintf(stdout, ",TEMPERATURE=%2.1f", + acurite_getTemp(buf[4], buf[5])); + fprintf(stdout, ",HUMIDITY=%d\n", + acurite_getHumidity(buf[6])); + } + } + //if (debug_output) + // debug_callback(bb); + return 1; +} + + +// timings based on samp_rate=1024000 +r_device rubicson = { + /* .id = */ 1, + /* .name = */ "Rubicson Temperature Sensor", + /* .modulation = */ OOK_PWM_D, + /* .short_limit = */ 1744/4, + /* .long_limit = */ 3500/4, + /* .reset_limit = */ 5000/4, + /* .json_callback = */ &rubicson_callback, +}; + +r_device prologue = { + /* .id = */ 2, + /* .name = */ "Prologue Temperature Sensor", + /* .modulation = */ OOK_PWM_D, + /* .short_limit = */ 3500/4, + /* .long_limit = */ 7000/4, + /* .reset_limit = */ 15000/4, + /* .json_callback = */ &prologue_callback, +}; + +r_device silvercrest = { + /* .id = */ 3, + /* .name = */ "Silvercrest Remote Control", + /* .modulation = */ OOK_PWM_P, + /* .short_limit = */ 600/4, + /* .long_limit = */ 5000/4, + /* .reset_limit = */ 15000/4, + /* .json_callback = */ &silvercrest_callback, +}; + +r_device tech_line_fws_500 = { + /* .id = */ 4, + /* .name = */ "Tech Line FWS-500 Sensor", + /* .modulation = */ OOK_PWM_D, + /* .short_limit = */ 3500/4, + /* .long_limit = */ 7000/4, + /* .reset_limit = */ 15000/4, + // /* .json_callback = */ &rubicson_callback, +}; + +r_device generic_hx2262 = { + /* .id = */ 5, + /* .name = */ "Window/Door sensor", + /* .modulation = */ OOK_PWM_P, + /* .short_limit = */ 1300/4, + /* .long_limit = */ 10000/4, + /* .reset_limit = */ 40000/4, + // /* .json_callback = */ &silvercrest_callback, +}; + +r_device technoline_ws9118 = { + /* .id = */ 6, + /* .name = */ "Technoline WS9118", + /* .modulation = */ OOK_PWM_D, + /* .short_limit = */ 1800/4, + /* .long_limit = */ 3500/4, + /* .reset_limit = */ 15000/4, + /* .json_callback = */ &debug_callback, +}; + + +r_device elv_em1000 = { + /* .id = */ 7, + /* .name = */ "ELV EM 1000", + /* .modulation = */ OOK_PWM_D, + /* .short_limit = */ 750/4, + /* .long_limit = */ 7250/4, + /* .reset_limit = */ 30000/4, + /* .json_callback = */ &em1000_callback, +}; + +r_device elv_ws2000 = { + /* .id = */ 8, + /* .name = */ "ELV WS 2000", + /* .modulation = */ OOK_PWM_D, + /* .short_limit = */ (602+(1155-602)/2)/4, + /* .long_limit = */ ((1755635-1655517)/2)/4, // no repetitions + /* .reset_limit = */ ((1755635-1655517)*2)/4, + /* .json_callback = */ &ws2000_callback, +}; + +r_device waveman = { + /* .id = */ 6, + /* .name = */ "Waveman Switch Transmitter", + /* .modulation = */ OOK_PWM_P, + /* .short_limit = */ 1000/4, + /* .long_limit = */ 8000/4, + /* .reset_limit = */ 30000/4, + /* .json_callback = */ &waveman_callback, +}; + +r_device steffen = { + /* .id = */ 9, + /* .name = */ "Steffen Switch Transmitter", + /* .modulation = */ OOK_PWM_D, + /* .short_limit = */ 140, + /* .long_limit = */ 270, + /* .reset_limit = */ 1500, + /* .json_callback = */ &steffen_callback, +}; + +r_device acurite5n1 = { + /* .id = */ 10, + /* .name = */ "Acurite 5n1 Weather Station", + /* .modulation = */ OOK_PWM_P, + /* .short_limit = */ 75, + /* .long_limit = */ 220, + /* .reset_limit = */ 20000, + /* .json_callback = */ &acurite5n1_callback, +}; + +r_device wh2 = { + /* .id = */ 11, + /* .name = */ "WH2 Weather Station", + /* .modulation = */ OOK_PWM_P, + /* .short_limit = */ 150, + /* .long_limit = */ 400, + /* .reset_limit = */ 20000, + /* .json_callback = */ &wh2_callback, +}; + +struct protocol_state { + int (*callback)(uint8_t bits_buffer[BITBUF_ROWS][BITBUF_COLS]); + + /* bits state */ + int bits_col_idx; + int bits_row_idx; + int bits_bit_col_idx; + uint8_t bits_buffer[BITBUF_ROWS][BITBUF_COLS]; + int16_t bits_per_row[BITBUF_ROWS]; + int bit_rows; + unsigned int modulation; + + /* demod state */ + int pulse_length; + int pulse_count; + int pulse_distance; + int sample_counter; + int start_c; + + int packet_present; + int pulse_start; + int real_bits; + int start_bit; + /* pwm limits */ + int short_limit; + int long_limit; + int reset_limit; + + +}; + + +struct dm_state { + FILE *file; + int save_data; + int32_t level_limit; + int32_t decimation_level; + int16_t filter_buffer[MAXIMAL_BUF_LENGTH+FILTER_ORDER]; + int16_t* f_buf; + int analyze; + int debug_mode; + + /* Signal grabber variables */ + int signal_grabber; + int8_t* sg_buf; + int sg_index; + int sg_len; + + + /* Protocol states */ + int r_dev_num; + struct protocol_state *r_devs[MAX_PROTOCOLS]; + +}; + +void usage(void) +{ + fprintf(stderr, + "rtl_433, an ISM band generic data receiver for RTL2832 based DVB-T receivers\n\n" + "Usage:\t[-d device_index (default: 0)]\n" + "\t[-g gain (default: 0 for auto)]\n" + "\t[-a analyze mode, print a textual description of the signal]\n" + "\t[-t signal auto save, use it together with analyze mode (-a -t)\n" + "\t[-l change the detection level used to determine pulses (0-3200) default: %i]\n" + "\t[-f [-f...] receive frequency[s], default: %i Hz]\n" + "\t[-s samplerate (default: %i Hz)]\n" + "\t[-S force sync output (default: async)]\n" + "\t[-r read data from file instead of from a receiver]\n" + "\t[-p ppm_error (default: 0)]\n" + "\t[-r test file name (indata)]\n" + "\t[-m test file mode (0 rtl_sdr data, 1 rtl_433 data)]\n" + "\t[-D print debug info on event\n" + "\t[-z override short value\n" + "\t[-x override long value\n" + "\tfilename (a '-' dumps samples to stdout)\n\n", DEFAULT_LEVEL_LIMIT, DEFAULT_FREQUENCY, DEFAULT_SAMPLE_RATE); + exit(1); +} + +#ifdef _WIN32 +BOOL WINAPI +sighandler(int signum) +{ + if (CTRL_C_EVENT == signum) { + fprintf(stderr, "Signal caught, exiting!\n"); + do_exit = 1; + rtlsdr_cancel_async(dev); + return TRUE; + } + return FALSE; +} +#else +static void sighandler(int signum) +{ + fprintf(stderr, "Signal caught, exiting!\n"); + do_exit = 1; + rtlsdr_cancel_async(dev); +} +#endif + +/* precalculate lookup table for envelope detection */ +static void calc_squares() { + int i; + for (i=0 ; i<256 ; i++) + scaled_squares[i] = (128-i) * (128-i); +} + +/** This will give a noisy envelope of OOK/ASK signals + * Subtract the bias (-128) and get an envelope estimation + * The output will be written in the input buffer + * @returns pointer to the input buffer + */ + +static void envelope_detect(unsigned char *buf, uint32_t len, int decimate) +{ + uint16_t* sample_buffer = (uint16_t*) buf; + unsigned int i; + unsigned op = 0; + unsigned int stride = 1<bits_buffer, 0 ,BITBUF_ROWS*BITBUF_COLS); + memset(p->bits_per_row, 0 ,BITBUF_ROWS); + p->bits_col_idx = 0; + p->bits_bit_col_idx = 7; + p->bits_row_idx = 0; + p->bit_rows = 0; +} + +static void demod_add_bit(struct protocol_state* p, int bit) { + p->bits_buffer[p->bits_row_idx][p->bits_col_idx] |= bit<bits_bit_col_idx; + p->bits_bit_col_idx--; + if (p->bits_bit_col_idx<0) { + p->bits_bit_col_idx = 7; + p->bits_col_idx++; + if (p->bits_col_idx>BITBUF_COLS-1) { + p->bits_col_idx = BITBUF_COLS-1; +// fprintf(stderr, "p->bits_col_idx>%i!\n", BITBUF_COLS-1); + } + } + p->bits_per_row[p->bit_rows]++; +} + +static void demod_next_bits_packet(struct protocol_state* p) { + p->bits_col_idx = 0; + p->bits_row_idx++; + p->bits_bit_col_idx = 7; + if (p->bits_row_idx>BITBUF_ROWS-1) { + p->bits_row_idx = BITBUF_ROWS-1; + //fprintf(stderr, "p->bits_row_idx>%i!\n", BITBUF_ROWS-1); + } + p->bit_rows++; + if (p->bit_rows > BITBUF_ROWS-1) + p->bit_rows -=1; +} + +static void demod_print_bits_packet(struct protocol_state* p) { + int i,j,k; + + fprintf(stderr, "\n"); + for (i=0 ; ibit_rows+1 ; i++) { + fprintf(stderr, "[%02d] {%d} ",i, p->bits_per_row[i]); + for (j=0 ; j<((p->bits_per_row[i]+8)/8) ; j++) { + fprintf(stderr, "%02x ", p->bits_buffer[i][j]); + } + fprintf(stderr, ": "); + for (j=0 ; j<((p->bits_per_row[i]+8)/8) ; j++) { + for (k=7 ; k>=0 ; k--) { + if (p->bits_buffer[i][j] & 1<bits_buffer[i][j]); + fprintf(stderr, " "); + } + fprintf(stderr, "\n"); + } + fprintf(stderr, "\n"); + return; +} + +static void register_protocol(struct dm_state *demod, r_device *t_dev) { + struct protocol_state *p = calloc(1,sizeof(struct protocol_state)); + p->short_limit = (float)t_dev->short_limit/((float)DEFAULT_SAMPLE_RATE/(float)samp_rate); + p->long_limit = (float)t_dev->long_limit /((float)DEFAULT_SAMPLE_RATE/(float)samp_rate); + p->reset_limit = (float)t_dev->reset_limit/((float)DEFAULT_SAMPLE_RATE/(float)samp_rate); + p->modulation = t_dev->modulation; + p->callback = t_dev->json_callback; + demod_reset_bits_packet(p); + + demod->r_devs[demod->r_dev_num] = p; + demod->r_dev_num++; + + fprintf(stderr, "Registering protocol[%02d] %s\n",demod->r_dev_num, t_dev->name); + + if (demod->r_dev_num > MAX_PROTOCOLS) + fprintf(stderr, "Max number of protocols reached %d\n",MAX_PROTOCOLS); +} + + +static unsigned int counter = 0; +static unsigned int print = 1; +static unsigned int print2 = 0; +static unsigned int pulses_found = 0; +static unsigned int prev_pulse_start = 0; +static unsigned int pulse_start = 0; +static unsigned int pulse_end = 0; +static unsigned int pulse_avg = 0; +static unsigned int signal_start = 0; +static unsigned int signal_end = 0; +static unsigned int signal_pulse_data[4000][3] = {{0}}; +static unsigned int signal_pulse_counter = 0; + + +static void classify_signal() { + unsigned int i,k, max=0, min=1000000, t; + unsigned int delta, count_min, count_max, min_new, max_new, p_limit; + unsigned int a[3], b[2], a_cnt[3], a_new[3], b_new[2]; + unsigned int signal_distance_data[4000] = {0}; + struct protocol_state p = {0}; + unsigned int signal_type; + + if (!signal_pulse_data[0][0]) + return; + + for (i=0 ; i<1000 ; i++) { + if (signal_pulse_data[i][0] > 0) { + //fprintf(stderr, "[%03d] s: %d\t e:\t %d\t l:%d\n", + //i, signal_pulse_data[i][0], signal_pulse_data[i][1], + //signal_pulse_data[i][2]); + if (signal_pulse_data[i][2] > max) + max = signal_pulse_data[i][2]; + if (signal_pulse_data[i][2] <= min) + min = signal_pulse_data[i][2]; + } + } + t=(max+min)/2; + //fprintf(stderr, "\n\nMax: %d, Min: %d t:%d\n", max, min, t); + + delta = (max - min)*(max-min); + + //TODO use Lloyd-Max quantizer instead + k=1; + while((k < 10) && (delta > 0)) { + min_new = 0; count_min = 0; + max_new = 0; count_max = 0; + + for (i=0 ; i < 1000 ; i++) { + if (signal_pulse_data[i][0] > 0) { + if (signal_pulse_data[i][2] < t) { + min_new = min_new + signal_pulse_data[i][2]; + count_min++; + } + else { + max_new = max_new + signal_pulse_data[i][2]; + count_max++; + } + } + } + min_new = min_new / count_min; + max_new = max_new / count_max; + + delta = (min - min_new)*(min - min_new) + (max - max_new)*(max - max_new); + min = min_new; + max = max_new; + t = (min + max)/2; + + fprintf(stderr, "Iteration %d. t: %d min: %d (%d) max: %d (%d) delta %d\n", k,t, min, count_min, max, count_max, delta); + k++; + } + + for (i=0 ; i<1000 ; i++) { + if (signal_pulse_data[i][0] > 0) { + //fprintf(stderr, "%d\n", signal_pulse_data[i][1]); + } + } + /* 50% decision limit */ + if (max/min > 1) { + fprintf(stderr, "Pulse coding: Short pulse length %d - Long pulse length %d\n", min, max); + signal_type = 2; + } else { + fprintf(stderr, "Distance coding: Pulse length %d\n", (min+max)/2); + signal_type = 1; + } + p_limit = (max+min)/2; + + /* Initial guesses */ + a[0] = 1000000; + a[2] = 0; + for (i=1 ; i<1000 ; i++) { + if (signal_pulse_data[i][0] > 0) { +// fprintf(stderr, "[%03d] s: %d\t e:\t %d\t l:%d\t d:%d\n", +// i, signal_pulse_data[i][0], signal_pulse_data[i][1], +// signal_pulse_data[i][2], signal_pulse_data[i][0]-signal_pulse_data[i-1][1]); + signal_distance_data[i-1] = signal_pulse_data[i][0]-signal_pulse_data[i-1][1]; + if (signal_distance_data[i-1] > a[2]) + a[2] = signal_distance_data[i-1]; + if (signal_distance_data[i-1] <= a[0]) + a[0] = signal_distance_data[i-1]; + } + } + min = a[0]; + max = a[2]; + a[1] = (a[0]+a[2])/2; +// for (i=0 ; i<1 ; i++) { +// b[i] = (a[i]+a[i+1])/2; +// } + b[0] = (a[0]+a[1])/2; + b[1] = (a[1]+a[2])/2; +// fprintf(stderr, "a[0]: %d\t a[1]: %d\t a[2]: %d\t\n",a[0],a[1],a[2]); +// fprintf(stderr, "b[0]: %d\t b[1]: %d\n",b[0],b[1]); + + k=1; + delta = 10000000; + while((k < 10) && (delta > 0)) { + for (i=0 ; i<3 ; i++) { + a_new[i] = 0; + a_cnt[i] = 0; + } + + for (i=0 ; i < 1000 ; i++) { + if (signal_distance_data[i] > 0) { + if (signal_distance_data[i] < b[0]) { + a_new[0] += signal_distance_data[i]; + a_cnt[0]++; + } else if (signal_distance_data[i] < b[1] && signal_distance_data[i] >= b[0]){ + a_new[1] += signal_distance_data[i]; + a_cnt[1]++; + } else if (signal_distance_data[i] >= b[1]) { + a_new[2] += signal_distance_data[i]; + a_cnt[2]++; + } + } + } + +// fprintf(stderr, "Iteration %d.", k); + delta = 0; + for (i=0 ; i<3 ; i++) { + if (a_cnt[i]) + a_new[i] /= a_cnt[i]; + delta += (a[i]-a_new[i])*(a[i]-a_new[i]); +// fprintf(stderr, "\ta[%d]: %d (%d)", i, a_new[i], a[i]); + a[i] = a_new[i]; + } +// fprintf(stderr, " delta %d\n", delta); + + if (a[0] < min) { + a[0] = min; +// fprintf(stderr, "Fixing a[0] = %d\n", min); + } + if (a[2] > max) { + a[0] = max; +// fprintf(stderr, "Fixing a[2] = %d\n", max); + } +// if (a[1] == 0) { +// a[1] = (a[2]+a[0])/2; +// fprintf(stderr, "Fixing a[1] = %d\n", a[1]); +// } + +// fprintf(stderr, "Iteration %d.", k); + for (i=0 ; i<2 ; i++) { +// fprintf(stderr, "\tb[%d]: (%d) ", i, b[i]); + b[i] = (a[i]+a[i+1])/2; +// fprintf(stderr, "%d ", b[i]); + } +// fprintf(stderr, "\n"); + k++; + } + + if (override_short) { + p_limit = override_short; + a[0] = override_short; + } + + if (override_long) { + a[1] = override_long; + } + + if (a[1] 0) { + if (signal_distance_data[i] < (a[0]+a[1])/2) { +// fprintf(stderr, "0 [%d] %d < %d\n",i, signal_distance_data[i], (a[0]+a[1])/2); + demod_add_bit(&p, 0); + } else if ((signal_distance_data[i] > (a[0]+a[1])/2) && (signal_distance_data[i] < (a[1]+a[2])/2)) { +// fprintf(stderr, "0 [%d] %d > %d\n",i, signal_distance_data[i], (a[0]+a[1])/2); + demod_add_bit(&p, 1); + } else if (signal_distance_data[i] > (a[1]+a[2])/2) { +// fprintf(stderr, "0 [%d] %d > %d\n",i, signal_distance_data[i], (a[1]+a[2])/2); + demod_next_bits_packet(&p); + } + + } + + } + demod_print_bits_packet(&p); + } + if (signal_type == 2) { + for(i=0 ; i<1000 ; i++){ + if(signal_pulse_data[i][2] > 0) { + if (signal_pulse_data[i][2] < p_limit) { +// fprintf(stderr, "0 [%d] %d < %d\n",i, signal_pulse_data[i][2], p_limit); + demod_add_bit(&p, 0); + } else { +// fprintf(stderr, "1 [%d] %d > %d\n",i, signal_pulse_data[i][2], p_limit); + demod_add_bit(&p, 1); + } + if ((signal_distance_data[i] >= (a[1]+a[2])/2)) { +// fprintf(stderr, "\\n [%d] %d > %d\n",i, signal_distance_data[i], (a[1]+a[2])/2); + demod_next_bits_packet(&p); + } + + + } + } + demod_print_bits_packet(&p); + } + + for (i=0 ; i<1000 ; i++) { + signal_pulse_data[i][0] = 0; + signal_pulse_data[i][1] = 0; + signal_pulse_data[i][2] = 0; + signal_distance_data[i] = 0; + } + +}; + + +static void pwm_analyze(struct dm_state *demod, int16_t *buf, uint32_t len) +{ + unsigned int i; + + for (i=0 ; i demod->level_limit) { + if (!signal_start) + signal_start = counter; + if (print) { + pulses_found++; + pulse_start = counter; + signal_pulse_data[signal_pulse_counter][0] = counter; + signal_pulse_data[signal_pulse_counter][1] = -1; + signal_pulse_data[signal_pulse_counter][2] = -1; + if (debug_output) fprintf(stderr, "pulse_distance %d\n",counter-pulse_end); + if (debug_output) fprintf(stderr, "pulse_start distance %d\n",pulse_start-prev_pulse_start); + if (debug_output) fprintf(stderr, "pulse_start[%d] found at sample %d, value = %d\n",pulses_found, counter, buf[i]); + prev_pulse_start = pulse_start; + print =0; + print2 = 1; + } + } + counter++; + if (buf[i] < demod->level_limit) { + if (print2) { + pulse_avg += counter-pulse_start; + if (debug_output) fprintf(stderr, "pulse_end [%d] found at sample %d, pulse length = %d, pulse avg length = %d\n", + pulses_found, counter, counter-pulse_start, pulse_avg/pulses_found); + pulse_end = counter; + print2 = 0; + signal_pulse_data[signal_pulse_counter][1] = counter; + signal_pulse_data[signal_pulse_counter][2] = counter-pulse_start; + signal_pulse_counter++; + if (signal_pulse_counter >= 4000) { + signal_pulse_counter = 0; + goto err; + } + } + print = 1; + if (signal_start && (pulse_end + 50000 < counter)) { + signal_end = counter - 40000; + fprintf(stderr, "*** signal_start = %d, signal_end = %d\n",signal_start-10000, signal_end); + fprintf(stderr, "signal_len = %d, pulses = %d\n", signal_end-(signal_start-10000), pulses_found); + pulses_found = 0; + classify_signal(); + + signal_pulse_counter = 0; + if (demod->sg_buf) { + int start_pos, signal_bszie, wlen, wrest=0, sg_idx, idx; + char sgf_name[256] = {0}; + FILE *sgfp; + + sprintf(sgf_name, "gfile%03d.data",demod->signal_grabber); + demod->signal_grabber++; + signal_bszie = 2*(signal_end-(signal_start-10000)); + signal_bszie = (131072-(signal_bszie%131072)) + signal_bszie; + sg_idx = demod->sg_index-demod->sg_len; + if (sg_idx < 0) + sg_idx = SIGNAL_GRABBER_BUFFER-demod->sg_len; + idx = (i-40000)*2; + start_pos = sg_idx+idx-signal_bszie; + fprintf(stderr, "signal_bszie = %d - sg_index = %d\n", signal_bszie, demod->sg_index); + fprintf(stderr, "start_pos = %d - buffer_size = %d\n", start_pos, SIGNAL_GRABBER_BUFFER); + if (signal_bszie > SIGNAL_GRABBER_BUFFER) + fprintf(stderr, "Signal bigger then buffer, signal = %d > buffer %d !!\n", signal_bszie, SIGNAL_GRABBER_BUFFER); + + if (start_pos < 0) { + start_pos = SIGNAL_GRABBER_BUFFER+start_pos; + fprintf(stderr, "restart_pos = %d\n", start_pos); + } + + fprintf(stderr, "*** Saving signal to file %s\n",sgf_name); + sgfp = fopen(sgf_name, "wb"); + if (!sgfp) { + fprintf(stderr, "Failed to open %s\n", sgf_name); + } + wlen = signal_bszie; + if (start_pos + signal_bszie > SIGNAL_GRABBER_BUFFER) { + wlen = SIGNAL_GRABBER_BUFFER - start_pos; + wrest = signal_bszie - wlen; + } + fprintf(stderr, "*** Writing data from %d, len %d\n",start_pos, wlen); + fwrite(&demod->sg_buf[start_pos], 1, wlen, sgfp); + + if (wrest) { + fprintf(stderr, "*** Writing data from %d, len %d\n",0, wrest); + fwrite(&demod->sg_buf[0], 1, wrest, sgfp); + } + + fclose(sgfp); + } + signal_start = 0; + } + } + + + } + return; + +err: + fprintf(stderr, "To many pulses detected, probably bad input data or input parameters\n"); + return; +} + +/* The distance between pulses decodes into bits */ + +static void pwm_d_decode(struct dm_state *demod, struct protocol_state* p, int16_t *buf, uint32_t len) { + unsigned int i; + + for (i=0 ; i demod->level_limit) { + p->pulse_count = 1; + p->start_c = 1; + } + if (p->pulse_count && (buf[i] < demod->level_limit)) { + p->pulse_length = 0; + p->pulse_distance = 1; + p->sample_counter = 0; + p->pulse_count = 0; + } + if (p->start_c) p->sample_counter++; + if (p->pulse_distance && (buf[i] > demod->level_limit)) { + if (p->sample_counter < p->short_limit) { + demod_add_bit(p, 0); + } else if (p->sample_counter < p->long_limit) { + demod_add_bit(p, 1); + } else { + demod_next_bits_packet(p); + p->pulse_count = 0; + p->sample_counter = 0; + } + p->pulse_distance = 0; + } + if (p->sample_counter > p->reset_limit) { + p->start_c = 0; + p->sample_counter = 0; + p->pulse_distance = 0; + if (p->callback) + events+=p->callback(p->bits_buffer); + else + demod_print_bits_packet(p); + + demod_reset_bits_packet(p); + } + } +} + +/* The length of pulses decodes into bits */ + +static void pwm_p_decode(struct dm_state *demod, struct protocol_state* p, int16_t *buf, uint32_t len) { + unsigned int i; + + for (i=0 ; i demod->level_limit && !p->start_bit) { + /* start bit detected */ + p->start_bit = 1; + p->start_c = 1; + p->sample_counter = 0; +// fprintf(stderr, "start bit pulse start detected\n"); + } + + if (!p->real_bits && p->start_bit && (buf[i] < demod->level_limit)) { + /* end of startbit */ + p->real_bits = 1; +// fprintf(stderr, "start bit pulse end detected\n"); + } + if (p->start_c) p->sample_counter++; + + + if (!p->pulse_start && p->real_bits && (buf[i] > demod->level_limit)) { + /* save the pulse start, it will never be zero */ + p->pulse_start = p->sample_counter; +// fprintf(stderr, "real bit pulse start detected\n"); + + } + + if (p->real_bits && p->pulse_start && (buf[i] < demod->level_limit)) { + /* end of pulse */ + + p->pulse_length = p->sample_counter-p->pulse_start; +// fprintf(stderr, "real bit pulse end detected %d\n", p->pulse_length); +// fprintf(stderr, "space duration %d\n", p->sample_counter); + + if (p->pulse_length <= p->short_limit) { + demod_add_bit(p, 1); + } else if (p->pulse_length > p->short_limit) { + demod_add_bit(p, 0); + } + p->sample_counter = 0; + p->pulse_start = 0; + } + + if (p->real_bits && p->pulse_length > p->long_limit) { + demod_next_bits_packet(p); + + p->start_bit = 0; + p->real_bits = 0; + } + + if (p->sample_counter > p->reset_limit) { + p->start_c = 0; + p->sample_counter = 0; + if (p->callback) + events+=p->callback(p->bits_buffer); + else + demod_print_bits_packet(p); + demod_reset_bits_packet(p); + + p->start_bit = 0; + p->real_bits = 0; + } + } +} + + + +/** Something that might look like a IIR lowpass filter + * + * [b,a] = butter(1, 0.01) -> quantizes nicely thus suitable for fixed point + * Q1.15*Q15.0 = Q16.15 + * Q16.15>>1 = Q15.14 + * Q15.14 + Q15.14 + Q15.14 could possibly overflow to 17.14 + * but the b coeffs are small so it wont happen + * Q15.14>>14 = Q15.0 \o/ + */ + +static uint16_t lp_xmem[FILTER_ORDER] = {0}; + +#define F_SCALE 15 +#define S_CONST (1<>1) + (b[0]*x_buf[0]>>1) + (b[1]*lp_xmem[0]>>1)) >> (F_SCALE-1); + for (i=1 ; i>1) + (b[0]*x_buf[i]>>1) + (b[1]*x_buf[i-1]>>1)) >> (F_SCALE-1); + } + + /* Save last sample */ + memcpy(lp_xmem, &x_buf[len-1-FILTER_ORDER], FILTER_ORDER*sizeof(int16_t)); + memcpy(&y_buf[-FILTER_ORDER], &y_buf[len-1-FILTER_ORDER], FILTER_ORDER*sizeof(int16_t)); + //fprintf(stderr, "%d\n", y_buf[0]); +} + + +static void rtlsdr_callback(unsigned char *buf, uint32_t len, void *ctx) +{ + struct dm_state *demod = ctx; + uint16_t* sbuf = (uint16_t*) buf; + int i; + if (demod->file || !demod->save_data) { + if (do_exit || do_exit_async) + return; + + if ((bytes_to_read > 0) && (bytes_to_read < len)) { + len = bytes_to_read; + do_exit = 1; + rtlsdr_cancel_async(dev); + } + + if (demod->signal_grabber) { + //fprintf(stderr, "[%d] sg_index - len %d\n", demod->sg_index, len ); + memcpy(&demod->sg_buf[demod->sg_index], buf, len); + demod->sg_len =len; + demod->sg_index +=len; + if (demod->sg_index+len > SIGNAL_GRABBER_BUFFER) + demod->sg_index = 0; + } + + + if (demod->debug_mode == 0) { + envelope_detect(buf, len, demod->decimation_level); + low_pass_filter(sbuf, demod->f_buf, len>>(demod->decimation_level+1)); + } else if (demod->debug_mode == 1){ + memcpy(demod->f_buf, buf, len); + } + if (demod->analyze) { + pwm_analyze(demod, demod->f_buf, len/2); + } + { + for (i=0 ; ir_dev_num ; i++) { + switch (demod->r_devs[i]->modulation) { + case OOK_PWM_D: + pwm_d_decode(demod, demod->r_devs[i], demod->f_buf, len/2); + break; + case OOK_PWM_P: + pwm_p_decode(demod, demod->r_devs[i], demod->f_buf, len/2); + break; + default: + fprintf(stderr, "Unknown modulation %d in protocol!\n", demod->r_devs[i]->modulation); + } + } + } + + if (demod->save_data) { + if (fwrite(demod->f_buf, 1, len>>demod->decimation_level, demod->file) != len>>demod->decimation_level) { + fprintf(stderr, "Short write, samples lost, exiting!\n"); + rtlsdr_cancel_async(dev); + } + } + + if (bytes_to_read > 0) + bytes_to_read -= len; + + if(frequencies>1) { + time_t rawtime; + time(&rawtime); + if(difftime(rawtime, rawtime_old)>DEFAULT_HOP_TIME || events>=DEFAULT_HOP_EVENTS) { + rawtime_old=rawtime; + events=0; + do_exit_async=1; + rtlsdr_cancel_async(dev); + } + } + } +} + +int main(int argc, char **argv) +{ +#ifndef _WIN32 + struct sigaction sigact; +#endif + char *filename = NULL; + char *test_mode_file = NULL; + FILE *test_mode; + int n_read; + int r, opt; + int i, gain = 0; + int sync_mode = 0; + int ppm_error = 0; + struct dm_state* demod; + uint8_t *buffer; + uint32_t dev_index = 0; + int frequency_current=0; + uint32_t out_block_size = DEFAULT_BUF_LENGTH; + int device_count; + char vendor[256], product[256], serial[256]; + + demod = malloc(sizeof(struct dm_state)); + memset(demod,0,sizeof(struct dm_state)); + + /* initialize tables */ + calc_squares(); + + demod->f_buf = &demod->filter_buffer[FILTER_ORDER]; + demod->decimation_level = DEFAULT_DECIMATION_LEVEL; + demod->level_limit = DEFAULT_LEVEL_LIMIT; + + + while ((opt = getopt(argc, argv, "x:z:p:Dtam:r:c:l:d:f:g:s:b:n:S::")) != -1) { + switch (opt) { + case 'd': + dev_index = atoi(optarg); + break; + case 'f': + if(frequencieslevel_limit = (uint32_t)atof(optarg); + break; + case 'n': + bytes_to_read = (uint32_t)atof(optarg) * 2; + break; + case 'c': + demod->decimation_level = (uint32_t)atof(optarg); + break; + case 'a': + demod->analyze = 1; + break; + case 'r': + test_mode_file = optarg; + break; + case 't': + demod->signal_grabber = 1; + break; + case 'm': + demod->debug_mode = atoi(optarg); + break; + case 'S': + sync_mode = 1; + break; + case 'D': + debug_output = 1; + break; + case 'z': + override_short = atoi(optarg); + break; + case 'x': + override_long = atoi(optarg); + break; + default: + usage(); + break; + } + } + + /* init protocols somewhat ok */ + register_protocol(demod, &rubicson); + register_protocol(demod, &prologue); + register_protocol(demod, &silvercrest); +// register_protocol(demod, &generic_hx2262); +// register_protocol(demod, &technoline_ws9118); + register_protocol(demod, &elv_em1000); + register_protocol(demod, &elv_ws2000); + register_protocol(demod, &waveman); + register_protocol(demod, &steffen); + register_protocol(demod, &acurite5n1); + register_protocol(demod, &wh2); + + if (argc <= optind-1) { + usage(); + } else { + filename = argv[optind]; + } + + if(out_block_size < MINIMAL_BUF_LENGTH || + out_block_size > MAXIMAL_BUF_LENGTH ){ + fprintf(stderr, + "Output block size wrong value, falling back to default\n"); + fprintf(stderr, + "Minimal length: %u\n", MINIMAL_BUF_LENGTH); + fprintf(stderr, + "Maximal length: %u\n", MAXIMAL_BUF_LENGTH); + out_block_size = DEFAULT_BUF_LENGTH; + } + + buffer = malloc(out_block_size * sizeof(uint8_t)); + + device_count = rtlsdr_get_device_count(); + if (!device_count) { + fprintf(stderr, "No supported devices found.\n"); + if (!test_mode_file) + exit(1); + } + + fprintf(stderr, "Found %d device(s):\n", device_count); + for (i = 0; i < device_count; i++) { + rtlsdr_get_device_usb_strings(i, vendor, product, serial); + fprintf(stderr, " %d: %s, %s, SN: %s\n", i, vendor, product, serial); + } + fprintf(stderr, "\n"); + + fprintf(stderr, "Using device %d: %s\n", + dev_index, rtlsdr_get_device_name(dev_index)); + + r = rtlsdr_open(&dev, dev_index); + if (r < 0) { + fprintf(stderr, "Failed to open rtlsdr device #%d.\n", dev_index); + if (!test_mode_file) + exit(1); + } +#ifndef _WIN32 + sigact.sa_handler = sighandler; + sigemptyset(&sigact.sa_mask); + sigact.sa_flags = 0; + sigaction(SIGINT, &sigact, NULL); + sigaction(SIGTERM, &sigact, NULL); + sigaction(SIGQUIT, &sigact, NULL); + sigaction(SIGPIPE, &sigact, NULL); +#else + SetConsoleCtrlHandler( (PHANDLER_ROUTINE) sighandler, TRUE ); +#endif + /* Set the sample rate */ + r = rtlsdr_set_sample_rate(dev, samp_rate); + if (r < 0) + fprintf(stderr, "WARNING: Failed to set sample rate.\n"); + else + fprintf(stderr, "Sample rate set to %d.\n", rtlsdr_get_sample_rate(dev)); // Unfortunately, doesn't return real rate + + fprintf(stderr, "Sample rate decimation set to %d. %d->%d\n",demod->decimation_level, samp_rate, samp_rate>>demod->decimation_level); + fprintf(stderr, "Bit detection level set to %d.\n", demod->level_limit); + + if (0 == gain) { + /* Enable automatic gain */ + r = rtlsdr_set_tuner_gain_mode(dev, 0); + if (r < 0) + fprintf(stderr, "WARNING: Failed to enable automatic gain.\n"); + else + fprintf(stderr, "Tuner gain set to Auto.\n"); + } else { + /* Enable manual gain */ + r = rtlsdr_set_tuner_gain_mode(dev, 1); + if (r < 0) + fprintf(stderr, "WARNING: Failed to enable manual gain.\n"); + + /* Set the tuner gain */ + r = rtlsdr_set_tuner_gain(dev, gain); + if (r < 0) + fprintf(stderr, "WARNING: Failed to set tuner gain.\n"); + else + fprintf(stderr, "Tuner gain set to %f dB.\n", gain/10.0); + } + + r = rtlsdr_set_freq_correction(dev, ppm_error); + + demod->save_data = 1; + if (!filename) { + demod->save_data = 0; + } else if(strcmp(filename, "-") == 0) { /* Write samples to stdout */ + demod->file = stdout; +#ifdef _WIN32 + _setmode(_fileno(stdin), _O_BINARY); +#endif + } else { + demod->file = fopen(filename, "wb"); + if (!demod->file) { + fprintf(stderr, "Failed to open %s\n", filename); + goto out; + } + } + + if (demod->signal_grabber) + demod->sg_buf = malloc(SIGNAL_GRABBER_BUFFER); + + if (test_mode_file) { + int i = 0; + unsigned char test_mode_buf[DEFAULT_BUF_LENGTH]; + fprintf(stderr, "Test mode active. Reading samples from file: %s\n",test_mode_file); + test_mode = fopen(test_mode_file, "r"); + if (!test_mode) { + fprintf(stderr, "Opening file: %s failed!\n",test_mode_file); + goto out; + } + while(fread(test_mode_buf, 131072, 1, test_mode) != 0) { + rtlsdr_callback(test_mode_buf, 131072, demod); + i++; + } + //Always classify a signal at the end of the file + classify_signal(); + fprintf(stderr, "Test mode file issued %d packets\n", i); + fprintf(stderr, "Filter coeffs used:\n"); + fprintf(stderr, "a: %d %d\n", a[0], a[1]); + fprintf(stderr, "b: %d %d\n", b[0], b[1]); + exit(0); + } + + /* Reset endpoint before we start reading from it (mandatory) */ + r = rtlsdr_reset_buffer(dev); + if (r < 0) + fprintf(stderr, "WARNING: Failed to reset buffers.\n"); + + if (sync_mode) { + fprintf(stderr, "Reading samples in sync mode...\n"); + while (!do_exit) { + r = rtlsdr_read_sync(dev, buffer, out_block_size, &n_read); + if (r < 0) { + fprintf(stderr, "WARNING: sync read failed.\n"); + break; + } + + if ((bytes_to_read > 0) && (bytes_to_read < (uint32_t)n_read)) { + n_read = bytes_to_read; + do_exit = 1; + } + + if (fwrite(buffer, 1, n_read, demod->file) != (size_t)n_read) { + fprintf(stderr, "Short write, samples lost, exiting!\n"); + break; + } + + if ((uint32_t)n_read < out_block_size) { + fprintf(stderr, "Short read, samples lost, exiting!\n"); + break; + } + + if (bytes_to_read > 0) + bytes_to_read -= n_read; + } + } else { + if(frequencies==0) { + frequency[0] = DEFAULT_FREQUENCY; + frequencies=1; + } else { + time(&rawtime_old); + } + fprintf(stderr, "Reading samples in async mode...\n"); + while(!do_exit) { + /* Set the frequency */ + r = rtlsdr_set_center_freq(dev, frequency[frequency_current]); + if (r < 0) + fprintf(stderr, "WARNING: Failed to set center freq.\n"); + else + fprintf(stderr, "Tuned to %u Hz.\n", rtlsdr_get_center_freq(dev)); + r = rtlsdr_read_async(dev, rtlsdr_callback, (void *)demod, + DEFAULT_ASYNC_BUF_NUMBER, out_block_size); + do_exit_async=0; + frequency_current++; + if(frequency_current>frequencies-1) frequency_current=0; + } + } + + if (do_exit) + fprintf(stderr, "\nUser cancel, exiting...\n"); + else + fprintf(stderr, "\nLibrary error %d, exiting...\n", r); + + if (demod->file && (demod->file != stdout)) + fclose(demod->file); + + for (i=0 ; ir_dev_num ; i++) + free(demod->r_devs[i]); + + if (demod->signal_grabber) + free(demod->sg_buf); + + if(demod) + free(demod); + + rtlsdr_close(dev); + free (buffer); +out: + return r >= 0 ? r : -r; +} diff --git a/src/rtl_adsb.c b/src/rtl_adsb.c new file mode 100644 index 0000000..2fb7418 --- /dev/null +++ b/src/rtl_adsb.c @@ -0,0 +1,512 @@ +/* + * rtl-sdr, turns your Realtek RTL2832 based DVB dongle into a SDR receiver + * Copyright (C) 2012 by Steve Markgraf + * Copyright (C) 2012 by Hoernchen + * Copyright (C) 2012 by Kyle Keen + * Copyright (C) 2012 by Youssef Touil + * Copyright (C) 2012 by Ian Gilmour + * + * 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, see . + */ + + +#include +#include +#include +#include +#include +#include + +#ifndef _WIN32 +#include +#else +#include +#include +#include +#include "getopt/getopt.h" +#endif + +#include +#include +#include + +#include "rtl-sdr.h" + +#ifdef _WIN32 +#define sleep Sleep +#define round(x) (x > 0.0 ? floor(x + 0.5): ceil(x - 0.5)) +#endif + +#define ADSB_RATE 2000000 +#define ADSB_FREQ 1090000000 +#define DEFAULT_ASYNC_BUF_NUMBER 12 +#define DEFAULT_BUF_LENGTH (16 * 16384) +#define AUTO_GAIN -100 + +static pthread_t demod_thread; +static sem_t data_ready; +static volatile int do_exit = 0; +static rtlsdr_dev_t *dev = NULL; + +/* look up table, could be made smaller */ +uint8_t pyth[129][129]; + +/* todo, bundle these up in a struct */ +uint8_t *buffer; +int verbose_output = 0; +int short_output = 0; +double quality = 1.0; +int allowed_errors = 5; +FILE *file; +int adsb_frame[14]; +#define preamble_len 16 +#define long_frame 112 +#define short_frame 56 + +void usage(void) +{ + fprintf(stderr, + "rtl_adsb, a simple ADS-B decoder\n\n" + "Use:\trtl_adsb [-R] [-g gain] [-p ppm] [output file]\n" + "\t[-d device_index (default: 0)]\n" + "\t[-V verbove output (default: off)]\n" + "\t[-S show short frames (default: off)]\n" + "\t[-Q quality (0: no sanity checks, 0.5: half bit, 1: one bit (default), 2: two bits)]\n" + "\t[-e allowed_errors (default: 5)]\n" + "\t[-g tuner_gain (default: automatic)]\n" + "\t[-p ppm_error (default: 0)]\n" + "\tfilename (a '-' dumps samples to stdout)\n" + "\t (omitting the filename also uses stdout)\n\n" + "Streaming with netcat:\n" + "\trtl_adsb | netcat -lp 8080\n" + "\twhile true; do rtl_adsb | nc -lp 8080; done\n" + "Streaming with socat:\n" + "\trtl_adsb | socat -u - TCP4:sdrsharp.com:47806\n" + "\n"); + exit(1); +} + +#ifdef _WIN32 +BOOL WINAPI +sighandler(int signum) +{ + if (CTRL_C_EVENT == signum) { + fprintf(stderr, "Signal caught, exiting!\n"); + do_exit = 1; + rtlsdr_cancel_async(dev); + return TRUE; + } + return FALSE; +} +#else +static void sighandler(int signum) +{ + fprintf(stderr, "Signal caught, exiting!\n"); + do_exit = 1; + rtlsdr_cancel_async(dev); +} +#endif + +void display(int *frame, int len) +{ + int i, df; + if (!short_output && len <= short_frame) { + return;} + df = (frame[0] >> 3) & 0x1f; + if (quality == 0.0 && !(df==11 || df==17 || df==18 || df==19)) { + return;} + fprintf(file, "*"); + for (i=0; i<((len+7)/8); i++) { + fprintf(file, "%02x", frame[i]);} + fprintf(file, ";\r\n"); + if (!verbose_output) { + return;} + fprintf(file, "DF=%i CA=%i\n", df, frame[0] & 0x07); + fprintf(file, "ICAO Address=%06x\n", frame[1] << 16 | frame[2] << 8 | frame[3]); + if (len <= short_frame) { + return;} + fprintf(file, "PI=0x%06x\n", frame[11] << 16 | frame[12] << 8 | frame[13]); + fprintf(file, "Type Code=%i S.Type/Ant.=%x\n", (frame[4] >> 3) & 0x1f, frame[4] & 0x07); + fprintf(file, "--------------\n"); +} + +void pyth_precompute(void) +{ + int x, y; + double scale = 1.408 ; /* use the full 8 bits */ + for (x=0; x<129; x++) { + for (y=0; y<129; y++) { + pyth[x][y] = (uint8_t)round(scale * sqrt(x*x + y*y)); + }} +} + +inline uint8_t abs8(uint8_t x) +/* do not subtract 128 from the raw iq, this handles it */ +{ + if (x >= 128) { + return x - 128;} + return 128 - x; +} + +int magnitute(uint8_t *buf, int len) +/* takes i/q, changes buf in place, returns new len */ +{ + int i; + for (i=0; i b; + bit = c > d; + + if (quality == 0.0) { + return bit;} + + if (quality == 0.5) { + if ( bit && bit_p && b > c) { + return 255;} + if (!bit && !bit_p && b < c) { + return 255;} + return bit; + } + + if (quality == 1.0) { + if ( bit && bit_p && c > b) { + return 1;} + if ( bit && !bit_p && d < b) { + return 1;} + if (!bit && bit_p && d > b) { + return 0;} + if (!bit && !bit_p && c < b) { + return 0;} + return 255; + } + + if ( bit && bit_p && c > b && d < a) { + return 1;} + if ( bit && !bit_p && c > a && d < b) { + return 1;} + if (!bit && bit_p && c < a && d > b) { + return 0;} + if (!bit && !bit_p && c < b && d > a) { + return 0;} + return 255; +} + +inline uint8_t min8(uint8_t a, uint8_t b) +{ + return ab ? a : b; +} + +inline int preamble(uint8_t *buf, int len, int i) +/* returns 0/1 for preamble at index i */ +{ + int i2; + uint8_t low = 0; + uint8_t high = 255; + for (i2=0; i2 allowed_errors) { + buf[i2] = 255; + break; + } else { + bit = a > b; + /* these don't have to match the bit */ + a = 0; + b = 255; + } + } + buf[i] = buf[i+1] = 254; /* to be overwritten */ + buf[i2] = bit; + } + } +} + +void messages(uint8_t *buf, int len) +{ + int i, i2, start, preamble_found; + int data_i, index, shift, frame_len; + // todo, allow wrap across buffers + for (i=0; i 1) { + continue;} + frame_len = long_frame; + data_i = 0; + for (index=0; index<14; index++) { + adsb_frame[index] = 0;} + for(; i= 0 ? r : -r; +} + diff --git a/src/rtl_eeprom.c b/src/rtl_eeprom.c new file mode 100644 index 0000000..35191de --- /dev/null +++ b/src/rtl_eeprom.c @@ -0,0 +1,423 @@ +/* + * rtl-sdr, turns your Realtek RTL2832 based DVB dongle into a SDR receiver + * rtl_eeprom, EEPROM modification tool + * Copyright (C) 2012 by Steve Markgraf + * + * 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, see . + */ + +#include +#include +#include + +#ifndef _WIN32 +#include +#else +#include +#include "getopt/getopt.h" +#endif + +#include "rtl-sdr.h" + +#define EEPROM_SIZE 256 +#define MAX_STR_SIZE 256 +#define STR_OFFSET 0x09 + +static rtlsdr_dev_t *dev = NULL; + +typedef struct rtlsdr_config { + uint16_t vendor_id; + uint16_t product_id; + char manufacturer[MAX_STR_SIZE]; + char product[MAX_STR_SIZE]; + char serial[MAX_STR_SIZE]; + int have_serial; + int enable_ir; + int remote_wakeup; +} rtlsdr_config_t; + +void dump_config(rtlsdr_config_t *conf) +{ + fprintf(stderr, "__________________________________________\n"); + fprintf(stderr, "Vendor ID:\t\t0x%04x\n", conf->vendor_id); + fprintf(stderr, "Product ID:\t\t0x%04x\n", conf->product_id); + fprintf(stderr, "Manufacturer:\t\t%s\n", conf->manufacturer); + fprintf(stderr, "Product:\t\t%s\n", conf->product); + fprintf(stderr, "Serial number:\t\t%s\n", conf->serial); + fprintf(stderr, "Serial number enabled:\t"); + fprintf(stderr, conf->have_serial ? "yes\n": "no\n"); + fprintf(stderr, "IR endpoint enabled:\t"); + fprintf(stderr, conf->enable_ir ? "yes\n": "no\n"); + fprintf(stderr, "Remote wakeup enabled:\t"); + fprintf(stderr, conf->remote_wakeup ? "yes\n": "no\n"); + fprintf(stderr, "__________________________________________\n"); +} + +void usage(void) +{ + fprintf(stderr, + "rtl_eeprom, an EEPROM programming tool for " + "RTL2832 based DVB-T receivers\n\n" + "Usage:\n" + "\t[-d device_index (default: 0)]\n" + "\t[-m set manufacturer string]\n" + "\t[-p set product string]\n" + "\t[-s set serial number string]\n" + "\t[-i <0,1> disable/enable IR-endpoint]\n" + "\t[-g generate default config and write to device]\n" + "\t[ can be one of:]\n" + "\t[ realtek\t\tRealtek default (as without EEPROM)]\n" + "\t[ realtek_oem\t\tRealtek default OEM with EEPROM]\n" + "\t[ noxon\t\tTerratec NOXON DAB Stick]\n" + "\t[ terratec_black\tTerratec T Stick Black]\n" + "\t[ terratec_plus\tTerratec T Stick+ (DVB-T/DAB)]\n" + "\t[-w write dumped file to device]\n" + "\t[-r dump EEPROM to file]\n" + "\t[-h display this help text]\n" + "\nUse on your own risk, especially -w!\n"); + exit(1); +} + +int get_string_descriptor(int pos, uint8_t *data, char *str) +{ + int len, i, j = 0; + + len = data[pos]; + + if (data[pos + 1] != 0x03) + fprintf(stderr, "Error: invalid string descriptor!\n"); + + for (i = 2; i < len; i += 2) + str[j++] = data[pos + i]; + + str[j] = 0x00; + + return pos + i; +} + +int set_string_descriptor(int pos, uint8_t *data, char *str) +{ + int i = 0, j = 2; + + if (pos < 0) + return -1; + + data[pos + 1] = 0x03; + + while (str[i] != 0x00) { + if ((pos + j) >= 78) { + fprintf(stderr, "Error: string too long, truncated!\n"); + return -1; + } + data[pos + j++] = str[i++]; + data[pos + j++] = 0x00; + } + + data[pos] = j; + + return pos + j; +} + +int parse_eeprom_to_conf(rtlsdr_config_t *conf, uint8_t *dat) +{ + int pos; + + if ((dat[0] != 0x28) || (dat[1] != 0x32)) + fprintf(stderr, "Error: invalid RTL2832 EEPROM header!\n"); + + conf->vendor_id = dat[2] | (dat[3] << 8); + conf->product_id = dat[4] | (dat[5] << 8); + conf->have_serial = (dat[6] == 0xa5) ? 1 : 0; + conf->remote_wakeup = (dat[7] & 0x01) ? 1 : 0; + conf->enable_ir = (dat[7] & 0x02) ? 1 : 0; + + pos = get_string_descriptor(STR_OFFSET, dat, conf->manufacturer); + pos = get_string_descriptor(pos, dat, conf->product); + get_string_descriptor(pos, dat, conf->serial); + + return 0; +} + +int gen_eeprom_from_conf(rtlsdr_config_t *conf, uint8_t *dat) +{ + int pos; + + dat[0] = 0x28; + dat[1] = 0x32; + dat[2] = conf->vendor_id & 0xff; + dat[3] = (conf->vendor_id >> 8) & 0xff ; + dat[4] = conf->product_id & 0xff; + dat[5] = (conf->product_id >> 8) & 0xff; + dat[6] = conf->have_serial ? 0xa5 : 0x00; + dat[7] = 0x14; + dat[7] |= conf->remote_wakeup ? 0x01 : 0x00; + dat[7] |= conf->enable_ir ? 0x02 : 0x00; + dat[8] = 0x02; + + pos = set_string_descriptor(STR_OFFSET, dat, conf->manufacturer); + pos = set_string_descriptor(pos, dat, conf->product); + pos = set_string_descriptor(pos, dat, conf->serial); + + dat[78] = 0x00; /* length of IR config */ + + return pos; +} + +enum configs { + CONF_NONE = 0, + REALTEK, + REALTEK_EEPROM, + TERRATEC_NOXON, + TERRATEC_T_BLACK, + TERRATEC_T_PLUS, +}; + +void gen_default_conf(rtlsdr_config_t *conf, int config) +{ + switch (config) { + case REALTEK: + fprintf(stderr, "Realtek default (as without EEPROM)\n"); + conf->vendor_id = 0x0bda; + conf->product_id = 0x2832; + strcpy(conf->manufacturer, "Generic"); + strcpy(conf->product, "RTL2832U DVB-T"); + strcpy(conf->serial, "0"); + conf->have_serial = 1; + conf->enable_ir = 0; + conf->remote_wakeup = 1; + break; + case REALTEK_EEPROM: + fprintf(stderr, "Realtek default OEM with EEPROM\n"); + conf->vendor_id = 0x0bda; + conf->product_id = 0x2838; + strcpy(conf->manufacturer, "Realtek"); + strcpy(conf->product, "RTL2838UHIDIR"); + strcpy(conf->serial, "00000001"); + conf->have_serial = 1; + conf->enable_ir = 1; + conf->remote_wakeup = 0; + break; + case TERRATEC_NOXON: + fprintf(stderr, "Terratec NOXON DAB Stick\n"); + conf->vendor_id = 0x0ccd; + conf->product_id = 0x00b3; + strcpy(conf->manufacturer, "NOXON"); + strcpy(conf->product, "DAB Stick"); + strcpy(conf->serial, "0"); + conf->have_serial = 1; + conf->enable_ir = 0; + conf->remote_wakeup = 1; + break; + case TERRATEC_T_BLACK: + fprintf(stderr, "Terratec T Stick Black\n"); + conf->vendor_id = 0x0ccd; + conf->product_id = 0x00a9; + strcpy(conf->manufacturer, "Realtek"); + strcpy(conf->product, "RTL2838UHIDIR"); + strcpy(conf->serial, "00000001"); + conf->have_serial = 1; + conf->enable_ir = 1; + conf->remote_wakeup = 0; + break; + case TERRATEC_T_PLUS: + fprintf(stderr, "Terratec ran T Stick+\n"); + conf->vendor_id = 0x0ccd; + conf->product_id = 0x00d7; + strcpy(conf->manufacturer, "Realtek"); + strcpy(conf->product, "RTL2838UHIDIR"); + strcpy(conf->serial, "00000001"); + conf->have_serial = 1; + conf->enable_ir = 1; + conf->remote_wakeup = 0; + break; + default: + break; + }; +} + +int main(int argc, char **argv) +{ + int i, r, opt; + uint32_t dev_index = 0; + int device_count; + char *filename = NULL; + FILE *file = NULL; + char *manuf_str = NULL; + char *product_str = NULL; + char *serial_str = NULL; + uint8_t buf[EEPROM_SIZE]; + rtlsdr_config_t conf; + int flash_file = 0; + int default_config = 0; + int change = 0; + int ir_endpoint = 0; + char ch; + + while ((opt = getopt(argc, argv, "d:m:p:s:i:g:w:r:h?")) != -1) { + switch (opt) { + case 'd': + dev_index = atoi(optarg); + break; + case 'm': + manuf_str = optarg; + change = 1; + break; + case 'p': + product_str = optarg; + change = 1; + break; + case 's': + serial_str = optarg; + change = 1; + break; + case 'i': + ir_endpoint = (atoi(optarg) > 0) ? 1 : -1; + change = 1; + break; + case 'g': + if (!strcmp(optarg, "realtek")) + default_config = REALTEK; + else if (!strcmp(optarg, "realtek_oem")) + default_config = REALTEK_EEPROM; + else if (!strcmp(optarg, "noxon")) + default_config = TERRATEC_NOXON; + else if (!strcmp(optarg, "terratec_black")) + default_config = TERRATEC_T_BLACK; + else if (!strcmp(optarg, "terratec_plus")) + default_config = TERRATEC_T_PLUS; + + if (default_config != CONF_NONE) + change = 1; + break; + case 'w': + flash_file = 1; + change = 1; + case 'r': + filename = optarg; + break; + default: + usage(); + break; + } + } + + device_count = rtlsdr_get_device_count(); + if (!device_count) { + fprintf(stderr, "No supported devices found.\n"); + exit(1); + } + + fprintf(stderr, "Found %d device(s):\n", device_count); + for (i = 0; i < device_count; i++) + fprintf(stderr, " %d: %s\n", i, rtlsdr_get_device_name(i)); + fprintf(stderr, "\n"); + + fprintf(stderr, "Using device %d: %s\n", + dev_index, + rtlsdr_get_device_name(dev_index)); + + r = rtlsdr_open(&dev, dev_index); + if (r < 0) { + fprintf(stderr, "Failed to open rtlsdr device #%d.\n", dev_index); + exit(1); + } + + fprintf(stderr, "\n"); + + r = rtlsdr_read_eeprom(dev, buf, 0, EEPROM_SIZE); + if (r < 0) { + if (r == -3) + fprintf(stderr, "No EEPROM has been found.\n"); + else + fprintf(stderr, "Failed to read EEPROM, err %i.\n", r); + goto exit; + } + + if (r < 0) + return -1; + + fprintf(stderr, "Current configuration:\n"); + parse_eeprom_to_conf(&conf, buf); + dump_config(&conf); + + if (filename) { + file = fopen(filename, flash_file ? "rb" : "wb"); + if (!file) { + fprintf(stderr, "Error opening file!\n"); + goto exit; + } + if (flash_file) { + if (fread(buf, 1, sizeof(buf), file) != sizeof(buf)) + fprintf(stderr, "Error reading file!\n"); + } else { + if (fwrite(buf, 1, sizeof(buf), file) != sizeof(buf)) + fprintf(stderr, "Short write, exiting!\n"); + else + fprintf(stderr, "\nDump to %s successful.\n", filename); + } + } + + if (manuf_str) + strncpy((char*)&conf.manufacturer, manuf_str, MAX_STR_SIZE); + + if (product_str) + strncpy((char*)&conf.product, product_str, MAX_STR_SIZE); + + if (serial_str) { + conf.have_serial = 1; + strncpy((char*)&conf.serial, serial_str, MAX_STR_SIZE); + } + + if (ir_endpoint != 0) + conf.enable_ir = (ir_endpoint > 0) ? 1 : 0; + + if (!change) + goto exit; + + fprintf(stderr, "\nNew configuration:\n"); + + if (default_config != CONF_NONE) + gen_default_conf(&conf, default_config); + + if (!flash_file) { + if (gen_eeprom_from_conf(&conf, buf) < 0) + goto exit; + } + + parse_eeprom_to_conf(&conf, buf); + dump_config(&conf); + + fprintf(stderr, "Write new configuration to device [y/n]? "); + + while ((ch = getchar())) { + if (ch != 'y') + goto exit; + else + break; + } + + r = rtlsdr_write_eeprom(dev, buf, 0, flash_file ? EEPROM_SIZE : 128); + if (r < 0) + fprintf(stderr, "Error while writing EEPROM: %i\n", r); + else + fprintf(stderr, "Configuration successfully written.\n"); + +exit: + if (file) + fclose(file); + + rtlsdr_close(dev); + + return r >= 0 ? r : -r; +} diff --git a/src/rtl_fm.c b/src/rtl_fm.c new file mode 100644 index 0000000..45f8e06 --- /dev/null +++ b/src/rtl_fm.c @@ -0,0 +1,838 @@ +/* + * rtl-sdr, turns your Realtek RTL2832 based DVB dongle into a SDR receiver + * Copyright (C) 2012 by Steve Markgraf + * Copyright (C) 2012 by Hoernchen + * Copyright (C) 2012 by Kyle Keen + * + * 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, see . + */ + + +/* + * written because people could not do real time + * FM demod on Atom hardware with GNU radio + * based on rtl_sdr.c and rtl_tcp.c + * todo: realtime ARMv5 + * remove float math (disqualifies complex.h) + * in-place array operations + * sanity checks + * nicer FIR than square + * scale squelch to other input parameters + * test all the demodulations + * pad output on hop + * nearest gain approx + * frequency ranges could be stored better + */ + +#include +#include +#include +#include +#include +#include + +#ifndef _WIN32 +#include +#else +#include +#include +#include +#include "getopt/getopt.h" +#define usleep(x) Sleep(x/1000) +#define round(x) (x > 0.0 ? floor(x + 0.5): ceil(x - 0.5)) +#endif + +#include +#include +#include + +#include "rtl-sdr.h" + +#define DEFAULT_SAMPLE_RATE 24000 +#define DEFAULT_ASYNC_BUF_NUMBER 32 +#define DEFAULT_BUF_LENGTH (1 * 16384) +#define MAXIMUM_OVERSAMPLE 16 +#define MAXIMUM_BUF_LENGTH (MAXIMUM_OVERSAMPLE * DEFAULT_BUF_LENGTH) +#define AUTO_GAIN -100 + +static pthread_t demod_thread; +static sem_t data_ready; +static int do_exit = 0; +static rtlsdr_dev_t *dev = NULL; +static int lcm_post[17] = {1,1,1,3,1,5,3,7,1,9,5,11,3,13,7,15,1}; + +struct fm_state +{ + int now_r; + int now_j; + int pre_r; + int pre_j; + int prev_index; + int downsample; /* min 1, max 256 */ + int post_downsample; + int output_scale; + int squelch_level; + int conseq_squelch; + int squelch_hits; + int terminate_on_squelch; + int exit_flag; + uint8_t buf[MAXIMUM_BUF_LENGTH]; + uint32_t buf_len; + int signal[MAXIMUM_BUF_LENGTH]; /* 16 bit signed i/q pairs */ + int16_t signal2[MAXIMUM_BUF_LENGTH]; /* signal has lowpass, signal2 has demod */ + int signal_len; + int signal2_len; + FILE *file; + int edge; + uint32_t freqs[1000]; + int freq_len; + int freq_now; + uint32_t sample_rate; + int output_rate; + int fir_enable; + int fir[256]; /* fir_len == downsample */ + int fir_sum; + int custom_atan; + int deemph; + int deemph_a; + int now_lpr; + int prev_lpr_index; + void (*mode_demod)(struct fm_state*); +}; + +void usage(void) +{ + fprintf(stderr, + "rtl_fm, a simple narrow band FM demodulator for RTL2832 based DVB-T receivers\n\n" + "Use:\trtl_fm -f freq [-options] [filename]\n" + "\t-f frequency_to_tune_to [Hz]\n" + "\t (use multiple -f for scanning, requires squelch)\n" + "\t (ranges supported, -f 118M:137M:25k)\n" + "\t[-s sample_rate (default: 24k)]\n" + "\t[-d device_index (default: 0)]\n" + "\t[-g tuner_gain (default: automatic)]\n" + "\t[-l squelch_level (default: 0/off)]\n" + "\t[-o oversampling (default: 1, 4 recommended)]\n" + "\t[-p ppm_error (default: 0)]\n" + "\t[-E sets lower edge tuning (default: center)]\n" + "\t[-N enables NBFM mode (default: on)]\n" + "\t[-W enables WBFM mode (default: off)]\n" + "\t (-N -s 170k -o 4 -A -r 32k -l 0 -D)\n" + "\tfilename (a '-' dumps samples to stdout)\n" + "\t (omitting the filename also uses stdout)\n\n" + "Experimental options:\n" + "\t[-r output_rate (default: same as -s)]\n" + "\t[-t squelch_delay (default: 20)]\n" + "\t (+values will mute/scan, -values will exit)\n" + "\t[-M enables AM mode (default: off)]\n" + "\t[-L enables LSB mode (default: off)]\n" + "\t[-U enables USB mode (default: off)]\n" + //"\t[-D enables DSB mode (default: off)]\n" + "\t[-R enables raw mode (default: off, 2x16 bit output)]\n" + "\t[-F enables high quality FIR (default: off/square)]\n" + "\t[-D enables de-emphasis (default: off)]\n" + "\t[-A enables high speed arctan (default: off)]\n\n" + "Produces signed 16 bit ints, use Sox or aplay to hear them.\n" + "\trtl_fm ... - | play -t raw -r 24k -e signed-integer -b 16 -c 1 -V1 -\n" + "\t | aplay -r 24k -f S16_LE -t raw -c 1\n" + "\t -s 22.5k - | multimon -t raw /dev/stdin\n\n"); + exit(1); +} + +#ifdef _WIN32 +BOOL WINAPI +sighandler(int signum) +{ + if (CTRL_C_EVENT == signum) { + fprintf(stderr, "Signal caught, exiting!\n"); + do_exit = 1; + rtlsdr_cancel_async(dev); + return TRUE; + } + return FALSE; +} +#else +static void sighandler(int signum) +{ + fprintf(stderr, "Signal caught, exiting!\n"); + do_exit = 1; + rtlsdr_cancel_async(dev); +} +#endif + +void rotate_90(unsigned char *buf, uint32_t len) +/* 90 rotation is 1+0j, 0+1j, -1+0j, 0-1j + or [0, 1, -3, 2, -4, -5, 7, -6] */ +{ + uint32_t i; + unsigned char tmp; + for (i=0; inow_r += ((int)buf[i] - 128); + fm->now_j += ((int)buf[i+1] - 128); + i += 2; + fm->prev_index++; + if (fm->prev_index < fm->downsample) { + continue; + } + fm->signal[i2] = fm->now_r * fm->output_scale; + fm->signal[i2+1] = fm->now_j * fm->output_scale; + fm->prev_index = 0; + fm->now_r = 0; + fm->now_j = 0; + i2 += 2; + } + fm->signal_len = i2; +} + +void build_fir(struct fm_state *fm) +/* for now, a simple triangle + * fancy FIRs are equally expensive, so use one */ +/* point = sum(sample[i] * fir[i] * fir_len / fir_sum) */ +{ + int i, len; + len = fm->downsample; + for(i = 0; i < (len/2); i++) { + fm->fir[i] = i; + } + for(i = len-1; i >= (len/2); i--) { + fm->fir[i] = len - i; + } + fm->fir_sum = 0; + for(i = 0; i < len; i++) { + fm->fir_sum += fm->fir[i]; + } +} + +void low_pass_fir(struct fm_state *fm, unsigned char *buf, uint32_t len) +/* perform an arbitrary FIR, doubles CPU use */ +// possibly bugged, or overflowing +{ + int i=0, i2=0, i3=0; + while (i < (int)len) { + i3 = fm->prev_index; + fm->now_r += ((int)buf[i] - 128) * fm->fir[i3] * fm->downsample / fm->fir_sum; + fm->now_j += ((int)buf[i+1] - 128) * fm->fir[i3] * fm->downsample / fm->fir_sum; + i += 2; + fm->prev_index++; + if (fm->prev_index < fm->downsample) { + continue; + } + fm->signal[i2] = fm->now_r * fm->output_scale; + fm->signal[i2+1] = fm->now_j * fm->output_scale; + fm->prev_index = 0; + fm->now_r = 0; + fm->now_j = 0; + i2 += 2; + } + fm->signal_len = i2; +} + +int low_pass_simple(int16_t *signal2, int len, int step) +// no wrap around, length must be multiple of step +{ + int i, i2, sum; + for(i=0; i < len; i+=step) { + sum = 0; + for(i2=0; i2sample_rate / fm->post_downsample; + int slow = fm->output_rate; + while (i < fm->signal2_len) { + fm->now_lpr += fm->signal2[i]; + i++; + fm->prev_lpr_index += slow; + if (fm->prev_lpr_index < fast) { + continue; + } + fm->signal2[i2] = (int16_t)(fm->now_lpr / (fast/slow)); + fm->prev_lpr_index -= fast; + fm->now_lpr = 0; + i2 += 1; + } + fm->signal2_len = i2; +} + +/* define our own complex math ops + because ARMv5 has no hardware float */ + +void multiply(int ar, int aj, int br, int bj, int *cr, int *cj) +{ + *cr = ar*br - aj*bj; + *cj = aj*br + ar*bj; +} + +int polar_discriminant(int ar, int aj, int br, int bj) +{ + int cr, cj; + double angle; + multiply(ar, aj, br, -bj, &cr, &cj); + angle = atan2((double)cj, (double)cr); + return (int)(angle / 3.14159 * (1<<14)); +} + +int fast_atan2(int y, int x) +/* pre scaled for int16 */ +{ + int yabs, angle; + int pi4=(1<<12), pi34=3*(1<<12); // note pi = 1<<14 + if (x==0 && y==0) { + return 0; + } + yabs = y; + if (yabs < 0) { + yabs = -yabs; + } + if (x >= 0) { + angle = pi4 - pi4 * (x-yabs) / (x+yabs); + } else { + angle = pi34 - pi4 * (x+yabs) / (yabs-x); + } + if (y < 0) { + return -angle; + } + return angle; +} + +int polar_disc_fast(int ar, int aj, int br, int bj) +{ + int cr, cj; + multiply(ar, aj, br, -bj, &cr, &cj); + return fast_atan2(cj, cr); +} + +void fm_demod(struct fm_state *fm) +{ + int i, pcm; + pcm = polar_discriminant(fm->signal[0], fm->signal[1], + fm->pre_r, fm->pre_j); + fm->signal2[0] = (int16_t)pcm; + for (i = 2; i < (fm->signal_len); i += 2) { + if (fm->custom_atan) { + pcm = polar_disc_fast(fm->signal[i], fm->signal[i+1], + fm->signal[i-2], fm->signal[i-1]); + } else { + pcm = polar_discriminant(fm->signal[i], fm->signal[i+1], + fm->signal[i-2], fm->signal[i-1]); + } + fm->signal2[i/2] = (int16_t)pcm; + } + fm->pre_r = fm->signal[fm->signal_len - 2]; + fm->pre_j = fm->signal[fm->signal_len - 1]; + fm->signal2_len = fm->signal_len/2; +} + +void am_demod(struct fm_state *fm) +// todo, fix this extreme laziness +{ + int i, pcm; + for (i = 0; i < (fm->signal_len); i += 2) { + // hypot uses floats but won't overflow + //fm->signal2[i/2] = (int16_t)hypot(fm->signal[i], fm->signal[i+1]); + pcm = fm->signal[i] * fm->signal[i]; + pcm += fm->signal[i+1] * fm->signal[i+1]; + fm->signal2[i/2] = (int16_t)sqrt(pcm); // * fm->output_scale; + } + fm->signal2_len = fm->signal_len/2; + // lowpass? (3khz) highpass? (dc) +} + +void usb_demod(struct fm_state *fm) +{ + int i, pcm; + for (i = 0; i < (fm->signal_len); i += 2) { + pcm = fm->signal[i] + fm->signal[i+1]; + fm->signal2[i/2] = (int16_t)pcm; // * fm->output_scale; + } + fm->signal2_len = fm->signal_len/2; +} + +void lsb_demod(struct fm_state *fm) +{ + int i, pcm; + for (i = 0; i < (fm->signal_len); i += 2) { + pcm = fm->signal[i] - fm->signal[i+1]; + fm->signal2[i/2] = (int16_t)pcm; // * fm->output_scale; + } + fm->signal2_len = fm->signal_len/2; +} + +void raw_demod(struct fm_state *fm) +{ + /* hacky and pointless code */ + int i; + for (i = 0; i < (fm->signal_len); i++) { + fm->signal2[i] = (int16_t)fm->signal[i]; + } + fm->signal2_len = fm->signal_len; +} + +void deemph_filter(struct fm_state *fm) +{ + static int avg; // cheating... + int i, d; + // de-emph IIR + // avg = avg * (1 - alpha) + sample * alpha; + for (i = 0; i < fm->signal2_len; i++) { + d = fm->signal2[i] - avg; + if (d > 0) { + avg += (d + fm->deemph_a/2) / fm->deemph_a; + } else { + avg += (d - fm->deemph_a/2) / fm->deemph_a; + } + fm->signal2[i] = (int16_t)avg; + } +} + +int mad(int *samples, int len, int step) +/* mean average deviation */ +{ + int i=0, sum=0, ave=0; + if (len == 0) + {return 0;} + for (i=0; isignal_len; + sq_l = fm->squelch_level; + dev_r = mad(&(fm->signal[0]), len, 2); + dev_j = mad(&(fm->signal[1]), len, 2); + if ((dev_r > sq_l) || (dev_j > sq_l)) { + fm->squelch_hits = 0; + return 1; + } + fm->squelch_hits++; + return 0; +} + +static void optimal_settings(struct fm_state *fm, int freq, int hopping) +{ + int r, capture_freq, capture_rate; + fm->downsample = (1000000 / fm->sample_rate) + 1; + fm->freq_now = freq; + capture_rate = fm->downsample * fm->sample_rate; + capture_freq = fm->freqs[freq] + capture_rate/4; + capture_freq += fm->edge * fm->sample_rate / 2; + fm->output_scale = (1<<15) / (128 * fm->downsample); + if (fm->output_scale < 1) { + fm->output_scale = 1;} + fm->output_scale = 1; + /* Set the frequency */ + r = rtlsdr_set_center_freq(dev, (uint32_t)capture_freq); + if (hopping) { + return;} + fprintf(stderr, "Oversampling input by: %ix.\n", fm->downsample); + fprintf(stderr, "Oversampling output by: %ix.\n", fm->post_downsample); + fprintf(stderr, "Buffer size: %0.2fms\n", + 1000 * 0.5 * lcm_post[fm->post_downsample] * (float)DEFAULT_BUF_LENGTH / (float)capture_rate); + if (r < 0) { + fprintf(stderr, "WARNING: Failed to set center freq.\n");} + else { + fprintf(stderr, "Tuned to %u Hz.\n", capture_freq);} + + /* Set the sample rate */ + fprintf(stderr, "Sampling at %u Hz.\n", capture_rate); + if (fm->output_rate > 0) { + fprintf(stderr, "Output at %u Hz.\n", fm->output_rate); + } else { + fprintf(stderr, "Output at %u Hz.\n", fm->sample_rate/fm->post_downsample);} + r = rtlsdr_set_sample_rate(dev, (uint32_t)capture_rate); + if (r < 0) { + fprintf(stderr, "WARNING: Failed to set sample rate.\n");} + +} + +void full_demod(struct fm_state *fm) +{ + int i, sr, freq_next, hop = 0; + rotate_90(fm->buf, fm->buf_len); + if (fm->fir_enable) { + low_pass_fir(fm, fm->buf, fm->buf_len); + } else { + low_pass(fm, fm->buf, fm->buf_len); + } + fm->mode_demod(fm); + if (fm->mode_demod == &raw_demod) { + fwrite(fm->signal2, 2, fm->signal2_len, fm->file); + return; + } + sr = post_squelch(fm); + if (!sr && fm->squelch_hits > fm->conseq_squelch) { + if (fm->terminate_on_squelch) { + fm->exit_flag = 1;} + if (fm->freq_len == 1) { /* mute */ + for (i=0; isignal_len; i++) { + fm->signal2[i] = 0;} + } + else { + hop = 1;} + } + if (fm->post_downsample > 1) { + fm->signal2_len = low_pass_simple(fm->signal2, fm->signal2_len, fm->post_downsample);} + if (fm->output_rate > 0) { + low_pass_real(fm); + } + if (fm->deemph) { + deemph_filter(fm);} + /* ignore under runs for now */ + fwrite(fm->signal2, 2, fm->signal2_len, fm->file); + if (hop) { + freq_next = (fm->freq_now + 1) % fm->freq_len; + optimal_settings(fm, freq_next, 1); + fm->squelch_hits = fm->conseq_squelch + 1; /* hair trigger */ + /* wait for settling and flush buffer */ + usleep(5000); + rtlsdr_read_sync(dev, NULL, 4096, NULL); + } +} + +static void rtlsdr_callback(unsigned char *buf, uint32_t len, void *ctx) +{ + struct fm_state *fm2 = ctx; + int dr_val; + if (do_exit) { + return;} + if (!ctx) { + return;} + memcpy(fm2->buf, buf, len); + fm2->buf_len = len; + /* single threaded uses 25% less CPU? */ + /* full_demod(fm2); */ + sem_getvalue(&data_ready, &dr_val); + if (dr_val <= 0) { + sem_post(&data_ready);} +} + +static void *demod_thread_fn(void *arg) +{ + struct fm_state *fm2 = arg; + while (!do_exit) { + sem_wait(&data_ready); + full_demod(fm2); + if (fm2->exit_flag) { + do_exit = 1; + rtlsdr_cancel_async(dev);} + } + return 0; +} + +double atofs(char* f) +/* standard suffixes */ +{ + char* chop; + double suff = 1.0; + chop = malloc((strlen(f)+1)*sizeof(char)); + strncpy(chop, f, strlen(f)-1); + switch (f[strlen(f)-1]) { + case 'G': + suff *= 1e3; + case 'M': + suff *= 1e3; + case 'k': + suff *= 1e3; + suff *= atof(chop);} + free(chop); + if (suff != 1.0) { + return suff;} + return atof(f); +} + +void frequency_range(struct fm_state *fm, char *arg) +{ + char *start, *stop, *step; + int i; + start = arg; + stop = strchr(start, ':') + 1; + stop[-1] = '\0'; + step = strchr(stop, ':') + 1; + step[-1] = '\0'; + for(i=(int)atofs(start); i<=(int)atofs(stop); i+=(int)atofs(step)) + { + fm->freqs[fm->freq_len] = (uint32_t)i; + fm->freq_len++; + } + stop[-1] = ':'; + step[-1] = ':'; +} + +int main(int argc, char **argv) +{ +#ifndef _WIN32 + struct sigaction sigact; +#endif + struct fm_state fm; + char *filename = NULL; + int n_read, r, opt, wb_mode = 0; + int i, gain = AUTO_GAIN; // tenths of a dB + uint8_t *buffer; + uint32_t dev_index = 0; + int device_count; + int ppm_error = 0; + char vendor[256], product[256], serial[256]; + fm.freqs[0] = 100000000; + fm.sample_rate = DEFAULT_SAMPLE_RATE; + fm.squelch_level = 0; + fm.conseq_squelch = 20; + fm.terminate_on_squelch = 0; + fm.freq_len = 0; + fm.edge = 0; + fm.fir_enable = 0; + fm.prev_index = 0; + fm.post_downsample = 1; // once this works, default = 4 + fm.custom_atan = 0; + fm.deemph = 0; + fm.output_rate = -1; // flag for disabled + fm.mode_demod = &fm_demod; + sem_init(&data_ready, 0, 0); + + while ((opt = getopt(argc, argv, "d:f:g:s:b:l:o:t:r:p:EFANWMULRD")) != -1) { + switch (opt) { + case 'd': + dev_index = atoi(optarg); + break; + case 'f': + if (strchr(optarg, ':')) + {frequency_range(&fm, optarg);} + else + { + fm.freqs[fm.freq_len] = (uint32_t)atofs(optarg); + fm.freq_len++; + } + break; + case 'g': + gain = (int)(atof(optarg) * 10); + break; + case 'l': + fm.squelch_level = (int)atof(optarg); + break; + case 's': + fm.sample_rate = (uint32_t)atofs(optarg); + break; + case 'r': + fm.output_rate = (int)atofs(optarg); + break; + case 'o': + fm.post_downsample = (int)atof(optarg); + if (fm.post_downsample < 1 || fm.post_downsample > MAXIMUM_OVERSAMPLE) { + fprintf(stderr, "Oversample must be between 1 and %i\n", MAXIMUM_OVERSAMPLE);} + break; + case 't': + fm.conseq_squelch = (int)atof(optarg); + if (fm.conseq_squelch < 0) { + fm.conseq_squelch = -fm.conseq_squelch; + fm.terminate_on_squelch = 1; + } + break; + case 'p': + ppm_error = atoi(optarg); + break; + case 'E': + fm.edge = 1; + break; + case 'F': + fm.fir_enable = 1; + break; + case 'A': + fm.custom_atan = 1; + break; + case 'D': + fm.deemph = 1; + break; + case 'N': + fm.mode_demod = &fm_demod; + break; + case 'W': + wb_mode = 1; + fm.mode_demod = &fm_demod; + fm.sample_rate = 170000; + fm.output_rate = 32000; + fm.custom_atan = 1; + fm.post_downsample = 4; + fm.deemph = 1; + fm.squelch_level = 0; + break; + case 'M': + fm.mode_demod = &am_demod; + break; + case 'U': + fm.mode_demod = &usb_demod; + break; + case 'L': + fm.mode_demod = &lsb_demod; + break; + case 'R': + fm.mode_demod = &raw_demod; + break; + default: + usage(); + break; + } + } + /* quadruple sample_rate to limit to Δθ to ±π/2 */ + fm.sample_rate *= fm.post_downsample; + + if (fm.freq_len > 1) { + fm.terminate_on_squelch = 0; + } + + if (argc <= optind) { + //usage(); + filename = "-"; + } else { + filename = argv[optind]; + } + + buffer = malloc(lcm_post[fm.post_downsample] * DEFAULT_BUF_LENGTH * sizeof(uint8_t)); + + device_count = rtlsdr_get_device_count(); + if (!device_count) { + fprintf(stderr, "No supported devices found.\n"); + exit(1); + } + + fprintf(stderr, "Found %d device(s):\n", device_count); + for (i = 0; i < device_count; i++) { + rtlsdr_get_device_usb_strings(i, vendor, product, serial); + fprintf(stderr, " %d: %s, %s, SN: %s\n", i, vendor, product, serial); + } + fprintf(stderr, "\n"); + + fprintf(stderr, "Using device %d: %s\n", + dev_index, rtlsdr_get_device_name(dev_index)); + + r = rtlsdr_open(&dev, dev_index); + if (r < 0) { + fprintf(stderr, "Failed to open rtlsdr device #%d.\n", dev_index); + exit(1); + } +#ifndef _WIN32 + sigact.sa_handler = sighandler; + sigemptyset(&sigact.sa_mask); + sigact.sa_flags = 0; + sigaction(SIGINT, &sigact, NULL); + sigaction(SIGTERM, &sigact, NULL); + sigaction(SIGQUIT, &sigact, NULL); + sigaction(SIGPIPE, &sigact, NULL); +#else + SetConsoleCtrlHandler( (PHANDLER_ROUTINE) sighandler, TRUE ); +#endif + + /* WBFM is special */ + if (wb_mode) { + fm.freqs[0] += 16000; + } + + if (fm.deemph) { + fm.deemph_a = (int)round(1.0/((1.0-exp(-1.0/(fm.output_rate * 75e-6))))); + } + + optimal_settings(&fm, 0, 0); + build_fir(&fm); + + /* Set the tuner gain */ + if (gain == AUTO_GAIN) { + r = rtlsdr_set_tuner_gain_mode(dev, 0); + } else { + r = rtlsdr_set_tuner_gain_mode(dev, 1); + r = rtlsdr_set_tuner_gain(dev, gain); + } + if (r != 0) { + fprintf(stderr, "WARNING: Failed to set tuner gain.\n"); + } else if (gain == AUTO_GAIN) { + fprintf(stderr, "Tuner gain set to automatic.\n"); + } else { + fprintf(stderr, "Tuner gain set to %0.2f dB.\n", gain/10.0); + } + r = rtlsdr_set_freq_correction(dev, ppm_error); + + if (strcmp(filename, "-") == 0) { /* Write samples to stdout */ + fm.file = stdout; +#ifdef _WIN32 + _setmode(_fileno(fm.file), _O_BINARY); +#endif + } else { + fm.file = fopen(filename, "wb"); + if (!fm.file) { + fprintf(stderr, "Failed to open %s\n", filename); + exit(1); + } + } + + /* Reset endpoint before we start reading from it (mandatory) */ + r = rtlsdr_reset_buffer(dev); + if (r < 0) { + fprintf(stderr, "WARNING: Failed to reset buffers.\n");} + + pthread_create(&demod_thread, NULL, demod_thread_fn, (void *)(&fm)); + rtlsdr_read_async(dev, rtlsdr_callback, (void *)(&fm), + DEFAULT_ASYNC_BUF_NUMBER, + lcm_post[fm.post_downsample] * DEFAULT_BUF_LENGTH); + + if (do_exit) { + fprintf(stderr, "\nUser cancel, exiting...\n");} + else { + fprintf(stderr, "\nLibrary error %d, exiting...\n", r);} + rtlsdr_cancel_async(dev); + + if (fm.file != stdout) { + fclose(fm.file);} + + rtlsdr_close(dev); + free (buffer); + return r >= 0 ? r : -r; +} diff --git a/src/rtl_sdr.c b/src/rtl_sdr.c new file mode 100644 index 0000000..eeb6dba --- /dev/null +++ b/src/rtl_sdr.c @@ -0,0 +1,297 @@ +/* + * rtl-sdr, turns your Realtek RTL2832 based DVB dongle into a SDR receiver + * Copyright (C) 2012 by Steve Markgraf + * + * 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, see . + */ + +#include +#include +#include +#include +#include + +#ifndef _WIN32 +#include +#else +#include +#include +#include +#include "getopt/getopt.h" +#endif + +#include "rtl-sdr.h" + +#define DEFAULT_SAMPLE_RATE 2048000 +#define DEFAULT_ASYNC_BUF_NUMBER 32 +#define DEFAULT_BUF_LENGTH (16 * 16384) +#define MINIMAL_BUF_LENGTH 512 +#define MAXIMAL_BUF_LENGTH (256 * 16384) + +static int do_exit = 0; +static uint32_t bytes_to_read = 0; +static rtlsdr_dev_t *dev = NULL; + +void usage(void) +{ + fprintf(stderr, + "rtl_sdr, an I/Q recorder for RTL2832 based DVB-T receivers\n\n" + "Usage:\t -f frequency_to_tune_to [Hz]\n" + "\t[-s samplerate (default: 2048000 Hz)]\n" + "\t[-d device_index (default: 0)]\n" + "\t[-g gain (default: 0 for auto)]\n" + "\t[-b output_block_size (default: 16 * 16384)]\n" + "\t[-n number of samples to read (default: 0, infinite)]\n" + "\t[-S force sync output (default: async)]\n" + "\tfilename (a '-' dumps samples to stdout)\n\n"); + exit(1); +} + +#ifdef _WIN32 +BOOL WINAPI +sighandler(int signum) +{ + if (CTRL_C_EVENT == signum) { + fprintf(stderr, "Signal caught, exiting!\n"); + do_exit = 1; + rtlsdr_cancel_async(dev); + return TRUE; + } + return FALSE; +} +#else +static void sighandler(int signum) +{ + fprintf(stderr, "Signal caught, exiting!\n"); + do_exit = 1; + rtlsdr_cancel_async(dev); +} +#endif + +static void rtlsdr_callback(unsigned char *buf, uint32_t len, void *ctx) +{ + if (ctx) { + if (do_exit) + return; + + if ((bytes_to_read > 0) && (bytes_to_read < len)) { + len = bytes_to_read; + do_exit = 1; + rtlsdr_cancel_async(dev); + } + + if (fwrite(buf, 1, len, (FILE*)ctx) != len) { + fprintf(stderr, "Short write, samples lost, exiting!\n"); + rtlsdr_cancel_async(dev); + } + + if (bytes_to_read > 0) + bytes_to_read -= len; + } +} + +int main(int argc, char **argv) +{ +#ifndef _WIN32 + struct sigaction sigact; +#endif + char *filename = NULL; + int n_read; + int r, opt; + int i, gain = 0; + int sync_mode = 0; + FILE *file; + uint8_t *buffer; + uint32_t dev_index = 0; + uint32_t frequency = 100000000; + uint32_t samp_rate = DEFAULT_SAMPLE_RATE; + uint32_t out_block_size = DEFAULT_BUF_LENGTH; + int device_count; + char vendor[256], product[256], serial[256]; + + while ((opt = getopt(argc, argv, "d:f:g:s:b:n:S::")) != -1) { + switch (opt) { + case 'd': + dev_index = atoi(optarg); + break; + case 'f': + frequency = (uint32_t)atof(optarg); + break; + case 'g': + gain = (int)(atof(optarg) * 10); /* tenths of a dB */ + break; + case 's': + samp_rate = (uint32_t)atof(optarg); + break; + case 'b': + out_block_size = (uint32_t)atof(optarg); + break; + case 'n': + bytes_to_read = (uint32_t)atof(optarg) * 2; + break; + case 'S': + sync_mode = 1; + break; + default: + usage(); + break; + } + } + + if (argc <= optind) { + usage(); + } else { + filename = argv[optind]; + } + + if(out_block_size < MINIMAL_BUF_LENGTH || + out_block_size > MAXIMAL_BUF_LENGTH ){ + fprintf(stderr, + "Output block size wrong value, falling back to default\n"); + fprintf(stderr, + "Minimal length: %u\n", MINIMAL_BUF_LENGTH); + fprintf(stderr, + "Maximal length: %u\n", MAXIMAL_BUF_LENGTH); + out_block_size = DEFAULT_BUF_LENGTH; + } + + buffer = malloc(out_block_size * sizeof(uint8_t)); + + device_count = rtlsdr_get_device_count(); + if (!device_count) { + fprintf(stderr, "No supported devices found.\n"); + exit(1); + } + + fprintf(stderr, "Found %d device(s):\n", device_count); + for (i = 0; i < device_count; i++) { + rtlsdr_get_device_usb_strings(i, vendor, product, serial); + fprintf(stderr, " %d: %s, %s, SN: %s\n", i, vendor, product, serial); + } + fprintf(stderr, "\n"); + + fprintf(stderr, "Using device %d: %s\n", + dev_index, rtlsdr_get_device_name(dev_index)); + + r = rtlsdr_open(&dev, dev_index); + if (r < 0) { + fprintf(stderr, "Failed to open rtlsdr device #%d.\n", dev_index); + exit(1); + } +#ifndef _WIN32 + sigact.sa_handler = sighandler; + sigemptyset(&sigact.sa_mask); + sigact.sa_flags = 0; + sigaction(SIGINT, &sigact, NULL); + sigaction(SIGTERM, &sigact, NULL); + sigaction(SIGQUIT, &sigact, NULL); + sigaction(SIGPIPE, &sigact, NULL); +#else + SetConsoleCtrlHandler( (PHANDLER_ROUTINE) sighandler, TRUE ); +#endif + /* Set the sample rate */ + r = rtlsdr_set_sample_rate(dev, samp_rate); + if (r < 0) + fprintf(stderr, "WARNING: Failed to set sample rate.\n"); + + /* Set the frequency */ + r = rtlsdr_set_center_freq(dev, frequency); + if (r < 0) + fprintf(stderr, "WARNING: Failed to set center freq.\n"); + else + fprintf(stderr, "Tuned to %u Hz.\n", frequency); + + if (0 == gain) { + /* Enable automatic gain */ + r = rtlsdr_set_tuner_gain_mode(dev, 0); + if (r < 0) + fprintf(stderr, "WARNING: Failed to enable automatic gain.\n"); + } else { + /* Enable manual gain */ + r = rtlsdr_set_tuner_gain_mode(dev, 1); + if (r < 0) + fprintf(stderr, "WARNING: Failed to enable manual gain.\n"); + + /* Set the tuner gain */ + r = rtlsdr_set_tuner_gain(dev, gain); + if (r < 0) + fprintf(stderr, "WARNING: Failed to set tuner gain.\n"); + else + fprintf(stderr, "Tuner gain set to %f dB.\n", gain/10.0); + } + + if(strcmp(filename, "-") == 0) { /* Write samples to stdout */ + file = stdout; +#ifdef _WIN32 + _setmode(_fileno(stdin), _O_BINARY); +#endif + } else { + file = fopen(filename, "wb"); + if (!file) { + fprintf(stderr, "Failed to open %s\n", filename); + goto out; + } + } + + /* Reset endpoint before we start reading from it (mandatory) */ + r = rtlsdr_reset_buffer(dev); + if (r < 0) + fprintf(stderr, "WARNING: Failed to reset buffers.\n"); + + if (sync_mode) { + fprintf(stderr, "Reading samples in sync mode...\n"); + while (!do_exit) { + r = rtlsdr_read_sync(dev, buffer, out_block_size, &n_read); + if (r < 0) { + fprintf(stderr, "WARNING: sync read failed.\n"); + break; + } + + if ((bytes_to_read > 0) && (bytes_to_read < (uint32_t)n_read)) { + n_read = bytes_to_read; + do_exit = 1; + } + + if (fwrite(buffer, 1, n_read, file) != (size_t)n_read) { + fprintf(stderr, "Short write, samples lost, exiting!\n"); + break; + } + + if ((uint32_t)n_read < out_block_size) { + fprintf(stderr, "Short read, samples lost, exiting!\n"); + break; + } + + if (bytes_to_read > 0) + bytes_to_read -= n_read; + } + } else { + fprintf(stderr, "Reading samples in async mode...\n"); + r = rtlsdr_read_async(dev, rtlsdr_callback, (void *)file, + DEFAULT_ASYNC_BUF_NUMBER, out_block_size); + } + + if (do_exit) + fprintf(stderr, "\nUser cancel, exiting...\n"); + else + fprintf(stderr, "\nLibrary error %d, exiting...\n", r); + + if (file != stdout) + fclose(file); + + rtlsdr_close(dev); + free (buffer); +out: + return r >= 0 ? r : -r; +} diff --git a/src/rtl_tcp.c b/src/rtl_tcp.c new file mode 100644 index 0000000..13f20fa --- /dev/null +++ b/src/rtl_tcp.c @@ -0,0 +1,604 @@ +/* + * rtl-sdr, turns your Realtek RTL2832 based DVB dongle into a SDR receiver + * Copyright (C) 2012 by Steve Markgraf + * Copyright (C) 2012 by Hoernchen + * + * 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, see . + */ + +#include +#include +#include +#include +#include + +#ifndef _WIN32 +#include +#include +#include +#include +#include +#include +#include +#include +#else +#include +#include "getopt/getopt.h" +#endif + +#include + +#include "rtl-sdr.h" + +#ifdef _WIN32 +#pragma comment(lib, "ws2_32.lib") + +typedef int socklen_t; + +#else +#define closesocket close +#define SOCKADDR struct sockaddr +#define SOCKET int +#define SOCKET_ERROR -1 +#endif + +static SOCKET s; + +static pthread_t tcp_worker_thread; +static pthread_t command_thread; +static pthread_cond_t exit_cond; +static pthread_mutex_t exit_cond_lock; +static volatile int dead[2] = {0, 0}; + +static pthread_mutex_t ll_mutex; +static pthread_cond_t cond; + +struct llist { + char *data; + size_t len; + struct llist *next; +}; + +typedef struct { /* structure size must be multiple of 2 bytes */ + char magic[4]; + uint32_t tuner_type; + uint32_t tuner_gain_count; +} dongle_info_t; + +static rtlsdr_dev_t *dev = NULL; + +int global_numq = 0; +static struct llist *ll_buffers = 0; + +static int do_exit = 0; + +void usage(void) +{ + printf("rtl_tcp, an I/Q spectrum server for RTL2832 based DVB-T receivers\n\n" + "Usage:\t[-a listen address]\n" + "\t[-p listen port (default: 1234)]\n" + "\t[-f frequency to tune to [Hz]]\n" + "\t[-g gain (default: 0 for auto)]\n" + "\t[-s samplerate in Hz (default: 2048000 Hz)]\n" + "\t[-b number of buffers (default: 32, set by library)]\n" + "\t[-d device index (default: 0)]\n"); + exit(1); +} + +#ifdef _WIN32 +int gettimeofday(struct timeval *tv, void* ignored) +{ + FILETIME ft; + unsigned __int64 tmp = 0; + if (NULL != tv) { + GetSystemTimeAsFileTime(&ft); + tmp |= ft.dwHighDateTime; + tmp <<= 32; + tmp |= ft.dwLowDateTime; + tmp /= 10; + tmp -= 11644473600000000Ui64; + tv->tv_sec = (long)(tmp / 1000000UL); + tv->tv_usec = (long)(tmp % 1000000UL); + } + return 0; +} + +BOOL WINAPI +sighandler(int signum) +{ + if (CTRL_C_EVENT == signum) { + fprintf(stderr, "Signal caught, exiting!\n"); + do_exit = 1; + rtlsdr_cancel_async(dev); + return TRUE; + } + return FALSE; +} +#else +static void sighandler(int signum) +{ + fprintf(stderr, "Signal caught, exiting!\n"); + if (!do_exit) { + rtlsdr_cancel_async(dev); + do_exit = 1; + } +} +#endif + +void rtlsdr_callback(unsigned char *buf, uint32_t len, void *ctx) +{ + if(!do_exit) { + struct llist *rpt = (struct llist*)malloc(sizeof(struct llist)); + rpt->data = (char*)malloc(len); + memcpy(rpt->data, buf, len); + rpt->len = len; + rpt->next = NULL; + + pthread_mutex_lock(&ll_mutex); + + if (ll_buffers == NULL) { + ll_buffers = rpt; + } else { + struct llist *cur = ll_buffers; + int num_queued = 0; + + while (cur->next != NULL) { + cur = cur->next; + num_queued++; + } + cur->next = rpt; + + if (num_queued > global_numq) + printf("ll+, now %d\n", num_queued); + else if (num_queued < global_numq) + printf("ll-, now %d\n", num_queued); + + global_numq = num_queued; + } + pthread_cond_signal(&cond); + pthread_mutex_unlock(&ll_mutex); + } +} + +static void *tcp_worker(void *arg) +{ + struct llist *curelem,*prev; + int bytesleft,bytessent, index; + struct timeval tv= {1,0}; + struct timespec ts; + struct timeval tp; + fd_set writefds; + int r = 0; + + while(1) { + if(do_exit) + pthread_exit(0); + + pthread_mutex_lock(&ll_mutex); + gettimeofday(&tp, NULL); + ts.tv_sec = tp.tv_sec+5; + ts.tv_nsec = tp.tv_usec * 1000; + r = pthread_cond_timedwait(&cond, &ll_mutex, &ts); + if(r == ETIMEDOUT) { + pthread_mutex_unlock(&ll_mutex); + printf("worker cond timeout\n"); + sighandler(0); + dead[0]=1; + pthread_exit(NULL); + } + + curelem = ll_buffers; + ll_buffers = 0; + pthread_mutex_unlock(&ll_mutex); + + while(curelem != 0) { + bytesleft = curelem->len; + index = 0; + bytessent = 0; + while(bytesleft > 0) { + FD_ZERO(&writefds); + FD_SET(s, &writefds); + tv.tv_sec = 1; + tv.tv_usec = 0; + r = select(s+1, NULL, &writefds, NULL, &tv); + if(r) { + bytessent = send(s, &curelem->data[index], bytesleft, 0); + if (bytessent == SOCKET_ERROR) { + perror("worker socket error"); + sighandler(0); + dead[0]=1; + pthread_exit(NULL); + } else if (do_exit) { + printf("do_exit\n"); + dead[0]=1; + pthread_exit(NULL); + } else { + bytesleft -= bytessent; + index += bytessent; + } + } else if(do_exit) { + printf("worker socket bye\n"); + sighandler(0); + dead[0]=1; + pthread_exit(NULL); + } + } + prev = curelem; + curelem = curelem->next; + free(prev->data); + free(prev); + } + } +} + +static int set_gain_by_index(rtlsdr_dev_t *_dev, unsigned int index) +{ + int res = 0; + int* gains; + int count = rtlsdr_get_tuner_gains(_dev, NULL); + + if (count > 0 && (unsigned int)count > index) { + gains = malloc(sizeof(int) * count); + count = rtlsdr_get_tuner_gains(_dev, gains); + + res = rtlsdr_set_tuner_gain(_dev, gains[index]); + + free(gains); + } + + return res; +} + +#ifdef _WIN32 +#define __attribute__(x) +#pragma pack(push, 1) +#endif +struct command{ + unsigned char cmd; + unsigned int param; +}__attribute__((packed)); +#ifdef _WIN32 +#pragma pack(pop) +#endif +static void *command_worker(void *arg) +{ + int left, received; + fd_set readfds; + struct command cmd={0, 0}; + struct timeval tv= {1, 0}; + int r = 0; + uint32_t tmp; + + while(1) { + left=sizeof(cmd); + while(left >0) { + FD_ZERO(&readfds); + FD_SET(s, &readfds); + tv.tv_sec = 1; + tv.tv_usec = 0; + r = select(s+1, &readfds, NULL, NULL, &tv); + if(r) { + received = recv(s, (char*)&cmd+(sizeof(cmd)-left), left, 0); + if(received == SOCKET_ERROR){ + perror("comm recv socket error"); + sighandler(0); + dead[1]=1; + pthread_exit(NULL); + } else if(do_exit){ + printf("do exit\n"); + dead[1]=1; + pthread_exit(NULL); + } else { + left -= received; + } + } else if(do_exit) { + printf("comm recv bye\n"); + sighandler(0); + dead[1] = 1; + pthread_exit(NULL); + } + } + switch(cmd.cmd) { + case 0x01: + printf("set freq %d\n", ntohl(cmd.param)); + rtlsdr_set_center_freq(dev,ntohl(cmd.param)); + break; + case 0x02: + printf("set sample rate %d\n", ntohl(cmd.param)); + rtlsdr_set_sample_rate(dev, ntohl(cmd.param)); + break; + case 0x03: + printf("set gain mode %d\n", ntohl(cmd.param)); + rtlsdr_set_tuner_gain_mode(dev, ntohl(cmd.param)); + break; + case 0x04: + printf("set gain %d\n", ntohl(cmd.param)); + rtlsdr_set_tuner_gain(dev, ntohl(cmd.param)); + break; + case 0x05: + printf("set freq correction %d\n", ntohl(cmd.param)); + rtlsdr_set_freq_correction(dev, ntohl(cmd.param)); + break; + case 0x06: + tmp = ntohl(cmd.param); + printf("set if stage %d, gain %d\n", tmp >> 16, tmp & 0xffff); + rtlsdr_set_tuner_if_gain(dev, tmp >> 16, tmp & 0xffff); + break; + case 0x07: + printf("set test mode %d\n", ntohl(cmd.param)); + rtlsdr_set_testmode(dev, ntohl(cmd.param)); + break; + case 0x08: + printf("set agc mode %d\n", ntohl(cmd.param)); + rtlsdr_set_agc_mode(dev, ntohl(cmd.param)); + break; + case 0x09: + printf("set direct sampling %d\n", ntohl(cmd.param)); + rtlsdr_set_direct_sampling(dev, ntohl(cmd.param)); + break; + case 0x0a: + printf("set offset tuning %d\n", ntohl(cmd.param)); + rtlsdr_set_offset_tuning(dev, ntohl(cmd.param)); + break; + case 0x0b: + printf("set rtl xtal %d\n", ntohl(cmd.param)); + rtlsdr_set_xtal_freq(dev, ntohl(cmd.param), 0); + break; + case 0x0c: + printf("set tuner xtal %d\n", ntohl(cmd.param)); + rtlsdr_set_xtal_freq(dev, 0, ntohl(cmd.param)); + break; + case 0x0d: + printf("set tuner gain by index %d\n", ntohl(cmd.param)); + set_gain_by_index(dev, ntohl(cmd.param)); + break; + default: + break; + } + cmd.cmd = 0xff; + } +} + +int main(int argc, char **argv) +{ + int r, opt, i; + char* addr = "127.0.0.1"; + int port = 1234; + uint32_t frequency = 100000000, samp_rate = 2048000; + struct sockaddr_in local, remote; + int device_count; + uint32_t dev_index = 0, buf_num = 0; + int gain = 0; + struct llist *curelem,*prev; + pthread_attr_t attr; + void *status; + struct timeval tv = {1,0}; + struct linger ling = {1,0}; + SOCKET listensocket; + socklen_t rlen; + fd_set readfds; + u_long blockmode = 1; + dongle_info_t dongle_info; +#ifdef _WIN32 + WSADATA wsd; + i = WSAStartup(MAKEWORD(2,2), &wsd); +#else + struct sigaction sigact, sigign; +#endif + + while ((opt = getopt(argc, argv, "a:p:f:g:s:b:d:")) != -1) { + switch (opt) { + case 'd': + dev_index = atoi(optarg); + break; + case 'f': + frequency = (uint32_t)atof(optarg); + break; + case 'g': + gain = (int)(atof(optarg) * 10); /* tenths of a dB */ + break; + case 's': + samp_rate = (uint32_t)atof(optarg); + break; + case 'a': + addr = optarg; + break; + case 'p': + port = atoi(optarg); + break; + case 'b': + buf_num = atoi(optarg); + break; + default: + usage(); + break; + } + } + + if (argc < optind) + usage(); + + device_count = rtlsdr_get_device_count(); + if (!device_count) { + fprintf(stderr, "No supported devices found.\n"); + exit(1); + } + + printf("Found %d device(s).\n", device_count); + + rtlsdr_open(&dev, dev_index); + if (NULL == dev) { + fprintf(stderr, "Failed to open rtlsdr device #%d.\n", dev_index); + exit(1); + } + + printf("Using %s\n", rtlsdr_get_device_name(dev_index)); +#ifndef _WIN32 + sigact.sa_handler = sighandler; + sigemptyset(&sigact.sa_mask); + sigact.sa_flags = 0; + sigign.sa_handler = SIG_IGN; + sigaction(SIGINT, &sigact, NULL); + sigaction(SIGTERM, &sigact, NULL); + sigaction(SIGQUIT, &sigact, NULL); + sigaction(SIGPIPE, &sigign, NULL); +#else + SetConsoleCtrlHandler( (PHANDLER_ROUTINE) sighandler, TRUE ); +#endif + /* Set the sample rate */ + r = rtlsdr_set_sample_rate(dev, samp_rate); + if (r < 0) + fprintf(stderr, "WARNING: Failed to set sample rate.\n"); + + /* Set the frequency */ + r = rtlsdr_set_center_freq(dev, frequency); + if (r < 0) + fprintf(stderr, "WARNING: Failed to set center freq.\n"); + else + fprintf(stderr, "Tuned to %i Hz.\n", frequency); + + if (0 == gain) { + /* Enable automatic gain */ + r = rtlsdr_set_tuner_gain_mode(dev, 0); + if (r < 0) + fprintf(stderr, "WARNING: Failed to enable automatic gain.\n"); + } else { + /* Enable manual gain */ + r = rtlsdr_set_tuner_gain_mode(dev, 1); + if (r < 0) + fprintf(stderr, "WARNING: Failed to enable manual gain.\n"); + + /* Set the tuner gain */ + r = rtlsdr_set_tuner_gain(dev, gain); + if (r < 0) + fprintf(stderr, "WARNING: Failed to set tuner gain.\n"); + else + fprintf(stderr, "Tuner gain set to %f dB.\n", gain/10.0); + } + + /* Reset endpoint before we start reading from it (mandatory) */ + r = rtlsdr_reset_buffer(dev); + if (r < 0) + fprintf(stderr, "WARNING: Failed to reset buffers.\n"); + + pthread_mutex_init(&exit_cond_lock, NULL); + pthread_mutex_init(&ll_mutex, NULL); + pthread_mutex_init(&exit_cond_lock, NULL); + pthread_cond_init(&cond, NULL); + pthread_cond_init(&exit_cond, NULL); + + memset(&local,0,sizeof(local)); + local.sin_family = AF_INET; + local.sin_port = htons(port); + local.sin_addr.s_addr = inet_addr(addr); + + listensocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + r = 1; + setsockopt(listensocket, SOL_SOCKET, SO_REUSEADDR, (char *)&r, sizeof(int)); + setsockopt(listensocket, SOL_SOCKET, SO_LINGER, (char *)&ling, sizeof(ling)); + bind(listensocket,(struct sockaddr *)&local,sizeof(local)); + + #ifdef _WIN32 + ioctlsocket(listensocket, FIONBIO, &blockmode); + #else + r = fcntl(listensocket, F_GETFL, 0); + r = fcntl(listensocket, F_SETFL, r | O_NONBLOCK); + #endif + + while(1) { + printf("listening...\n"); + printf("Use the device argument 'rtl_tcp=%s:%d' in OsmoSDR " + "(gr-osmosdr) source\n" + "to receive samples in GRC and control " + "rtl_tcp parameters (frequency, gain, ...).\n", + addr, port); + listen(listensocket,1); + + while(1) { + FD_ZERO(&readfds); + FD_SET(listensocket, &readfds); + tv.tv_sec = 1; + tv.tv_usec = 0; + r = select(listensocket+1, &readfds, NULL, NULL, &tv); + if(do_exit) { + goto out; + } else if(r) { + rlen = sizeof(remote); + s = accept(listensocket,(struct sockaddr *)&remote, &rlen); + break; + } + } + + setsockopt(s, SOL_SOCKET, SO_LINGER, (char *)&ling, sizeof(ling)); + + printf("client accepted!\n"); + + memset(&dongle_info, 0, sizeof(dongle_info)); + memcpy(&dongle_info.magic, "RTL0", 4); + + r = rtlsdr_get_tuner_type(dev); + if (r >= 0) + dongle_info.tuner_type = htonl(r); + + r = rtlsdr_get_tuner_gains(dev, NULL); + if (r >= 0) + dongle_info.tuner_gain_count = htonl(r); + + r = send(s, (const char *)&dongle_info, sizeof(dongle_info), 0); + if (sizeof(dongle_info) != r) + printf("failed to send dongle information\n"); + + pthread_attr_init(&attr); + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); + r = pthread_create(&tcp_worker_thread, &attr, tcp_worker, NULL); + r = pthread_create(&command_thread, &attr, command_worker, NULL); + pthread_attr_destroy(&attr); + + r = rtlsdr_read_async(dev, rtlsdr_callback, NULL, buf_num, 0); + + if(!dead[0]) + pthread_join(tcp_worker_thread, &status); + dead[0]=0; + + if(!dead[1]) + pthread_join(command_thread, &status); + dead[1]=0; + + closesocket(s); + + printf("all threads dead..\n"); + curelem = ll_buffers; + ll_buffers = 0; + + while(curelem != 0) { + prev = curelem; + curelem = curelem->next; + free(prev->data); + free(prev); + } + + do_exit = 0; + global_numq = 0; + } + +out: + rtlsdr_close(dev); + closesocket(listensocket); + closesocket(s); + #ifdef _WIN32 + WSACleanup(); + #endif + printf("bye!\n"); + return r >= 0 ? r : -r; +} diff --git a/src/rtl_test.c b/src/rtl_test.c new file mode 100644 index 0000000..fa54628 --- /dev/null +++ b/src/rtl_test.c @@ -0,0 +1,379 @@ +/* + * rtl-sdr, turns your Realtek RTL2832 based DVB dongle into a SDR receiver + * Copyright (C) 2012 by Steve Markgraf + * + * 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, see . + */ + +#include +#include +#include +#include +#include +#include + +#ifdef __APPLE__ +#include +#else +#include +#endif + +#ifndef _WIN32 +#include +#else +#include +#include "getopt/getopt.h" +#endif + +#include "rtl-sdr.h" + +#define DEFAULT_SAMPLE_RATE 2048000 +#define DEFAULT_ASYNC_BUF_NUMBER 32 +#define DEFAULT_BUF_LENGTH (16 * 16384) +#define MINIMAL_BUF_LENGTH 512 +#define MAXIMAL_BUF_LENGTH (256 * 16384) + +#define MHZ(x) ((x)*1000*1000) + +#define PPM_DURATION 10 + +static int do_exit = 0; +static rtlsdr_dev_t *dev = NULL; + +static int ppm_benchmark = 0; +static int64_t ppm_count = 0L; +static int64_t ppm_total = 0L; + +#ifndef _WIN32 +static struct timespec ppm_start; +static struct timespec ppm_recent; +static struct timespec ppm_now; +#endif + +#ifdef __APPLE__ +static struct timeval tv; +#endif + +void usage(void) +{ + fprintf(stderr, + "rtl_test, a benchmark tool for RTL2832 based DVB-T receivers\n\n" + "Usage:\n" + "\t[-s samplerate (default: 2048000 Hz)]\n" + "\t[-d device_index (default: 0)]\n" + "\t[-t enable Elonics E4000 tuner benchmark]\n" + #ifndef _WIN32 + "\t[-p enable PPM error measurement]\n" + #endif + "\t[-b output_block_size (default: 16 * 16384)]\n" + "\t[-S force sync output (default: async)]\n"); + exit(1); +} + +#ifdef _WIN32 +BOOL WINAPI +sighandler(int signum) +{ + if (CTRL_C_EVENT == signum) { + fprintf(stderr, "Signal caught, exiting!\n"); + do_exit = 1; + rtlsdr_cancel_async(dev); + return TRUE; + } + return FALSE; +} +#else +static void sighandler(int signum) +{ + fprintf(stderr, "Signal caught, exiting!\n"); + do_exit = 1; + rtlsdr_cancel_async(dev); +} +#endif + +uint8_t bcnt, uninit = 1; + +static void rtlsdr_callback(unsigned char *buf, uint32_t len, void *ctx) +{ + uint32_t i, lost = 0; + int64_t ns; + + if (uninit) { + bcnt = buf[0]; + uninit = 0; + } + + for (i = 0; i < len; i++) { + if(bcnt != buf[i]) { + lost += (buf[i] > bcnt) ? (buf[i] - bcnt) : (bcnt - buf[i]); + bcnt = buf[i]; + } + + bcnt++; + } + + if (lost) + printf("lost at least %d bytes\n", lost); + + if (!ppm_benchmark) { + return; + } + ppm_count += (int64_t)len; +#ifndef _WIN32 + #ifndef __APPLE__ + clock_gettime(CLOCK_REALTIME, &ppm_now); + #else + gettimeofday(&tv, NULL); + ppm_now.tv_sec = tv.tv_sec; + ppm_now.tv_nsec = tv.tv_usec*1000; + #endif + if (ppm_now.tv_sec - ppm_recent.tv_sec > PPM_DURATION) { + ns = 1000000000L * (int64_t)(ppm_now.tv_sec - ppm_recent.tv_sec); + ns += (int64_t)(ppm_now.tv_nsec - ppm_recent.tv_nsec); + printf("real sample rate: %i\n", + (int)((1000000000L * ppm_count / 2L) / ns)); + #ifndef __APPLE__ + clock_gettime(CLOCK_REALTIME, &ppm_recent); + #else + gettimeofday(&tv, NULL); + ppm_recent.tv_sec = tv.tv_sec; + ppm_recent.tv_nsec = tv.tv_usec*1000; + #endif + ppm_total += ppm_count / 2L; + ppm_count = 0L; + } +#endif +} + +void e4k_benchmark(void) +{ + uint32_t freq, gap_start = 0, gap_end = 0; + uint32_t range_start = 0, range_end = 0; + + fprintf(stderr, "Benchmarking E4000 PLL...\n"); + + /* find tuner range start */ + for (freq = MHZ(70); freq > MHZ(1); freq -= MHZ(1)) { + if (rtlsdr_set_center_freq(dev, freq) < 0) { + range_start = freq; + break; + } + } + + /* find tuner range end */ + for (freq = MHZ(2000); freq < MHZ(2300UL); freq += MHZ(1)) { + if (rtlsdr_set_center_freq(dev, freq) < 0) { + range_end = freq; + break; + } + } + + /* find start of L-band gap */ + for (freq = MHZ(1000); freq < MHZ(1300); freq += MHZ(1)) { + if (rtlsdr_set_center_freq(dev, freq) < 0) { + gap_start = freq; + break; + } + } + + /* find end of L-band gap */ + for (freq = MHZ(1300); freq > MHZ(1000); freq -= MHZ(1)) { + if (rtlsdr_set_center_freq(dev, freq) < 0) { + gap_end = freq; + break; + } + } + + fprintf(stderr, "E4K range: %i to %i MHz\n", + range_start/MHZ(1) + 1, range_end/MHZ(1) - 1); + + fprintf(stderr, "E4K L-band gap: %i to %i MHz\n", + gap_start/MHZ(1), gap_end/MHZ(1)); +} + +int main(int argc, char **argv) +{ +#ifndef _WIN32 + struct sigaction sigact; +#endif + int n_read; + int r, opt; + int i, tuner_benchmark = 0; + int sync_mode = 0; + uint8_t *buffer; + uint32_t dev_index = 0; + uint32_t samp_rate = DEFAULT_SAMPLE_RATE; + uint32_t out_block_size = DEFAULT_BUF_LENGTH; + int device_count; + int count; + int gains[100]; + int real_rate; + int64_t ns; + + while ((opt = getopt(argc, argv, "d:s:b:tpS::")) != -1) { + switch (opt) { + case 'd': + dev_index = atoi(optarg); + break; + case 's': + samp_rate = (uint32_t)atof(optarg); + break; + case 'b': + out_block_size = (uint32_t)atof(optarg); + break; + case 't': + tuner_benchmark = 1; + break; + case 'p': + ppm_benchmark = PPM_DURATION; + break; + case 'S': + sync_mode = 1; + break; + default: + usage(); + break; + } + } + + if(out_block_size < MINIMAL_BUF_LENGTH || + out_block_size > MAXIMAL_BUF_LENGTH ){ + fprintf(stderr, + "Output block size wrong value, falling back to default\n"); + fprintf(stderr, + "Minimal length: %u\n", MINIMAL_BUF_LENGTH); + fprintf(stderr, + "Maximal length: %u\n", MAXIMAL_BUF_LENGTH); + out_block_size = DEFAULT_BUF_LENGTH; + } + + buffer = malloc(out_block_size * sizeof(uint8_t)); + + device_count = rtlsdr_get_device_count(); + if (!device_count) { + fprintf(stderr, "No supported devices found.\n"); + exit(1); + } + + fprintf(stderr, "Found %d device(s):\n", device_count); + for (i = 0; i < device_count; i++) + fprintf(stderr, " %d: %s\n", i, rtlsdr_get_device_name(i)); + fprintf(stderr, "\n"); + + fprintf(stderr, "Using device %d: %s\n", + dev_index, + rtlsdr_get_device_name(dev_index)); + + r = rtlsdr_open(&dev, dev_index); + if (r < 0) { + fprintf(stderr, "Failed to open rtlsdr device #%d.\n", dev_index); + exit(1); + } +#ifndef _WIN32 + sigact.sa_handler = sighandler; + sigemptyset(&sigact.sa_mask); + sigact.sa_flags = 0; + sigaction(SIGINT, &sigact, NULL); + sigaction(SIGTERM, &sigact, NULL); + sigaction(SIGQUIT, &sigact, NULL); + sigaction(SIGPIPE, &sigact, NULL); +#else + SetConsoleCtrlHandler( (PHANDLER_ROUTINE) sighandler, TRUE ); +#endif + count = rtlsdr_get_tuner_gains(dev, NULL); + fprintf(stderr, "Supported gain values (%d): ", count); + + count = rtlsdr_get_tuner_gains(dev, gains); + for (i = 0; i < count; i++) + fprintf(stderr, "%.1f ", gains[i] / 10.0); + fprintf(stderr, "\n"); + + /* Set the sample rate */ + r = rtlsdr_set_sample_rate(dev, samp_rate); + if (r < 0) + fprintf(stderr, "WARNING: Failed to set sample rate.\n"); + + if (tuner_benchmark) { + if (rtlsdr_get_tuner_type(dev) == RTLSDR_TUNER_E4000) + e4k_benchmark(); + else + fprintf(stderr, "No E4000 tuner found, aborting.\n"); + + goto exit; + } + + /* Enable test mode */ + r = rtlsdr_set_testmode(dev, 1); + + /* Reset endpoint before we start reading from it (mandatory) */ + r = rtlsdr_reset_buffer(dev); + if (r < 0) + fprintf(stderr, "WARNING: Failed to reset buffers.\n"); + + if (ppm_benchmark && !sync_mode) { + fprintf(stderr, "Reporting PPM error measurement every %i seconds...\n", ppm_benchmark); + fprintf(stderr, "Press ^C after a few minutes.\n"); +#ifdef __APPLE__ + gettimeofday(&tv, NULL); + ppm_recent.tv_sec = tv.tv_sec; + ppm_recent.tv_nsec = tv.tv_usec*1000; + ppm_start.tv_sec = tv.tv_sec; + ppm_start.tv_nsec = tv.tv_usec*1000; +#elif __unix__ + clock_gettime(CLOCK_REALTIME, &ppm_recent); + clock_gettime(CLOCK_REALTIME, &ppm_start); +#endif + } + + if (sync_mode) { + fprintf(stderr, "Reading samples in sync mode...\n"); + while (!do_exit) { + r = rtlsdr_read_sync(dev, buffer, out_block_size, &n_read); + if (r < 0) { + fprintf(stderr, "WARNING: sync read failed.\n"); + break; + } + + if ((uint32_t)n_read < out_block_size) { + fprintf(stderr, "Short read, samples lost, exiting!\n"); + break; + } + } + } else { + fprintf(stderr, "Reading samples in async mode...\n"); + r = rtlsdr_read_async(dev, rtlsdr_callback, NULL, + DEFAULT_ASYNC_BUF_NUMBER, out_block_size); + } + + if (do_exit) { + fprintf(stderr, "\nUser cancel, exiting...\n"); + if (ppm_benchmark) { +#ifndef _WIN32 + ns = 1000000000L * (int64_t)(ppm_recent.tv_sec - ppm_start.tv_sec); + ns += (int64_t)(ppm_recent.tv_nsec - ppm_start.tv_nsec); + real_rate = (int)(ppm_total * 1000000000L / ns); + printf("Cumulative PPM error: %i\n", + (int)round((double)(1000000 * (real_rate - (int)samp_rate)) / (double)samp_rate)); +#endif + } + } + else + fprintf(stderr, "\nLibrary error %d, exiting...\n", r); + +exit: + rtlsdr_close(dev); + free (buffer); + + return r >= 0 ? r : -r; +} diff --git a/src/tuner_e4k.c b/src/tuner_e4k.c new file mode 100644 index 0000000..0232f88 --- /dev/null +++ b/src/tuner_e4k.c @@ -0,0 +1,978 @@ +/* + * Elonics E4000 tuner driver + * + * (C) 2011-2012 by Harald Welte + * (C) 2012 by Sylvain Munaut + * (C) 2012 by Hoernchen + * + * All Rights Reserved + * + * 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, see . + */ + +#include +#include +#include +#include +#include + +#include +#include + +#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) + +/* If this is defined, the limits are somewhat relaxed compared to what the + * vendor claims is possible */ +#define OUT_OF_SPEC + +#define MHZ(x) ((x)*1000*1000) +#define KHZ(x) ((x)*1000) + +uint32_t unsigned_delta(uint32_t a, uint32_t b) +{ + if (a > b) + return a - b; + else + return b - a; +} + +/* look-up table bit-width -> mask */ +static const uint8_t width2mask[] = { + 0, 1, 3, 7, 0xf, 0x1f, 0x3f, 0x7f, 0xff +}; + +/*********************************************************************** + * Register Access */ + +#if 0 +/*! \brief Write a register of the tuner chip + * \param[in] e4k reference to the tuner + * \param[in] reg number of the register + * \param[in] val value to be written + * \returns 0 on success, negative in case of error + */ +int e4k_reg_write(struct e4k_state *e4k, uint8_t reg, uint8_t val) +{ + /* FIXME */ + return 0; +} + +/*! \brief Read a register of the tuner chip + * \param[in] e4k reference to the tuner + * \param[in] reg number of the register + * \returns positive 8bit register contents on success, negative in case of error + */ +int e4k_reg_read(struct e4k_state *e4k, uint8_t reg) +{ + /* FIXME */ + return 0; +} +#endif + +/*! \brief Set or clear some (masked) bits inside a register + * \param[in] e4k reference to the tuner + * \param[in] reg number of the register + * \param[in] mask bit-mask of the value + * \param[in] val data value to be written to register + * \returns 0 on success, negative in case of error + */ +static int e4k_reg_set_mask(struct e4k_state *e4k, uint8_t reg, + uint8_t mask, uint8_t val) +{ + uint8_t tmp = e4k_reg_read(e4k, reg); + + if ((tmp & mask) == val) + return 0; + + return e4k_reg_write(e4k, reg, (tmp & ~mask) | (val & mask)); +} + +/*! \brief Write a given field inside a register + * \param[in] e4k reference to the tuner + * \param[in] field structure describing the field + * \param[in] val value to be written + * \returns 0 on success, negative in case of error + */ +static int e4k_field_write(struct e4k_state *e4k, const struct reg_field *field, uint8_t val) +{ + int rc; + uint8_t mask; + + rc = e4k_reg_read(e4k, field->reg); + if (rc < 0) + return rc; + + mask = width2mask[field->width] << field->shift; + + return e4k_reg_set_mask(e4k, field->reg, mask, val << field->shift); +} + +/*! \brief Read a given field inside a register + * \param[in] e4k reference to the tuner + * \param[in] field structure describing the field + * \returns positive value of the field, negative in case of error + */ +static int e4k_field_read(struct e4k_state *e4k, const struct reg_field *field) +{ + int rc; + + rc = e4k_reg_read(e4k, field->reg); + if (rc < 0) + return rc; + + rc = (rc >> field->shift) & width2mask[field->width]; + + return rc; +} + +/*********************************************************************** + * Filter Control */ + +static const uint32_t rf_filt_center_uhf[] = { + MHZ(360), MHZ(380), MHZ(405), MHZ(425), + MHZ(450), MHZ(475), MHZ(505), MHZ(540), + MHZ(575), MHZ(615), MHZ(670), MHZ(720), + MHZ(760), MHZ(840), MHZ(890), MHZ(970) +}; + +static const uint32_t rf_filt_center_l[] = { + MHZ(1300), MHZ(1320), MHZ(1360), MHZ(1410), + MHZ(1445), MHZ(1460), MHZ(1490), MHZ(1530), + MHZ(1560), MHZ(1590), MHZ(1640), MHZ(1660), + MHZ(1680), MHZ(1700), MHZ(1720), MHZ(1750) +}; + +static int closest_arr_idx(const uint32_t *arr, unsigned int arr_size, uint32_t freq) +{ + unsigned int i, bi = 0; + uint32_t best_delta = 0xffffffff; + + /* iterate over the array containing a list of the center + * frequencies, selecting the closest one */ + for (i = 0; i < arr_size; i++) { + uint32_t delta = unsigned_delta(freq, arr[i]); + if (delta < best_delta) { + best_delta = delta; + bi = i; + } + } + + return bi; +} + +/* return 4-bit index as to which RF filter to select */ +static int choose_rf_filter(enum e4k_band band, uint32_t freq) +{ + int rc; + + switch (band) { + case E4K_BAND_VHF2: + case E4K_BAND_VHF3: + rc = 0; + break; + case E4K_BAND_UHF: + rc = closest_arr_idx(rf_filt_center_uhf, + ARRAY_SIZE(rf_filt_center_uhf), + freq); + break; + case E4K_BAND_L: + rc = closest_arr_idx(rf_filt_center_l, + ARRAY_SIZE(rf_filt_center_l), + freq); + break; + default: + rc = -EINVAL; + break; + } + + return rc; +} + +/* \brief Automatically select apropriate RF filter based on e4k state */ +int e4k_rf_filter_set(struct e4k_state *e4k) +{ + int rc; + + rc = choose_rf_filter(e4k->band, e4k->vco.flo); + if (rc < 0) + return rc; + + return e4k_reg_set_mask(e4k, E4K_REG_FILT1, 0xF, rc); +} + +/* Mixer Filter */ +static const uint32_t mix_filter_bw[] = { + KHZ(27000), KHZ(27000), KHZ(27000), KHZ(27000), + KHZ(27000), KHZ(27000), KHZ(27000), KHZ(27000), + KHZ(4600), KHZ(4200), KHZ(3800), KHZ(3400), + KHZ(3300), KHZ(2700), KHZ(2300), KHZ(1900) +}; + +/* IF RC Filter */ +static const uint32_t ifrc_filter_bw[] = { + KHZ(21400), KHZ(21000), KHZ(17600), KHZ(14700), + KHZ(12400), KHZ(10600), KHZ(9000), KHZ(7700), + KHZ(6400), KHZ(5300), KHZ(4400), KHZ(3400), + KHZ(2600), KHZ(1800), KHZ(1200), KHZ(1000) +}; + +/* IF Channel Filter */ +static const uint32_t ifch_filter_bw[] = { + KHZ(5500), KHZ(5300), KHZ(5000), KHZ(4800), + KHZ(4600), KHZ(4400), KHZ(4300), KHZ(4100), + KHZ(3900), KHZ(3800), KHZ(3700), KHZ(3600), + KHZ(3400), KHZ(3300), KHZ(3200), KHZ(3100), + KHZ(3000), KHZ(2950), KHZ(2900), KHZ(2800), + KHZ(2750), KHZ(2700), KHZ(2600), KHZ(2550), + KHZ(2500), KHZ(2450), KHZ(2400), KHZ(2300), + KHZ(2280), KHZ(2240), KHZ(2200), KHZ(2150) +}; + +static const uint32_t *if_filter_bw[] = { + mix_filter_bw, + ifch_filter_bw, + ifrc_filter_bw, +}; + +static const uint32_t if_filter_bw_len[] = { + ARRAY_SIZE(mix_filter_bw), + ARRAY_SIZE(ifch_filter_bw), + ARRAY_SIZE(ifrc_filter_bw), +}; + +static const struct reg_field if_filter_fields[] = { + { + E4K_REG_FILT2, 4, 4, + }, + { + E4K_REG_FILT3, 0, 5, + }, + { + E4K_REG_FILT2, 0, 4, + } +}; + +static int find_if_bw(enum e4k_if_filter filter, uint32_t bw) +{ + if (filter >= ARRAY_SIZE(if_filter_bw)) + return -EINVAL; + + return closest_arr_idx(if_filter_bw[filter], + if_filter_bw_len[filter], bw); +} + +/*! \brief Set the filter band-width of any of the IF filters + * \param[in] e4k reference to the tuner chip + * \param[in] filter filter to be configured + * \param[in] bandwidth bandwidth to be configured + * \returns positive actual filter band-width, negative in case of error + */ +int e4k_if_filter_bw_set(struct e4k_state *e4k, enum e4k_if_filter filter, + uint32_t bandwidth) +{ + int bw_idx; + const struct reg_field *field; + + if (filter >= ARRAY_SIZE(if_filter_bw)) + return -EINVAL; + + bw_idx = find_if_bw(filter, bandwidth); + + field = &if_filter_fields[filter]; + + return e4k_field_write(e4k, field, bw_idx); +} + +/*! \brief Enables / Disables the channel filter + * \param[in] e4k reference to the tuner chip + * \param[in] on 1=filter enabled, 0=filter disabled + * \returns 0 success, negative errors + */ +int e4k_if_filter_chan_enable(struct e4k_state *e4k, int on) +{ + return e4k_reg_set_mask(e4k, E4K_REG_FILT3, E4K_FILT3_DISABLE, + on ? 0 : E4K_FILT3_DISABLE); +} + +int e4k_if_filter_bw_get(struct e4k_state *e4k, enum e4k_if_filter filter) +{ + const uint32_t *arr; + int rc; + const struct reg_field *field; + + if (filter >= ARRAY_SIZE(if_filter_bw)) + return -EINVAL; + + field = &if_filter_fields[filter]; + + rc = e4k_field_read(e4k, field); + if (rc < 0) + return rc; + + arr = if_filter_bw[filter]; + + return arr[rc]; +} + + +/*********************************************************************** + * Frequency Control */ + +#define E4K_FVCO_MIN_KHZ 2600000 /* 2.6 GHz */ +#define E4K_FVCO_MAX_KHZ 3900000 /* 3.9 GHz */ +#define E4K_PLL_Y 65536 + +#ifdef OUT_OF_SPEC +#define E4K_FLO_MIN_MHZ 50 +#define E4K_FLO_MAX_MHZ 2200UL +#else +#define E4K_FLO_MIN_MHZ 64 +#define E4K_FLO_MAX_MHZ 1700 +#endif + +struct pll_settings { + uint32_t freq; + uint8_t reg_synth7; + uint8_t mult; +}; + +static const struct pll_settings pll_vars[] = { + {KHZ(72400), (1 << 3) | 7, 48}, + {KHZ(81200), (1 << 3) | 6, 40}, + {KHZ(108300), (1 << 3) | 5, 32}, + {KHZ(162500), (1 << 3) | 4, 24}, + {KHZ(216600), (1 << 3) | 3, 16}, + {KHZ(325000), (1 << 3) | 2, 12}, + {KHZ(350000), (1 << 3) | 1, 8}, + {KHZ(432000), (0 << 3) | 3, 8}, + {KHZ(667000), (0 << 3) | 2, 6}, + {KHZ(1200000), (0 << 3) | 1, 4} +}; + +static int is_fvco_valid(uint32_t fvco_z) +{ + /* check if the resulting fosc is valid */ + if (fvco_z/1000 < E4K_FVCO_MIN_KHZ || + fvco_z/1000 > E4K_FVCO_MAX_KHZ) { + fprintf(stderr, "[E4K] Fvco %u invalid\n", fvco_z); + return 0; + } + + return 1; +} + +static int is_fosc_valid(uint32_t fosc) +{ + if (fosc < MHZ(16) || fosc > MHZ(30)) { + fprintf(stderr, "[E4K] Fosc %u invalid\n", fosc); + return 0; + } + + return 1; +} + +static int is_z_valid(uint32_t z) +{ + if (z > 255) { + fprintf(stderr, "[E4K] Z %u invalid\n", z); + return 0; + } + + return 1; +} + +/*! \brief Determine if 3-phase mixing shall be used or not */ +static int use_3ph_mixing(uint32_t flo) +{ + /* this is a magic number somewhre between VHF and UHF */ + if (flo < MHZ(350)) + return 1; + + return 0; +} + +/* \brief compute Fvco based on Fosc, Z and X + * \returns positive value (Fvco in Hz), 0 in case of error */ +static uint64_t compute_fvco(uint32_t f_osc, uint8_t z, uint16_t x) +{ + uint64_t fvco_z, fvco_x, fvco; + + /* We use the following transformation in order to + * handle the fractional part with integer arithmetic: + * Fvco = Fosc * (Z + X/Y) <=> Fvco = Fosc * Z + (Fosc * X)/Y + * This avoids X/Y = 0. However, then we would overflow a 32bit + * integer, as we cannot hold e.g. 26 MHz * 65536 either. + */ + fvco_z = (uint64_t)f_osc * z; + +#if 0 + if (!is_fvco_valid(fvco_z)) + return 0; +#endif + + fvco_x = ((uint64_t)f_osc * x) / E4K_PLL_Y; + + fvco = fvco_z + fvco_x; + + return fvco; +} + +static uint32_t compute_flo(uint32_t f_osc, uint8_t z, uint16_t x, uint8_t r) +{ + uint64_t fvco = compute_fvco(f_osc, z, x); + if (fvco == 0) + return -EINVAL; + + return fvco / r; +} + +static int e4k_band_set(struct e4k_state *e4k, enum e4k_band band) +{ + int rc; + + switch (band) { + case E4K_BAND_VHF2: + case E4K_BAND_VHF3: + case E4K_BAND_UHF: + e4k_reg_write(e4k, E4K_REG_BIAS, 3); + break; + case E4K_BAND_L: + e4k_reg_write(e4k, E4K_REG_BIAS, 0); + break; + } + + /* workaround: if we don't reset this register before writing to it, + * we get a gap between 325-350 MHz */ + rc = e4k_reg_set_mask(e4k, E4K_REG_SYNTH1, 0x06, 0); + rc = e4k_reg_set_mask(e4k, E4K_REG_SYNTH1, 0x06, band << 1); + if (rc >= 0) + e4k->band = band; + + return rc; +} + +/*! \brief Compute PLL parameters for givent target frequency + * \param[out] oscp Oscillator parameters, if computation successful + * \param[in] fosc Clock input frequency applied to the chip (Hz) + * \param[in] intended_flo target tuning frequency (Hz) + * \returns actual PLL frequency, as close as possible to intended_flo, + * 0 in case of error + */ +uint32_t e4k_compute_pll_params(struct e4k_pll_params *oscp, uint32_t fosc, uint32_t intended_flo) +{ + uint32_t i; + uint8_t r = 2; + uint64_t intended_fvco, remainder; + uint64_t z = 0; + uint32_t x; + int flo; + int three_phase_mixing = 0; + oscp->r_idx = 0; + + if (!is_fosc_valid(fosc)) + return 0; + + for(i = 0; i < ARRAY_SIZE(pll_vars); ++i) { + if(intended_flo < pll_vars[i].freq) { + three_phase_mixing = (pll_vars[i].reg_synth7 & 0x08) ? 1 : 0; + oscp->r_idx = pll_vars[i].reg_synth7; + r = pll_vars[i].mult; + break; + } + } + + //fprintf(stderr, "[E4K] Fint=%u, R=%u\n", intended_flo, r); + + /* flo(max) = 1700MHz, R(max) = 48, we need 64bit! */ + intended_fvco = (uint64_t)intended_flo * r; + + /* compute integral component of multiplier */ + z = intended_fvco / fosc; + + /* compute fractional part. this will not overflow, + * as fosc(max) = 30MHz and z(max) = 255 */ + remainder = intended_fvco - (fosc * z); + /* remainder(max) = 30MHz, E4K_PLL_Y = 65536 -> 64bit! */ + x = (remainder * E4K_PLL_Y) / fosc; + /* x(max) as result of this computation is 65536 */ + + flo = compute_flo(fosc, z, x, r); + + oscp->fosc = fosc; + oscp->flo = flo; + oscp->intended_flo = intended_flo; + oscp->r = r; +// oscp->r_idx = pll_vars[i].reg_synth7 & 0x0; + oscp->threephase = three_phase_mixing; + oscp->x = x; + oscp->z = z; + + return flo; +} + +int e4k_tune_params(struct e4k_state *e4k, struct e4k_pll_params *p) +{ + uint8_t val; + + /* program R + 3phase/2phase */ + e4k_reg_write(e4k, E4K_REG_SYNTH7, p->r_idx); + /* program Z */ + e4k_reg_write(e4k, E4K_REG_SYNTH3, p->z); + /* program X */ + e4k_reg_write(e4k, E4K_REG_SYNTH4, p->x & 0xff); + e4k_reg_write(e4k, E4K_REG_SYNTH5, p->x >> 8); + + /* we're in auto calibration mode, so there's no need to trigger it */ + + memcpy(&e4k->vco, p, sizeof(e4k->vco)); + + /* set the band */ + if (e4k->vco.flo < MHZ(140)) + e4k_band_set(e4k, E4K_BAND_VHF2); + else if (e4k->vco.flo < MHZ(350)) + e4k_band_set(e4k, E4K_BAND_VHF3); + else if (e4k->vco.flo < MHZ(1135)) + e4k_band_set(e4k, E4K_BAND_UHF); + else + e4k_band_set(e4k, E4K_BAND_L); + + /* select and set proper RF filter */ + e4k_rf_filter_set(e4k); + + return e4k->vco.flo; +} + +/*! \brief High-level tuning API, just specify frquency + * + * This function will compute matching PLL parameters, program them into the + * hardware and set the band as well as RF filter. + * + * \param[in] e4k reference to tuner + * \param[in] freq frequency in Hz + * \returns actual tuned frequency, negative in case of error + */ +int e4k_tune_freq(struct e4k_state *e4k, uint32_t freq) +{ + uint32_t rc; + struct e4k_pll_params p; + + /* determine PLL parameters */ + rc = e4k_compute_pll_params(&p, e4k->vco.fosc, freq); + if (!rc) + return -EINVAL; + + /* actually tune to those parameters */ + rc = e4k_tune_params(e4k, &p); + + /* check PLL lock */ + rc = e4k_reg_read(e4k, E4K_REG_SYNTH1); + if (!(rc & 0x01)) { + fprintf(stderr, "[E4K] PLL not locked for %u Hz!\n", freq); + return -1; + } + + return 0; +} + +/*********************************************************************** + * Gain Control */ + +static const int8_t if_stage1_gain[] = { + -3, 6 +}; + +static const int8_t if_stage23_gain[] = { + 0, 3, 6, 9 +}; + +static const int8_t if_stage4_gain[] = { + 0, 1, 2, 2 +}; + +static const int8_t if_stage56_gain[] = { + 3, 6, 9, 12, 15, 15, 15, 15 +}; + +static const int8_t *if_stage_gain[] = { + 0, + if_stage1_gain, + if_stage23_gain, + if_stage23_gain, + if_stage4_gain, + if_stage56_gain, + if_stage56_gain +}; + +static const uint8_t if_stage_gain_len[] = { + 0, + ARRAY_SIZE(if_stage1_gain), + ARRAY_SIZE(if_stage23_gain), + ARRAY_SIZE(if_stage23_gain), + ARRAY_SIZE(if_stage4_gain), + ARRAY_SIZE(if_stage56_gain), + ARRAY_SIZE(if_stage56_gain) +}; + +static const struct reg_field if_stage_gain_regs[] = { + { 0, 0, 0 }, + { E4K_REG_GAIN3, 0, 1 }, + { E4K_REG_GAIN3, 1, 2 }, + { E4K_REG_GAIN3, 3, 2 }, + { E4K_REG_GAIN3, 5, 2 }, + { E4K_REG_GAIN4, 0, 3 }, + { E4K_REG_GAIN4, 3, 3 } +}; + +static const int32_t lnagain[] = { + -50, 0, + -25, 1, + 0, 4, + 25, 5, + 50, 6, + 75, 7, + 100, 8, + 125, 9, + 150, 10, + 175, 11, + 200, 12, + 250, 13, + 300, 14, +}; + +static const int32_t enhgain[] = { + 10, 30, 50, 70 +}; + +int e4k_set_lna_gain(struct e4k_state *e4k, int32_t gain) +{ + uint32_t i; + for(i = 0; i < ARRAY_SIZE(lnagain)/2; ++i) { + if(lnagain[i*2] == gain) { + e4k_reg_set_mask(e4k, E4K_REG_GAIN1, 0xf, lnagain[i*2+1]); + return gain; + } + } + return -EINVAL; +} + +int e4k_set_enh_gain(struct e4k_state *e4k, int32_t gain) +{ + uint32_t i; + for(i = 0; i < ARRAY_SIZE(enhgain); ++i) { + if(enhgain[i] == gain) { + e4k_reg_set_mask(e4k, E4K_REG_AGC11, 0x7, E4K_AGC11_LNA_GAIN_ENH | (i << 1)); + return gain; + } + } + e4k_reg_set_mask(e4k, E4K_REG_AGC11, 0x7, 0); + + /* special case: 0 = off*/ + if(0 == gain) + return 0; + else + return -EINVAL; +} + +int e4k_enable_manual_gain(struct e4k_state *e4k, uint8_t manual) +{ + if (manual) { + /* Set LNA mode to manual */ + e4k_reg_set_mask(e4k, E4K_REG_AGC1, E4K_AGC1_MOD_MASK, E4K_AGC_MOD_SERIAL); + + /* Set Mixer Gain Control to manual */ + e4k_reg_set_mask(e4k, E4K_REG_AGC7, E4K_AGC7_MIX_GAIN_AUTO, 0); + } else { + /* Set LNA mode to auto */ + e4k_reg_set_mask(e4k, E4K_REG_AGC1, E4K_AGC1_MOD_MASK, E4K_AGC_MOD_IF_SERIAL_LNA_AUTON); + /* Set Mixer Gain Control to auto */ + e4k_reg_set_mask(e4k, E4K_REG_AGC7, E4K_AGC7_MIX_GAIN_AUTO, 1); + + e4k_reg_set_mask(e4k, E4K_REG_AGC11, 0x7, 0); + } + + return 0; +} + +static int find_stage_gain(uint8_t stage, int8_t val) +{ + const int8_t *arr; + int i; + + if (stage >= ARRAY_SIZE(if_stage_gain)) + return -EINVAL; + + arr = if_stage_gain[stage]; + + for (i = 0; i < if_stage_gain_len[stage]; i++) { + if (arr[i] == val) + return i; + } + return -EINVAL; +} + +/*! \brief Set the gain of one of the IF gain stages + * \param [e4k] handle to the tuner chip + * \param [stage] number of the stage (1..6) + * \param [value] gain value in dB + * \returns 0 on success, negative in case of error + */ +int e4k_if_gain_set(struct e4k_state *e4k, uint8_t stage, int8_t value) +{ + int rc; + uint8_t mask; + const struct reg_field *field; + + rc = find_stage_gain(stage, value); + if (rc < 0) + return rc; + + /* compute the bit-mask for the given gain field */ + field = &if_stage_gain_regs[stage]; + mask = width2mask[field->width] << field->shift; + + return e4k_reg_set_mask(e4k, field->reg, mask, rc << field->shift); +} + +int e4k_mixer_gain_set(struct e4k_state *e4k, int8_t value) +{ + uint8_t bit; + + switch (value) { + case 4: + bit = 0; + break; + case 12: + bit = 1; + break; + default: + return -EINVAL; + } + + return e4k_reg_set_mask(e4k, E4K_REG_GAIN2, 1, bit); +} + +int e4k_commonmode_set(struct e4k_state *e4k, int8_t value) +{ + if(value < 0) + return -EINVAL; + else if(value > 7) + return -EINVAL; + + return e4k_reg_set_mask(e4k, E4K_REG_DC7, 7, value); +} + +/*********************************************************************** + * DC Offset */ + +int e4k_manual_dc_offset(struct e4k_state *e4k, int8_t iofs, int8_t irange, int8_t qofs, int8_t qrange) +{ + int res; + + if((iofs < 0x00) || (iofs > 0x3f)) + return -EINVAL; + if((irange < 0x00) || (irange > 0x03)) + return -EINVAL; + if((qofs < 0x00) || (qofs > 0x3f)) + return -EINVAL; + if((qrange < 0x00) || (qrange > 0x03)) + return -EINVAL; + + res = e4k_reg_set_mask(e4k, E4K_REG_DC2, 0x3f, iofs); + if(res < 0) + return res; + + res = e4k_reg_set_mask(e4k, E4K_REG_DC3, 0x3f, qofs); + if(res < 0) + return res; + + res = e4k_reg_set_mask(e4k, E4K_REG_DC4, 0x33, (qrange << 4) | irange); + return res; +} + +/*! \brief Perform a DC offset calibration right now + * \param [e4k] handle to the tuner chip + */ +int e4k_dc_offset_calibrate(struct e4k_state *e4k) +{ + /* make sure the DC range detector is enabled */ + e4k_reg_set_mask(e4k, E4K_REG_DC5, E4K_DC5_RANGE_DET_EN, E4K_DC5_RANGE_DET_EN); + + return e4k_reg_write(e4k, E4K_REG_DC1, 0x01); +} + + +static const int8_t if_gains_max[] = { + 0, 6, 9, 9, 2, 15, 15 +}; + +struct gain_comb { + int8_t mixer_gain; + int8_t if1_gain; + uint8_t reg; +}; + +static const struct gain_comb dc_gain_comb[] = { + { 4, -3, 0x50 }, + { 4, 6, 0x51 }, + { 12, -3, 0x52 }, + { 12, 6, 0x53 }, +}; + +#define TO_LUT(offset, range) (offset | (range << 6)) + +int e4k_dc_offset_gen_table(struct e4k_state *e4k) +{ + uint32_t i; + + /* FIXME: read ont current gain values and write them back + * before returning to the caller */ + + /* disable auto mixer gain */ + e4k_reg_set_mask(e4k, E4K_REG_AGC7, E4K_AGC7_MIX_GAIN_AUTO, 0); + + /* set LNA/IF gain to full manual */ + e4k_reg_set_mask(e4k, E4K_REG_AGC1, E4K_AGC1_MOD_MASK, + E4K_AGC_MOD_SERIAL); + + /* set all 'other' gains to maximum */ + for (i = 2; i <= 6; i++) + e4k_if_gain_set(e4k, i, if_gains_max[i]); + + /* iterate over all mixer + if_stage_1 gain combinations */ + for (i = 0; i < ARRAY_SIZE(dc_gain_comb); i++) { + uint8_t offs_i, offs_q, range, range_i, range_q; + + /* set the combination of mixer / if1 gain */ + e4k_mixer_gain_set(e4k, dc_gain_comb[i].mixer_gain); + e4k_if_gain_set(e4k, 1, dc_gain_comb[i].if1_gain); + + /* perform actual calibration */ + e4k_dc_offset_calibrate(e4k); + + /* extract I/Q offset and range values */ + offs_i = e4k_reg_read(e4k, E4K_REG_DC2) & 0x3f; + offs_q = e4k_reg_read(e4k, E4K_REG_DC3) & 0x3f; + range = e4k_reg_read(e4k, E4K_REG_DC4); + range_i = range & 0x3; + range_q = (range >> 4) & 0x3; + + fprintf(stderr, "[E4K] Table %u I=%u/%u, Q=%u/%u\n", + i, range_i, offs_i, range_q, offs_q); + + /* write into the table */ + e4k_reg_write(e4k, dc_gain_comb[i].reg, + TO_LUT(offs_q, range_q)); + e4k_reg_write(e4k, dc_gain_comb[i].reg + 0x10, + TO_LUT(offs_i, range_i)); + } + + return 0; +} + +/*********************************************************************** + * Initialization */ + +static int magic_init(struct e4k_state *e4k) +{ + e4k_reg_write(e4k, 0x7e, 0x01); + e4k_reg_write(e4k, 0x7f, 0xfe); + e4k_reg_write(e4k, 0x82, 0x00); + e4k_reg_write(e4k, 0x86, 0x50); /* polarity A */ + e4k_reg_write(e4k, 0x87, 0x20); + e4k_reg_write(e4k, 0x88, 0x01); + e4k_reg_write(e4k, 0x9f, 0x7f); + e4k_reg_write(e4k, 0xa0, 0x07); + + return 0; +} + +/*! \brief Initialize the E4K tuner + */ +int e4k_init(struct e4k_state *e4k) +{ + /* make a dummy i2c read or write command, will not be ACKed! */ + e4k_reg_read(e4k, 0); + + /* Make sure we reset everything and clear POR indicator */ + e4k_reg_write(e4k, E4K_REG_MASTER1, + E4K_MASTER1_RESET | + E4K_MASTER1_NORM_STBY | + E4K_MASTER1_POR_DET + ); + + /* Configure clock input */ + e4k_reg_write(e4k, E4K_REG_CLK_INP, 0x00); + + /* Disable clock output */ + e4k_reg_write(e4k, E4K_REG_REF_CLK, 0x00); + e4k_reg_write(e4k, E4K_REG_CLKOUT_PWDN, 0x96); + + /* Write some magic values into registers */ + magic_init(e4k); +#if 0 + /* Set common mode voltage a bit higher for more margin 850 mv */ + e4k_commonmode_set(e4k, 4); + + /* Initialize DC offset lookup tables */ + e4k_dc_offset_gen_table(e4k); + + /* Enable time variant DC correction */ + e4k_reg_write(e4k, E4K_REG_DCTIME1, 0x01); + e4k_reg_write(e4k, E4K_REG_DCTIME2, 0x01); +#endif + + /* Set LNA mode to manual */ + e4k_reg_write(e4k, E4K_REG_AGC4, 0x10); /* High threshold */ + e4k_reg_write(e4k, E4K_REG_AGC5, 0x04); /* Low threshold */ + e4k_reg_write(e4k, E4K_REG_AGC6, 0x1a); /* LNA calib + loop rate */ + + e4k_reg_set_mask(e4k, E4K_REG_AGC1, E4K_AGC1_MOD_MASK, + E4K_AGC_MOD_SERIAL); + + /* Set Mixer Gain Control to manual */ + e4k_reg_set_mask(e4k, E4K_REG_AGC7, E4K_AGC7_MIX_GAIN_AUTO, 0); + +#if 0 + /* Enable LNA Gain enhancement */ + e4k_reg_set_mask(e4k, E4K_REG_AGC11, 0x7, + E4K_AGC11_LNA_GAIN_ENH | (2 << 1)); + + /* Enable automatic IF gain mode switching */ + e4k_reg_set_mask(e4k, E4K_REG_AGC8, 0x1, E4K_AGC8_SENS_LIN_AUTO); +#endif + + /* Use auto-gain as default */ + e4k_enable_manual_gain(e4k, 0); + + /* Select moderate gain levels */ + e4k_if_gain_set(e4k, 1, 6); + e4k_if_gain_set(e4k, 2, 0); + e4k_if_gain_set(e4k, 3, 0); + e4k_if_gain_set(e4k, 4, 0); + e4k_if_gain_set(e4k, 5, 9); + e4k_if_gain_set(e4k, 6, 9); + + /* Set the most narrow filter we can possibly use */ + e4k_if_filter_bw_set(e4k, E4K_IF_FILTER_MIX, KHZ(1900)); + e4k_if_filter_bw_set(e4k, E4K_IF_FILTER_RC, KHZ(1000)); + e4k_if_filter_bw_set(e4k, E4K_IF_FILTER_CHAN, KHZ(2150)); + e4k_if_filter_chan_enable(e4k, 1); + + /* Disable time variant DC correction and LUT */ + e4k_reg_set_mask(e4k, E4K_REG_DC5, 0x03, 0); + e4k_reg_set_mask(e4k, E4K_REG_DCTIME1, 0x03, 0); + e4k_reg_set_mask(e4k, E4K_REG_DCTIME2, 0x03, 0); + + return 0; +} diff --git a/src/tuner_fc0012.c b/src/tuner_fc0012.c new file mode 100644 index 0000000..768cf1c --- /dev/null +++ b/src/tuner_fc0012.c @@ -0,0 +1,345 @@ +/* + * Fitipower FC0012 tuner driver + * + * Copyright (C) 2012 Hans-Frieder Vogt + * + * modified for use in librtlsdr + * Copyright (C) 2012 Steve Markgraf + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include +#include + +#include "rtlsdr_i2c.h" +#include "tuner_fc0012.h" + +static int fc0012_writereg(void *dev, uint8_t reg, uint8_t val) +{ + uint8_t data[2]; + data[0] = reg; + data[1] = val; + + if (rtlsdr_i2c_write_fn(dev, FC0012_I2C_ADDR, data, 2) < 0) + return -1; + + return 0; +} + +static int fc0012_readreg(void *dev, uint8_t reg, uint8_t *val) +{ + uint8_t data = reg; + + if (rtlsdr_i2c_write_fn(dev, FC0012_I2C_ADDR, &data, 1) < 0) + return -1; + + if (rtlsdr_i2c_read_fn(dev, FC0012_I2C_ADDR, &data, 1) < 0) + return -1; + + *val = data; + + return 0; +} + +/* Incomplete list of register settings: + * + * Name Reg Bits Desc + * CHIP_ID 0x00 0-7 Chip ID (constant 0xA1) + * RF_A 0x01 0-3 Number of count-to-9 cycles in RF + * divider (suggested: 2..9) + * RF_M 0x02 0-7 Total number of cycles (to-8 and to-9) + * in RF divider + * RF_K_HIGH 0x03 0-6 Bits 8..14 of fractional divider + * RF_K_LOW 0x04 0-7 Bits 0..7 of fractional RF divider + * RF_OUTDIV_A 0x05 3-7 Power of two required? + * LNA_POWER_DOWN 0x06 0 Set to 1 to switch off low noise amp + * RF_OUTDIV_B 0x06 1 Set to select 3 instead of 2 for the + * RF output divider + * VCO_SPEED 0x06 3 Select tuning range of VCO: + * 0 = Low range, (ca. 1.1 - 1.5GHz) + * 1 = High range (ca. 1.4 - 1.8GHz) + * BANDWIDTH 0x06 6-7 Set bandwidth. 6MHz = 0x80, 7MHz=0x40 + * 8MHz=0x00 + * XTAL_SPEED 0x07 5 Set to 1 for 28.8MHz Crystal input + * or 0 for 36MHz + * 0x08 0-7 + * EN_CAL_RSSI 0x09 4 Enable calibrate RSSI + * (Receive Signal Strength Indicator) + * LNA_FORCE 0x0d 0 + * AGC_FORCE 0x0d ? + * LNA_GAIN 0x13 3-4 Low noise amp gain + * LNA_COMPS 0x15 3 ? + * VCO_CALIB 0x0e 7 Set high then low to calibrate VCO + * (fast lock?) + * VCO_VOLTAGE 0x0e 0-6 Read Control voltage of VCO + * (big value -> low freq) + */ + +int fc0012_init(void *dev) +{ + int ret = 0; + unsigned int i; + uint8_t reg[] = { + 0x00, /* dummy reg. 0 */ + 0x05, /* reg. 0x01 */ + 0x10, /* reg. 0x02 */ + 0x00, /* reg. 0x03 */ + 0x00, /* reg. 0x04 */ + 0x0f, /* reg. 0x05: may also be 0x0a */ + 0x00, /* reg. 0x06: divider 2, VCO slow */ + 0x00, /* reg. 0x07: may also be 0x0f */ + 0xff, /* reg. 0x08: AGC Clock divide by 256, AGC gain 1/256, + Loop Bw 1/8 */ + 0x6e, /* reg. 0x09: Disable LoopThrough, Enable LoopThrough: 0x6f */ + 0xb8, /* reg. 0x0a: Disable LO Test Buffer */ + 0x82, /* reg. 0x0b: Output Clock is same as clock frequency, + may also be 0x83 */ + 0xfc, /* reg. 0x0c: depending on AGC Up-Down mode, may need 0xf8 */ + 0x02, /* reg. 0x0d: AGC Not Forcing & LNA Forcing, 0x02 for DVB-T */ + 0x00, /* reg. 0x0e */ + 0x00, /* reg. 0x0f */ + 0x00, /* reg. 0x10: may also be 0x0d */ + 0x00, /* reg. 0x11 */ + 0x1f, /* reg. 0x12: Set to maximum gain */ + 0x08, /* reg. 0x13: Set to Middle Gain: 0x08, + Low Gain: 0x00, High Gain: 0x10, enable IX2: 0x80 */ + 0x00, /* reg. 0x14 */ + 0x04, /* reg. 0x15: Enable LNA COMPS */ + }; + +#if 0 + switch (rtlsdr_get_tuner_clock(dev)) { + case FC_XTAL_27_MHZ: + case FC_XTAL_28_8_MHZ: + reg[0x07] |= 0x20; + break; + case FC_XTAL_36_MHZ: + default: + break; + } +#endif + reg[0x07] |= 0x20; + +// if (priv->dual_master) + reg[0x0c] |= 0x02; + + for (i = 1; i < sizeof(reg); i++) { + ret = fc0012_writereg(dev, i, reg[i]); + if (ret) + break; + } + + return ret; +} + +int fc0012_set_params(void *dev, uint32_t freq, uint32_t bandwidth) +{ + int i, ret = 0; + uint8_t reg[7], am, pm, multi, tmp; + uint64_t f_vco; + uint32_t xtal_freq_div_2; + uint16_t xin, xdiv; + int vco_select = 0; + + xtal_freq_div_2 = rtlsdr_get_tuner_clock(dev) / 2; + + /* select frequency divider and the frequency of VCO */ + if (freq < 37084000) { /* freq * 96 < 3560000000 */ + multi = 96; + reg[5] = 0x82; + reg[6] = 0x00; + } else if (freq < 55625000) { /* freq * 64 < 3560000000 */ + multi = 64; + reg[5] = 0x82; + reg[6] = 0x02; + } else if (freq < 74167000) { /* freq * 48 < 3560000000 */ + multi = 48; + reg[5] = 0x42; + reg[6] = 0x00; + } else if (freq < 111250000) { /* freq * 32 < 3560000000 */ + multi = 32; + reg[5] = 0x42; + reg[6] = 0x02; + } else if (freq < 148334000) { /* freq * 24 < 3560000000 */ + multi = 24; + reg[5] = 0x22; + reg[6] = 0x00; + } else if (freq < 222500000) { /* freq * 16 < 3560000000 */ + multi = 16; + reg[5] = 0x22; + reg[6] = 0x02; + } else if (freq < 296667000) { /* freq * 12 < 3560000000 */ + multi = 12; + reg[5] = 0x12; + reg[6] = 0x00; + } else if (freq < 445000000) { /* freq * 8 < 3560000000 */ + multi = 8; + reg[5] = 0x12; + reg[6] = 0x02; + } else if (freq < 593334000) { /* freq * 6 < 3560000000 */ + multi = 6; + reg[5] = 0x0a; + reg[6] = 0x00; + } else { + multi = 4; + reg[5] = 0x0a; + reg[6] = 0x02; + } + + f_vco = freq * multi; + + if (f_vco >= 3060000000U) { + reg[6] |= 0x08; + vco_select = 1; + } + + /* From divided value (XDIV) determined the FA and FP value */ + xdiv = (uint16_t)(f_vco / xtal_freq_div_2); + if ((f_vco - xdiv * xtal_freq_div_2) >= (xtal_freq_div_2 / 2)) + xdiv++; + + pm = (uint8_t)(xdiv / 8); + am = (uint8_t)(xdiv - (8 * pm)); + + if (am < 2) { + am += 8; + pm--; + } + + if (pm > 31) { + reg[1] = am + (8 * (pm - 31)); + reg[2] = 31; + } else { + reg[1] = am; + reg[2] = pm; + } + + if ((reg[1] > 15) || (reg[2] < 0x0b)) { + fprintf(stderr, "[FC0012] no valid PLL combination " + "found for %u Hz!\n", freq); + return -1; + } + + /* fix clock out */ + reg[6] |= 0x20; + + /* From VCO frequency determines the XIN ( fractional part of Delta + Sigma PLL) and divided value (XDIV) */ + xin = (uint16_t)((f_vco - (f_vco / xtal_freq_div_2) * xtal_freq_div_2) / 1000); + xin = (xin << 15) / (xtal_freq_div_2 / 1000); + if (xin >= 16384) + xin += 32768; + + reg[3] = xin >> 8; /* xin with 9 bit resolution */ + reg[4] = xin & 0xff; + + reg[6] &= 0x3f; /* bits 6 and 7 describe the bandwidth */ + switch (bandwidth) { + case 6000000: + reg[6] |= 0x80; + break; + case 7000000: + reg[6] |= 0x40; + break; + case 8000000: + default: + break; + } + + /* modified for Realtek demod */ + reg[5] |= 0x07; + + for (i = 1; i <= 6; i++) { + ret = fc0012_writereg(dev, i, reg[i]); + if (ret) + goto exit; + } + + /* VCO Calibration */ + ret = fc0012_writereg(dev, 0x0e, 0x80); + if (!ret) + ret = fc0012_writereg(dev, 0x0e, 0x00); + + /* VCO Re-Calibration if needed */ + if (!ret) + ret = fc0012_writereg(dev, 0x0e, 0x00); + + if (!ret) { +// msleep(10); + ret = fc0012_readreg(dev, 0x0e, &tmp); + } + if (ret) + goto exit; + + /* vco selection */ + tmp &= 0x3f; + + if (vco_select) { + if (tmp > 0x3c) { + reg[6] &= ~0x08; + ret = fc0012_writereg(dev, 0x06, reg[6]); + if (!ret) + ret = fc0012_writereg(dev, 0x0e, 0x80); + if (!ret) + ret = fc0012_writereg(dev, 0x0e, 0x00); + } + } else { + if (tmp < 0x02) { + reg[6] |= 0x08; + ret = fc0012_writereg(dev, 0x06, reg[6]); + if (!ret) + ret = fc0012_writereg(dev, 0x0e, 0x80); + if (!ret) + ret = fc0012_writereg(dev, 0x0e, 0x00); + } + } + +exit: + return ret; +} + +int fc0012_set_gain(void *dev, int gain) +{ + int ret; + uint8_t tmp = 0; + + ret = fc0012_readreg(dev, 0x13, &tmp); + + /* mask bits off */ + tmp &= 0xe0; + + switch (gain) { + case -99: /* -9.9 dB */ + tmp |= 0x02; + break; + case -40: /* -4 dB */ + break; + case 71: + tmp |= 0x08; /* 7.1 dB */ + break; + case 179: + tmp |= 0x17; /* 17.9 dB */ + break; + case 192: + default: + tmp |= 0x10; /* 19.2 dB */ + break; + } + + ret = fc0012_writereg(dev, 0x13, tmp); + + return ret; +} diff --git a/src/tuner_fc0013.c b/src/tuner_fc0013.c new file mode 100644 index 0000000..78b696e --- /dev/null +++ b/src/tuner_fc0013.c @@ -0,0 +1,500 @@ +/* + * Fitipower FC0013 tuner driver + * + * Copyright (C) 2012 Hans-Frieder Vogt + * partially based on driver code from Fitipower + * Copyright (C) 2010 Fitipower Integrated Technology Inc + * + * modified for use in librtlsdr + * Copyright (C) 2012 Steve Markgraf + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +#include +#include + +#include "rtlsdr_i2c.h" +#include "tuner_fc0013.h" + +static int fc0013_writereg(void *dev, uint8_t reg, uint8_t val) +{ + uint8_t data[2]; + data[0] = reg; + data[1] = val; + + if (rtlsdr_i2c_write_fn(dev, FC0013_I2C_ADDR, data, 2) < 0) + return -1; + + return 0; +} + +static int fc0013_readreg(void *dev, uint8_t reg, uint8_t *val) +{ + uint8_t data = reg; + + if (rtlsdr_i2c_write_fn(dev, FC0013_I2C_ADDR, &data, 1) < 0) + return -1; + + if (rtlsdr_i2c_read_fn(dev, FC0013_I2C_ADDR, &data, 1) < 0) + return -1; + + *val = data; + + return 0; +} + +int fc0013_init(void *dev) +{ + int ret = 0; + unsigned int i; + uint8_t reg[] = { + 0x00, /* reg. 0x00: dummy */ + 0x09, /* reg. 0x01 */ + 0x16, /* reg. 0x02 */ + 0x00, /* reg. 0x03 */ + 0x00, /* reg. 0x04 */ + 0x17, /* reg. 0x05 */ + 0x02, /* reg. 0x06: LPF bandwidth */ + 0x0a, /* reg. 0x07: CHECK */ + 0xff, /* reg. 0x08: AGC Clock divide by 256, AGC gain 1/256, + Loop Bw 1/8 */ + 0x6e, /* reg. 0x09: Disable LoopThrough, Enable LoopThrough: 0x6f */ + 0xb8, /* reg. 0x0a: Disable LO Test Buffer */ + 0x82, /* reg. 0x0b: CHECK */ + 0xfc, /* reg. 0x0c: depending on AGC Up-Down mode, may need 0xf8 */ + 0x01, /* reg. 0x0d: AGC Not Forcing & LNA Forcing, may need 0x02 */ + 0x00, /* reg. 0x0e */ + 0x00, /* reg. 0x0f */ + 0x00, /* reg. 0x10 */ + 0x00, /* reg. 0x11 */ + 0x00, /* reg. 0x12 */ + 0x00, /* reg. 0x13 */ + 0x50, /* reg. 0x14: DVB-t High Gain, UHF. + Middle Gain: 0x48, Low Gain: 0x40 */ + 0x01, /* reg. 0x15 */ + }; +#if 0 + switch (rtlsdr_get_tuner_clock(dev)) { + case FC_XTAL_27_MHZ: + case FC_XTAL_28_8_MHZ: + reg[0x07] |= 0x20; + break; + case FC_XTAL_36_MHZ: + default: + break; + } +#endif + reg[0x07] |= 0x20; + +// if (dev->dual_master) + reg[0x0c] |= 0x02; + + for (i = 1; i < sizeof(reg); i++) { + ret = fc0013_writereg(dev, i, reg[i]); + if (ret < 0) + break; + } + + return ret; +} + +int fc0013_rc_cal_add(void *dev, int rc_val) +{ + int ret; + uint8_t rc_cal; + int val; + + /* push rc_cal value, get rc_cal value */ + ret = fc0013_writereg(dev, 0x10, 0x00); + if (ret) + goto error_out; + + /* get rc_cal value */ + ret = fc0013_readreg(dev, 0x10, &rc_cal); + if (ret) + goto error_out; + + rc_cal &= 0x0f; + + val = (int)rc_cal + rc_val; + + /* forcing rc_cal */ + ret = fc0013_writereg(dev, 0x0d, 0x11); + if (ret) + goto error_out; + + /* modify rc_cal value */ + if (val > 15) + ret = fc0013_writereg(dev, 0x10, 0x0f); + else if (val < 0) + ret = fc0013_writereg(dev, 0x10, 0x00); + else + ret = fc0013_writereg(dev, 0x10, (uint8_t)val); + +error_out: + return ret; +} + +int fc0013_rc_cal_reset(void *dev) +{ + int ret; + + ret = fc0013_writereg(dev, 0x0d, 0x01); + if (!ret) + ret = fc0013_writereg(dev, 0x10, 0x00); + + return ret; +} + +static int fc0013_set_vhf_track(void *dev, uint32_t freq) +{ + int ret; + uint8_t tmp; + + ret = fc0013_readreg(dev, 0x1d, &tmp); + if (ret) + goto error_out; + tmp &= 0xe3; + if (freq <= 177500000) { /* VHF Track: 7 */ + ret = fc0013_writereg(dev, 0x1d, tmp | 0x1c); + } else if (freq <= 184500000) { /* VHF Track: 6 */ + ret = fc0013_writereg(dev, 0x1d, tmp | 0x18); + } else if (freq <= 191500000) { /* VHF Track: 5 */ + ret = fc0013_writereg(dev, 0x1d, tmp | 0x14); + } else if (freq <= 198500000) { /* VHF Track: 4 */ + ret = fc0013_writereg(dev, 0x1d, tmp | 0x10); + } else if (freq <= 205500000) { /* VHF Track: 3 */ + ret = fc0013_writereg(dev, 0x1d, tmp | 0x0c); + } else if (freq <= 219500000) { /* VHF Track: 2 */ + ret = fc0013_writereg(dev, 0x1d, tmp | 0x08); + } else if (freq < 300000000) { /* VHF Track: 1 */ + ret = fc0013_writereg(dev, 0x1d, tmp | 0x04); + } else { /* UHF and GPS */ + ret = fc0013_writereg(dev, 0x1d, tmp | 0x1c); + } + +error_out: + return ret; +} + +int fc0013_set_params(void *dev, uint32_t freq, uint32_t bandwidth) +{ + int i, ret = 0; + uint8_t reg[7], am, pm, multi, tmp; + uint64_t f_vco; + uint32_t xtal_freq_div_2; + uint16_t xin, xdiv; + int vco_select = 0; + + xtal_freq_div_2 = rtlsdr_get_tuner_clock(dev) / 2; + + /* set VHF track */ + ret = fc0013_set_vhf_track(dev, freq); + if (ret) + goto exit; + + if (freq < 300000000) { + /* enable VHF filter */ + ret = fc0013_readreg(dev, 0x07, &tmp); + if (ret) + goto exit; + ret = fc0013_writereg(dev, 0x07, tmp | 0x10); + if (ret) + goto exit; + + /* disable UHF & disable GPS */ + ret = fc0013_readreg(dev, 0x14, &tmp); + if (ret) + goto exit; + ret = fc0013_writereg(dev, 0x14, tmp & 0x1f); + if (ret) + goto exit; + } else if (freq <= 862000000) { + /* disable VHF filter */ + ret = fc0013_readreg(dev, 0x07, &tmp); + if (ret) + goto exit; + ret = fc0013_writereg(dev, 0x07, tmp & 0xef); + if (ret) + goto exit; + + /* enable UHF & disable GPS */ + ret = fc0013_readreg(dev, 0x14, &tmp); + if (ret) + goto exit; + ret = fc0013_writereg(dev, 0x14, (tmp & 0x1f) | 0x40); + if (ret) + goto exit; + } else { + /* disable VHF filter */ + ret = fc0013_readreg(dev, 0x07, &tmp); + if (ret) + goto exit; + ret = fc0013_writereg(dev, 0x07, tmp & 0xef); + if (ret) + goto exit; + + /* disable UHF & enable GPS */ + ret = fc0013_readreg(dev, 0x14, &tmp); + if (ret) + goto exit; + ret = fc0013_writereg(dev, 0x14, (tmp & 0x1f) | 0x20); + if (ret) + goto exit; + } + + /* select frequency divider and the frequency of VCO */ + if (freq < 37084000) { /* freq * 96 < 3560000000 */ + multi = 96; + reg[5] = 0x82; + reg[6] = 0x00; + } else if (freq < 55625000) { /* freq * 64 < 3560000000 */ + multi = 64; + reg[5] = 0x02; + reg[6] = 0x02; + } else if (freq < 74167000) { /* freq * 48 < 3560000000 */ + multi = 48; + reg[5] = 0x42; + reg[6] = 0x00; + } else if (freq < 111250000) { /* freq * 32 < 3560000000 */ + multi = 32; + reg[5] = 0x82; + reg[6] = 0x02; + } else if (freq < 148334000) { /* freq * 24 < 3560000000 */ + multi = 24; + reg[5] = 0x22; + reg[6] = 0x00; + } else if (freq < 222500000) { /* freq * 16 < 3560000000 */ + multi = 16; + reg[5] = 0x42; + reg[6] = 0x02; + } else if (freq < 296667000) { /* freq * 12 < 3560000000 */ + multi = 12; + reg[5] = 0x12; + reg[6] = 0x00; + } else if (freq < 445000000) { /* freq * 8 < 3560000000 */ + multi = 8; + reg[5] = 0x22; + reg[6] = 0x02; + } else if (freq < 593334000) { /* freq * 6 < 3560000000 */ + multi = 6; + reg[5] = 0x0a; + reg[6] = 0x00; + } else if (freq < 950000000) { /* freq * 4 < 3800000000 */ + multi = 4; + reg[5] = 0x12; + reg[6] = 0x02; + } else { + multi = 2; + reg[5] = 0x0a; + reg[6] = 0x02; + } + + f_vco = freq * multi; + + if (f_vco >= 3060000000U) { + reg[6] |= 0x08; + vco_select = 1; + } + + /* From divided value (XDIV) determined the FA and FP value */ + xdiv = (uint16_t)(f_vco / xtal_freq_div_2); + if ((f_vco - xdiv * xtal_freq_div_2) >= (xtal_freq_div_2 / 2)) + xdiv++; + + pm = (uint8_t)(xdiv / 8); + am = (uint8_t)(xdiv - (8 * pm)); + + if (am < 2) { + am += 8; + pm--; + } + + if (pm > 31) { + reg[1] = am + (8 * (pm - 31)); + reg[2] = 31; + } else { + reg[1] = am; + reg[2] = pm; + } + + if ((reg[1] > 15) || (reg[2] < 0x0b)) { + fprintf(stderr, "[FC0013] no valid PLL combination " + "found for %u Hz!\n", freq); + return -1; + } + + /* fix clock out */ + reg[6] |= 0x20; + + /* From VCO frequency determines the XIN ( fractional part of Delta + Sigma PLL) and divided value (XDIV) */ + xin = (uint16_t)((f_vco - (f_vco / xtal_freq_div_2) * xtal_freq_div_2) / 1000); + xin = (xin << 15) / (xtal_freq_div_2 / 1000); + if (xin >= 16384) + xin += 32768; + + reg[3] = xin >> 8; + reg[4] = xin & 0xff; + + reg[6] &= 0x3f; /* bits 6 and 7 describe the bandwidth */ + switch (bandwidth) { + case 6000000: + reg[6] |= 0x80; + break; + case 7000000: + reg[6] |= 0x40; + break; + case 8000000: + default: + break; + } + + /* modified for Realtek demod */ + reg[5] |= 0x07; + + for (i = 1; i <= 6; i++) { + ret = fc0013_writereg(dev, i, reg[i]); + if (ret) + goto exit; + } + + ret = fc0013_readreg(dev, 0x11, &tmp); + if (ret) + goto exit; + if (multi == 64) + ret = fc0013_writereg(dev, 0x11, tmp | 0x04); + else + ret = fc0013_writereg(dev, 0x11, tmp & 0xfb); + if (ret) + goto exit; + + /* VCO Calibration */ + ret = fc0013_writereg(dev, 0x0e, 0x80); + if (!ret) + ret = fc0013_writereg(dev, 0x0e, 0x00); + + /* VCO Re-Calibration if needed */ + if (!ret) + ret = fc0013_writereg(dev, 0x0e, 0x00); + + if (!ret) { +// msleep(10); + ret = fc0013_readreg(dev, 0x0e, &tmp); + } + if (ret) + goto exit; + + /* vco selection */ + tmp &= 0x3f; + + if (vco_select) { + if (tmp > 0x3c) { + reg[6] &= ~0x08; + ret = fc0013_writereg(dev, 0x06, reg[6]); + if (!ret) + ret = fc0013_writereg(dev, 0x0e, 0x80); + if (!ret) + ret = fc0013_writereg(dev, 0x0e, 0x00); + } + } else { + if (tmp < 0x02) { + reg[6] |= 0x08; + ret = fc0013_writereg(dev, 0x06, reg[6]); + if (!ret) + ret = fc0013_writereg(dev, 0x0e, 0x80); + if (!ret) + ret = fc0013_writereg(dev, 0x0e, 0x00); + } + } + +exit: + return ret; +} + +int fc0013_set_gain_mode(void *dev, int manual) +{ + int ret = 0; + uint8_t tmp = 0; + + ret |= fc0013_readreg(dev, 0x0d, &tmp); + + if (manual) + tmp |= (1 << 3); + else + tmp &= ~(1 << 3); + + ret |= fc0013_writereg(dev, 0x0d, tmp); + + /* set a fixed IF-gain for now */ + ret |= fc0013_writereg(dev, 0x13, 0x0a); + + return ret; +} + +int fc0013_lna_gains[] ={ + -99, 0x02, + -73, 0x03, + -65, 0x05, + -63, 0x04, + -63, 0x00, + -60, 0x07, + -58, 0x01, + -54, 0x06, + 58, 0x0f, + 61, 0x0e, + 63, 0x0d, + 65, 0x0c, + 67, 0x0b, + 68, 0x0a, + 70, 0x09, + 71, 0x08, + 179, 0x17, + 181, 0x16, + 182, 0x15, + 184, 0x14, + 186, 0x13, + 188, 0x12, + 191, 0x11, + 197, 0x10 +}; + +#define GAIN_CNT (sizeof(fc0013_lna_gains) / sizeof(int) / 2) + +int fc0013_set_lna_gain(void *dev, int gain) +{ + int ret = 0; + unsigned int i; + uint8_t tmp = 0; + + ret |= fc0013_readreg(dev, 0x14, &tmp); + + /* mask bits off */ + tmp &= 0xe0; + + for (i = 0; i < GAIN_CNT; i++) { + if ((fc0013_lna_gains[i*2] >= gain) || (i+1 == GAIN_CNT)) { + tmp |= fc0013_lna_gains[i*2 + 1]; + break; + } + } + + /* set gain */ + ret |= fc0013_writereg(dev, 0x14, tmp); + + return ret; +} diff --git a/src/tuner_fc2580.c b/src/tuner_fc2580.c new file mode 100644 index 0000000..d2eeba5 --- /dev/null +++ b/src/tuner_fc2580.c @@ -0,0 +1,494 @@ +/* + * FCI FC2580 tuner driver, taken from the kernel driver that can be found + * on http://linux.terratec.de/tv_en.html + * + * This driver is a mess, and should be cleaned up/rewritten. + * + */ + +#include + +#include "rtlsdr_i2c.h" +#include "tuner_fc2580.h" + +/* 16.384 MHz (at least on the Logilink VG0002A) */ +#define CRYSTAL_FREQ 16384000 + +/* glue functions to rtl-sdr code */ + +fc2580_fci_result_type fc2580_i2c_write(void *pTuner, unsigned char reg, unsigned char val) +{ + uint8_t data[2]; + + data[0] = reg; + data[1] = val; + + if (rtlsdr_i2c_write_fn(pTuner, FC2580_I2C_ADDR, data, 2) < 0) + return FC2580_FCI_FAIL; + + return FC2580_FCI_SUCCESS; +} + +fc2580_fci_result_type fc2580_i2c_read(void *pTuner, unsigned char reg, unsigned char *read_data) +{ + uint8_t data = reg; + + if (rtlsdr_i2c_write_fn(pTuner, FC2580_I2C_ADDR, &data, 1) < 0) + return FC2580_FCI_FAIL; + + if (rtlsdr_i2c_read_fn(pTuner, FC2580_I2C_ADDR, &data, 1) < 0) + return FC2580_FCI_FAIL; + + *read_data = data; + + return FC2580_FCI_SUCCESS; +} + +int +fc2580_Initialize( + void *pTuner + ) +{ + int AgcMode; + unsigned int CrystalFreqKhz; + + //TODO set AGC mode + AgcMode = FC2580_AGC_EXTERNAL; + + // Initialize tuner with AGC mode. + // Note: CrystalFreqKhz = round(CrystalFreqHz / 1000) + CrystalFreqKhz = (unsigned int)((CRYSTAL_FREQ + 500) / 1000); + + if(fc2580_set_init(pTuner, AgcMode, CrystalFreqKhz) != FC2580_FCI_SUCCESS) + goto error_status_initialize_tuner; + + + return FUNCTION_SUCCESS; + + +error_status_initialize_tuner: + return FUNCTION_ERROR; +} + +int +fc2580_SetRfFreqHz( + void *pTuner, + unsigned long RfFreqHz + ) +{ + unsigned int RfFreqKhz; + unsigned int CrystalFreqKhz; + + // Set tuner RF frequency in KHz. + // Note: RfFreqKhz = round(RfFreqHz / 1000) + // CrystalFreqKhz = round(CrystalFreqHz / 1000) + RfFreqKhz = (unsigned int)((RfFreqHz + 500) / 1000); + CrystalFreqKhz = (unsigned int)((CRYSTAL_FREQ + 500) / 1000); + + if(fc2580_set_freq(pTuner, RfFreqKhz, CrystalFreqKhz) != FC2580_FCI_SUCCESS) + goto error_status_set_tuner_rf_frequency; + + return FUNCTION_SUCCESS; + +error_status_set_tuner_rf_frequency: + return FUNCTION_ERROR; +} + +/** + +@brief Set FC2580 tuner bandwidth mode. + +*/ +int +fc2580_SetBandwidthMode( + void *pTuner, + int BandwidthMode + ) +{ + unsigned int CrystalFreqKhz; + + // Set tuner bandwidth mode. + // Note: CrystalFreqKhz = round(CrystalFreqHz / 1000) + CrystalFreqKhz = (unsigned int)((CRYSTAL_FREQ + 500) / 1000); + + if(fc2580_set_filter(pTuner, (unsigned char)BandwidthMode, CrystalFreqKhz) != FC2580_FCI_SUCCESS) + goto error_status_set_tuner_bandwidth_mode; + + return FUNCTION_SUCCESS; + + +error_status_set_tuner_bandwidth_mode: + return FUNCTION_ERROR; +} + +void fc2580_wait_msec(void *pTuner, int a) +{ + /* USB latency is enough for now ;) */ +// usleep(a * 1000); + return; +} + +/*============================================================================== + fc2580 initial setting + + This function is a generic function which gets called to initialize + + fc2580 in DVB-H mode or L-Band TDMB mode + + + + ifagc_mode + type : integer + 1 : Internal AGC + 2 : Voltage Control Mode + +==============================================================================*/ +fc2580_fci_result_type fc2580_set_init( void *pTuner, int ifagc_mode, unsigned int freq_xtal ) +{ + fc2580_fci_result_type result = FC2580_FCI_SUCCESS; + + result &= fc2580_i2c_write(pTuner, 0x00, 0x00); /*** Confidential ***/ + result &= fc2580_i2c_write(pTuner, 0x12, 0x86); + result &= fc2580_i2c_write(pTuner, 0x14, 0x5C); + result &= fc2580_i2c_write(pTuner, 0x16, 0x3C); + result &= fc2580_i2c_write(pTuner, 0x1F, 0xD2); + result &= fc2580_i2c_write(pTuner, 0x09, 0xD7); + result &= fc2580_i2c_write(pTuner, 0x0B, 0xD5); + result &= fc2580_i2c_write(pTuner, 0x0C, 0x32); + result &= fc2580_i2c_write(pTuner, 0x0E, 0x43); + result &= fc2580_i2c_write(pTuner, 0x21, 0x0A); + result &= fc2580_i2c_write(pTuner, 0x22, 0x82); + if( ifagc_mode == 1 ) + { + result &= fc2580_i2c_write(pTuner, 0x45, 0x10); //internal AGC + result &= fc2580_i2c_write(pTuner, 0x4C, 0x00); //HOLD_AGC polarity + } + else if( ifagc_mode == 2 ) + { + result &= fc2580_i2c_write(pTuner, 0x45, 0x20); //Voltage Control Mode + result &= fc2580_i2c_write(pTuner, 0x4C, 0x02); //HOLD_AGC polarity + } + result &= fc2580_i2c_write(pTuner, 0x3F, 0x88); + result &= fc2580_i2c_write(pTuner, 0x02, 0x0E); + result &= fc2580_i2c_write(pTuner, 0x58, 0x14); + result &= fc2580_set_filter(pTuner, 8, freq_xtal); //BW = 7.8MHz + + return result; +} + + +/*============================================================================== + fc2580 frequency setting + + This function is a generic function which gets called to change LO Frequency + + of fc2580 in DVB-H mode or L-Band TDMB mode + + + freq_xtal: kHz + + f_lo + Value of target LO Frequency in 'kHz' unit + ex) 2.6GHz = 2600000 + +==============================================================================*/ +fc2580_fci_result_type fc2580_set_freq( void *pTuner, unsigned int f_lo, unsigned int freq_xtal ) +{ + unsigned int f_diff, f_diff_shifted, n_val, k_val; + unsigned int f_vco, r_val, f_comp; + unsigned char pre_shift_bits = 4;// number of preshift to prevent overflow in shifting f_diff to f_diff_shifted + unsigned char data_0x18; + unsigned char data_0x02 = (USE_EXT_CLK<<5)|0x0E; + + fc2580_band_type band = ( f_lo > 1000000 )? FC2580_L_BAND : ( f_lo > 400000 )? FC2580_UHF_BAND : FC2580_VHF_BAND; + + fc2580_fci_result_type result = FC2580_FCI_SUCCESS; + + f_vco = ( band == FC2580_UHF_BAND )? f_lo * 4 : (( band == FC2580_L_BAND )? f_lo * 2 : f_lo * 12); + r_val = ( f_vco >= 2*76*freq_xtal )? 1 : ( f_vco >= 76*freq_xtal )? 2 : 4; + f_comp = freq_xtal/r_val; + n_val = ( f_vco / 2 ) / f_comp; + + f_diff = f_vco - 2* f_comp * n_val; + f_diff_shifted = f_diff << ( 20 - pre_shift_bits ); + k_val = f_diff_shifted / ( ( 2* f_comp ) >> pre_shift_bits ); + + if( f_diff_shifted - k_val * ( ( 2* f_comp ) >> pre_shift_bits ) >= ( f_comp >> pre_shift_bits ) ) + k_val = k_val + 1; + + if( f_vco >= BORDER_FREQ ) //Select VCO Band + data_0x02 = data_0x02 | 0x08; //0x02[3] = 1; + else + data_0x02 = data_0x02 & 0xF7; //0x02[3] = 0; + +// if( band != curr_band ) { + switch(band) + { + case FC2580_UHF_BAND: + data_0x02 = (data_0x02 & 0x3F); + + result &= fc2580_i2c_write(pTuner, 0x25, 0xF0); + result &= fc2580_i2c_write(pTuner, 0x27, 0x77); + result &= fc2580_i2c_write(pTuner, 0x28, 0x53); + result &= fc2580_i2c_write(pTuner, 0x29, 0x60); + result &= fc2580_i2c_write(pTuner, 0x30, 0x09); + result &= fc2580_i2c_write(pTuner, 0x50, 0x8C); + result &= fc2580_i2c_write(pTuner, 0x53, 0x50); + + if( f_lo < 538000 ) + result &= fc2580_i2c_write(pTuner, 0x5F, 0x13); + else + result &= fc2580_i2c_write(pTuner, 0x5F, 0x15); + + if( f_lo < 538000 ) + { + result &= fc2580_i2c_write(pTuner, 0x61, 0x07); + result &= fc2580_i2c_write(pTuner, 0x62, 0x06); + result &= fc2580_i2c_write(pTuner, 0x67, 0x06); + result &= fc2580_i2c_write(pTuner, 0x68, 0x08); + result &= fc2580_i2c_write(pTuner, 0x69, 0x10); + result &= fc2580_i2c_write(pTuner, 0x6A, 0x12); + } + else if( f_lo < 794000 ) + { + result &= fc2580_i2c_write(pTuner, 0x61, 0x03); + result &= fc2580_i2c_write(pTuner, 0x62, 0x03); + result &= fc2580_i2c_write(pTuner, 0x67, 0x03); //ACI improve + result &= fc2580_i2c_write(pTuner, 0x68, 0x05); //ACI improve + result &= fc2580_i2c_write(pTuner, 0x69, 0x0C); + result &= fc2580_i2c_write(pTuner, 0x6A, 0x0E); + } + else + { + result &= fc2580_i2c_write(pTuner, 0x61, 0x07); + result &= fc2580_i2c_write(pTuner, 0x62, 0x06); + result &= fc2580_i2c_write(pTuner, 0x67, 0x07); + result &= fc2580_i2c_write(pTuner, 0x68, 0x09); + result &= fc2580_i2c_write(pTuner, 0x69, 0x10); + result &= fc2580_i2c_write(pTuner, 0x6A, 0x12); + } + + result &= fc2580_i2c_write(pTuner, 0x63, 0x15); + + result &= fc2580_i2c_write(pTuner, 0x6B, 0x0B); + result &= fc2580_i2c_write(pTuner, 0x6C, 0x0C); + result &= fc2580_i2c_write(pTuner, 0x6D, 0x78); + result &= fc2580_i2c_write(pTuner, 0x6E, 0x32); + result &= fc2580_i2c_write(pTuner, 0x6F, 0x14); + result &= fc2580_set_filter(pTuner, 8, freq_xtal); //BW = 7.8MHz + break; + case FC2580_VHF_BAND: + data_0x02 = (data_0x02 & 0x3F) | 0x80; + result &= fc2580_i2c_write(pTuner, 0x27, 0x77); + result &= fc2580_i2c_write(pTuner, 0x28, 0x33); + result &= fc2580_i2c_write(pTuner, 0x29, 0x40); + result &= fc2580_i2c_write(pTuner, 0x30, 0x09); + result &= fc2580_i2c_write(pTuner, 0x50, 0x8C); + result &= fc2580_i2c_write(pTuner, 0x53, 0x50); + result &= fc2580_i2c_write(pTuner, 0x5F, 0x0F); + result &= fc2580_i2c_write(pTuner, 0x61, 0x07); + result &= fc2580_i2c_write(pTuner, 0x62, 0x00); + result &= fc2580_i2c_write(pTuner, 0x63, 0x15); + result &= fc2580_i2c_write(pTuner, 0x67, 0x03); + result &= fc2580_i2c_write(pTuner, 0x68, 0x05); + result &= fc2580_i2c_write(pTuner, 0x69, 0x10); + result &= fc2580_i2c_write(pTuner, 0x6A, 0x12); + result &= fc2580_i2c_write(pTuner, 0x6B, 0x08); + result &= fc2580_i2c_write(pTuner, 0x6C, 0x0A); + result &= fc2580_i2c_write(pTuner, 0x6D, 0x78); + result &= fc2580_i2c_write(pTuner, 0x6E, 0x32); + result &= fc2580_i2c_write(pTuner, 0x6F, 0x54); + result &= fc2580_set_filter(pTuner, 7, freq_xtal); //BW = 6.8MHz + break; + case FC2580_L_BAND: + data_0x02 = (data_0x02 & 0x3F) | 0x40; + result &= fc2580_i2c_write(pTuner, 0x2B, 0x70); + result &= fc2580_i2c_write(pTuner, 0x2C, 0x37); + result &= fc2580_i2c_write(pTuner, 0x2D, 0xE7); + result &= fc2580_i2c_write(pTuner, 0x30, 0x09); + result &= fc2580_i2c_write(pTuner, 0x44, 0x20); + result &= fc2580_i2c_write(pTuner, 0x50, 0x8C); + result &= fc2580_i2c_write(pTuner, 0x53, 0x50); + result &= fc2580_i2c_write(pTuner, 0x5F, 0x0F); + result &= fc2580_i2c_write(pTuner, 0x61, 0x0F); + result &= fc2580_i2c_write(pTuner, 0x62, 0x00); + result &= fc2580_i2c_write(pTuner, 0x63, 0x13); + result &= fc2580_i2c_write(pTuner, 0x67, 0x00); + result &= fc2580_i2c_write(pTuner, 0x68, 0x02); + result &= fc2580_i2c_write(pTuner, 0x69, 0x0C); + result &= fc2580_i2c_write(pTuner, 0x6A, 0x0E); + result &= fc2580_i2c_write(pTuner, 0x6B, 0x08); + result &= fc2580_i2c_write(pTuner, 0x6C, 0x0A); + result &= fc2580_i2c_write(pTuner, 0x6D, 0xA0); + result &= fc2580_i2c_write(pTuner, 0x6E, 0x50); + result &= fc2580_i2c_write(pTuner, 0x6F, 0x14); + result &= fc2580_set_filter(pTuner, 1, freq_xtal); //BW = 1.53MHz + break; + default: + break; + } +// curr_band = band; +// } + + //A command about AGC clock's pre-divide ratio + if( freq_xtal >= 28000 ) + result &= fc2580_i2c_write(pTuner, 0x4B, 0x22 ); + + //Commands about VCO Band and PLL setting. + result &= fc2580_i2c_write(pTuner, 0x02, data_0x02); + data_0x18 = ( ( r_val == 1 )? 0x00 : ( ( r_val == 2 )? 0x10 : 0x20 ) ) + (unsigned char)(k_val >> 16); + result &= fc2580_i2c_write(pTuner, 0x18, data_0x18); //Load 'R' value and high part of 'K' values + result &= fc2580_i2c_write(pTuner, 0x1A, (unsigned char)( k_val >> 8 ) ); //Load middle part of 'K' value + result &= fc2580_i2c_write(pTuner, 0x1B, (unsigned char)( k_val ) ); //Load lower part of 'K' value + result &= fc2580_i2c_write(pTuner, 0x1C, (unsigned char)( n_val ) ); //Load 'N' value + + //A command about UHF LNA Load Cap + if( band == FC2580_UHF_BAND ) + result &= fc2580_i2c_write(pTuner, 0x2D, ( f_lo <= (unsigned int)794000 )? 0x9F : 0x8F ); //LNA_OUT_CAP + + + return result; +} + + +/*============================================================================== + fc2580 filter BW setting + + This function is a generic function which gets called to change Bandwidth + + frequency of fc2580's channel selection filter + + + freq_xtal: kHz + + filter_bw + 1 : 1.53MHz(TDMB) + 6 : 6MHz (Bandwidth 6MHz) + 7 : 6.8MHz (Bandwidth 7MHz) + 8 : 7.8MHz (Bandwidth 8MHz) + + +==============================================================================*/ +fc2580_fci_result_type fc2580_set_filter( void *pTuner, unsigned char filter_bw, unsigned int freq_xtal ) +{ + unsigned char cal_mon = 0, i; + fc2580_fci_result_type result = FC2580_FCI_SUCCESS; + + if(filter_bw == 1) + { + result &= fc2580_i2c_write(pTuner, 0x36, 0x1C); + result &= fc2580_i2c_write(pTuner, 0x37, (unsigned char)(4151*freq_xtal/1000000) ); + result &= fc2580_i2c_write(pTuner, 0x39, 0x00); + result &= fc2580_i2c_write(pTuner, 0x2E, 0x09); + } + if(filter_bw == 6) + { + result &= fc2580_i2c_write(pTuner, 0x36, 0x18); + result &= fc2580_i2c_write(pTuner, 0x37, (unsigned char)(4400*freq_xtal/1000000) ); + result &= fc2580_i2c_write(pTuner, 0x39, 0x00); + result &= fc2580_i2c_write(pTuner, 0x2E, 0x09); + } + else if(filter_bw == 7) + { + result &= fc2580_i2c_write(pTuner, 0x36, 0x18); + result &= fc2580_i2c_write(pTuner, 0x37, (unsigned char)(3910*freq_xtal/1000000) ); + result &= fc2580_i2c_write(pTuner, 0x39, 0x80); + result &= fc2580_i2c_write(pTuner, 0x2E, 0x09); + } + else if(filter_bw == 8) + { + result &= fc2580_i2c_write(pTuner, 0x36, 0x18); + result &= fc2580_i2c_write(pTuner, 0x37, (unsigned char)(3300*freq_xtal/1000000) ); + result &= fc2580_i2c_write(pTuner, 0x39, 0x80); + result &= fc2580_i2c_write(pTuner, 0x2E, 0x09); + } + + + for(i=0; i<5; i++) + { + fc2580_wait_msec(pTuner, 5);//wait 5ms + result &= fc2580_i2c_read(pTuner, 0x2F, &cal_mon); + if( (cal_mon & 0xC0) != 0xC0) + { + result &= fc2580_i2c_write(pTuner, 0x2E, 0x01); + result &= fc2580_i2c_write(pTuner, 0x2E, 0x09); + } + else + break; + } + + result &= fc2580_i2c_write(pTuner, 0x2E, 0x01); + + return result; +} + +/*============================================================================== + fc2580 RSSI function + + This function is a generic function which returns fc2580's + + current RSSI value. + + + none + + + int + rssi : estimated input power. + +==============================================================================*/ +//int fc2580_get_rssi(void) { +// +// unsigned char s_lna, s_rfvga, s_cfs, s_ifvga; +// int ofs_lna, ofs_rfvga, ofs_csf, ofs_ifvga, rssi; +// +// fc2580_i2c_read(0x71, &s_lna ); +// fc2580_i2c_read(0x72, &s_rfvga ); +// fc2580_i2c_read(0x73, &s_cfs ); +// fc2580_i2c_read(0x74, &s_ifvga ); +// +// +// ofs_lna = +// (curr_band==FC2580_UHF_BAND)? +// (s_lna==0)? 0 : +// (s_lna==1)? -6 : +// (s_lna==2)? -17 : +// (s_lna==3)? -22 : -30 : +// (curr_band==FC2580_VHF_BAND)? +// (s_lna==0)? 0 : +// (s_lna==1)? -6 : +// (s_lna==2)? -19 : +// (s_lna==3)? -24 : -32 : +// (curr_band==FC2580_L_BAND)? +// (s_lna==0)? 0 : +// (s_lna==1)? -6 : +// (s_lna==2)? -11 : +// (s_lna==3)? -16 : -34 : +// 0;//FC2580_NO_BAND +// ofs_rfvga = -s_rfvga+((s_rfvga>=11)? 1 : 0) + ((s_rfvga>=18)? 1 : 0); +// ofs_csf = -6*s_cfs; +// ofs_ifvga = s_ifvga/4; +// +// return rssi = ofs_lna+ofs_rfvga+ofs_csf+ofs_ifvga+OFS_RSSI; +// +//} + +/*============================================================================== + fc2580 Xtal frequency Setting + + This function is a generic function which sets + + the frequency of xtal. + + + + frequency + frequency value of internal(external) Xtal(clock) in kHz unit. + +==============================================================================*/ +//void fc2580_set_freq_xtal(unsigned int frequency) { +// +// freq_xtal = frequency; +// +//} + diff --git a/src/tuner_r820t.c b/src/tuner_r820t.c new file mode 100644 index 0000000..fd3188d --- /dev/null +++ b/src/tuner_r820t.c @@ -0,0 +1,3050 @@ +/* + * R820T tuner driver, taken from Realteks RTL2832U Linux Kernel Driver + * + * This driver is a mess, and should be cleaned up/rewritten. + * + */ + +#include +#include + +#include "rtlsdr_i2c.h" +#include "tuner_r820t.h" + +int r820t_SetRfFreqHz(void *pTuner, unsigned long RfFreqHz) +{ + R828_Set_Info R828Info; + +// if(pExtra->IsStandardModeSet==NO) +// goto error_status_set_tuner_rf_frequency; + +// R828Info.R828_Standard = (R828_Standard_Type)pExtra->StandardMode; + R828Info.R828_Standard = (R828_Standard_Type)DVB_T_6M; + R828Info.RF_Hz = (UINT32)(RfFreqHz); + R828Info.RF_KHz = (UINT32)(RfFreqHz/1000); + + if(R828_SetFrequency(pTuner, R828Info, NORMAL_MODE) != RT_Success) + return FUNCTION_ERROR; + + return FUNCTION_SUCCESS; +} + +int r820t_SetStandardMode(void *pTuner, int StandardMode) +{ + if(R828_SetStandard(pTuner, (R828_Standard_Type)StandardMode) != RT_Success) + return FUNCTION_ERROR; + + return FUNCTION_SUCCESS; +} + +int r820t_SetStandby(void *pTuner, int LoopThroughType) +{ + + if(R828_Standby(pTuner, (R828_LoopThrough_Type)LoopThroughType) != RT_Success) + return FUNCTION_ERROR; + + return FUNCTION_SUCCESS; +} + +// The following context is implemented for R820T source code. + +/* just reverses the bits of a byte */ +int +r820t_Convert(int InvertNum) +{ + int ReturnNum; + int AddNum; + int BitNum; + int CountNum; + + ReturnNum = 0; + AddNum = 0x80; + BitNum = 0x01; + + for(CountNum = 0;CountNum < 8;CountNum ++) + { + if(BitNum & InvertNum) + ReturnNum += AddNum; + + AddNum /= 2; + BitNum *= 2; + } + + return ReturnNum; +} + +R828_ErrCode +I2C_Write_Len(void *pTuner, R828_I2C_LEN_TYPE *I2C_Info) +{ + unsigned char DeviceAddr; + + unsigned int i, j; + + unsigned char RegStartAddr; + unsigned char *pWritingBytes; + unsigned long ByteNum; + + unsigned char WritingBuffer[128]; + unsigned long WritingByteNum, WritingByteNumMax, WritingByteNumRem; + unsigned char RegWritingAddr; + + // Get regiser start address, writing bytes, and byte number. + RegStartAddr = I2C_Info->RegAddr; + pWritingBytes = I2C_Info->Data; + ByteNum = (unsigned long)I2C_Info->Len; + + // Calculate maximum writing byte number. +// WritingByteNumMax = pBaseInterface->I2cWritingByteNumMax - LEN_1_BYTE; + WritingByteNumMax = 2 - 1; //9 orig + + // Set tuner register bytes with writing bytes. + // Note: Set tuner register bytes considering maximum writing byte number. + for(i = 0; i < ByteNum; i += WritingByteNumMax) + { + // Set register writing address. + RegWritingAddr = RegStartAddr + i; + + // Calculate remainder writing byte number. + WritingByteNumRem = ByteNum - i; + + // Determine writing byte number. + WritingByteNum = (WritingByteNumRem > WritingByteNumMax) ? WritingByteNumMax : WritingByteNumRem; + + // Set writing buffer. + // Note: The I2C format of tuner register byte setting is as follows: + // start_bit + (DeviceAddr | writing_bit) + RegWritingAddr + writing_bytes (WritingByteNum bytes) + + // stop_bit + WritingBuffer[0] = RegWritingAddr; + + for(j = 0; j < WritingByteNum; j++) + WritingBuffer[j+1] = pWritingBytes[i + j]; + + // Set tuner register bytes with writing buffer. +// if(pI2cBridge->ForwardI2cWritingCmd(pI2cBridge, DeviceAddr, WritingBuffer, WritingByteNum + LEN_1_BYTE) != +// FUNCTION_SUCCESS) +// goto error_status_set_tuner_registers; + + if (rtlsdr_i2c_write_fn(pTuner, R820T_I2C_ADDR, WritingBuffer, WritingByteNum + 1) < 0) + return RT_Fail; + } + + return RT_Success; +} + +R828_ErrCode +I2C_Read_Len(void *pTuner, R828_I2C_LEN_TYPE *I2C_Info) +{ + uint8_t DeviceAddr; + + unsigned int i; + + uint8_t RegStartAddr; + uint8_t ReadingBytes[128]; + unsigned long ByteNum; + + // Get regiser start address, writing bytes, and byte number. + RegStartAddr = 0x00; + ByteNum = (unsigned long)I2C_Info->Len; + + // Set tuner register reading address. + // Note: The I2C format of tuner register reading address setting is as follows: + // start_bit + (DeviceAddr | writing_bit) + RegReadingAddr + stop_bit +// if(pI2cBridge->ForwardI2cWritingCmd(pI2cBridge, DeviceAddr, &RegStartAddr, LEN_1_BYTE) != FUNCTION_SUCCESS) +// goto error_status_set_tuner_register_reading_address; + + if (rtlsdr_i2c_write_fn(pTuner, R820T_I2C_ADDR, &RegStartAddr, 1) < 0) + return RT_Fail; + + // Get tuner register bytes. + // Note: The I2C format of tuner register byte getting is as follows: + // start_bit + (DeviceAddr | reading_bit) + reading_bytes (ReadingByteNum bytes) + stop_bit +// if(pI2cBridge->ForwardI2cReadingCmd(pI2cBridge, DeviceAddr, ReadingBytes, ByteNum) != FUNCTION_SUCCESS) +// goto error_status_get_tuner_registers; + + if (rtlsdr_i2c_read_fn(pTuner, R820T_I2C_ADDR, ReadingBytes, ByteNum) < 0) + return RT_Fail; + + for(i = 0; iData[i] = (UINT8)r820t_Convert(ReadingBytes[i]); + } + + + return RT_Success; + + +error_status_get_tuner_registers: +error_status_set_tuner_register_reading_address: + + return RT_Fail; +} + +R828_ErrCode +I2C_Write(void *pTuner, R828_I2C_TYPE *I2C_Info) +{ + uint8_t WritingBuffer[2]; + + // Set writing bytes. + // Note: The I2C format of tuner register byte setting is as follows: + // start_bit + (DeviceAddr | writing_bit) + addr + data + stop_bit + WritingBuffer[0] = I2C_Info->RegAddr; + WritingBuffer[1] = I2C_Info->Data; + + // Set tuner register bytes with writing buffer. +// if(pI2cBridge->ForwardI2cWritingCmd(pI2cBridge, DeviceAddr, WritingBuffer, LEN_2_BYTE) != FUNCTION_SUCCESS) +// goto error_status_set_tuner_registers; + +// printf("called %s: %02x -> %02x\n", __FUNCTION__, WritingBuffer[0], WritingBuffer[1]); + + if (rtlsdr_i2c_write_fn(pTuner, R820T_I2C_ADDR, WritingBuffer, 2) < 0) + return RT_Fail; + + return RT_Success; +} + +void +R828_Delay_MS( + void *pTuner, + unsigned long WaitTimeMs + ) +{ + /* simply don't wait for now */ + return; +} + +//----------------------------------------------------- +// +// Filename: R820T.c +// +// This file is R820T tuner driver +// Copyright 2011 by Rafaelmicro., Inc. +// +//----------------------------------------------------- + + +//#include "stdafx.h" +//#include "R828.h" +//#include "..\I2C_Sys.h" + + +#if(TUNER_CLK_OUT==TRUE) //enable tuner clk output for share Xtal application +UINT8 R828_iniArry[27] = {0x83, 0x32, 0x75, 0xC0, 0x40, 0xD6, 0x6C, 0xF5, 0x63, + /* 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D */ + + 0x75, 0x68, 0x6C, 0x83, 0x80, 0x00, 0x0F, 0x00, 0xC0,//xtal_check + /* 0x0E 0x0F 0x10 0x11 0x12 0x13 0x14 0x15 0x16 */ + + 0x30, 0x48, 0xCC, 0x60, 0x00, 0x54, 0xAE, 0x4A, 0xC0}; + /* 0x17 0x18 0x19 0x1A 0x1B 0x1C 0x1D 0x1E 0x1F */ +#else +UINT8 R828_iniArry[27] = {0x83, 0x32, 0x75, 0xC0, 0x40, 0xD6, 0x6C, 0xF5, 0x63, + /* 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D */ + + 0x75, 0x78, 0x6C, 0x83, 0x80, 0x00, 0x0F, 0x00, 0xC0,//xtal_check + /* 0x0E 0x0F 0x10 0x11 0x12 0x13 0x14 0x15 0x16 */ + + 0x30, 0x48, 0xCC, 0x60, 0x00, 0x54, 0xAE, 0x4A, 0xC0}; + /* 0x17 0x18 0x19 0x1A 0x1B 0x1C 0x1D 0x1E 0x1F */ +#endif + +UINT8 R828_ADDRESS=0x34; +UINT8 Rafael_Chip = R820T; +//----------------------------------------------------------// +// Internal Structs // +//----------------------------------------------------------// +typedef struct _R828_SectType +{ + UINT8 Phase_Y; + UINT8 Gain_X; + UINT16 Value; +}R828_SectType; + +typedef enum _BW_Type +{ + BW_6M = 0, + BW_7M, + BW_8M, + BW_1_7M, + BW_10M, + BW_200K +}BW_Type; + +typedef struct _Sys_Info_Type +{ + UINT16 IF_KHz; + BW_Type BW; + UINT32 FILT_CAL_LO; + UINT8 FILT_GAIN; + UINT8 IMG_R; + UINT8 FILT_Q; + UINT8 HP_COR; + UINT8 EXT_ENABLE; + UINT8 LOOP_THROUGH; + UINT8 LT_ATT; + UINT8 FLT_EXT_WIDEST; + UINT8 POLYFIL_CUR; +}Sys_Info_Type; + +typedef struct _Freq_Info_Type +{ + UINT8 OPEN_D; + UINT8 RF_MUX_PLOY; + UINT8 TF_C; + UINT8 XTAL_CAP20P; + UINT8 XTAL_CAP10P; + UINT8 XTAL_CAP0P; + UINT8 IMR_MEM; +}Freq_Info_Type; + +typedef struct _SysFreq_Info_Type +{ + UINT8 LNA_TOP; + UINT8 LNA_VTH_L; + UINT8 MIXER_TOP; + UINT8 MIXER_VTH_L; + UINT8 AIR_CABLE1_IN; + UINT8 CABLE2_IN; + UINT8 PRE_DECT; + UINT8 LNA_DISCHARGE; + UINT8 CP_CUR; + UINT8 DIV_BUF_CUR; + UINT8 FILTER_CUR; +}SysFreq_Info_Type; + +//----------------------------------------------------------// +// Internal Parameters // +//----------------------------------------------------------// +enum XTAL_CAP_VALUE +{ + XTAL_LOW_CAP_30P = 0, + XTAL_LOW_CAP_20P, + XTAL_LOW_CAP_10P, + XTAL_LOW_CAP_0P, + XTAL_HIGH_CAP_0P +}; +UINT8 R828_Arry[27]; +R828_SectType IMR_Data[5] = { + {0, 0, 0}, + {0, 0, 0}, + {0, 0, 0}, + {0, 0, 0}, + {0, 0, 0} + };//Please keep this array data for standby mode. +R828_I2C_TYPE R828_I2C; +R828_I2C_LEN_TYPE R828_I2C_Len; + +UINT32 R828_IF_khz; +UINT32 R828_CAL_LO_khz; +UINT8 R828_IMR_point_num; +UINT8 R828_IMR_done_flag = FALSE; +UINT8 R828_Fil_Cal_flag[STD_SIZE]; +static UINT8 R828_Fil_Cal_code[STD_SIZE]; + +static UINT8 Xtal_cap_sel = XTAL_LOW_CAP_0P; +static UINT8 Xtal_cap_sel_tmp = XTAL_LOW_CAP_0P; +//----------------------------------------------------------// +// Internal static struct // +//----------------------------------------------------------// +static SysFreq_Info_Type SysFreq_Info1; +static Sys_Info_Type Sys_Info1; +//static Freq_Info_Type R828_Freq_Info; +static Freq_Info_Type Freq_Info1; +//----------------------------------------------------------// +// Internal Functions // +//----------------------------------------------------------// +R828_ErrCode R828_Xtal_Check(void *pTuner); +R828_ErrCode R828_InitReg(void *pTuner); +R828_ErrCode R828_IMR_Prepare(void *pTuner); +R828_ErrCode R828_IMR(void *pTuner, UINT8 IMR_MEM, int IM_Flag); +R828_ErrCode R828_PLL(void *pTuner, UINT32 LO_Freq, R828_Standard_Type R828_Standard); +R828_ErrCode R828_MUX(void *pTuner, UINT32 RF_KHz); +R828_ErrCode R828_IQ(void *pTuner, R828_SectType* IQ_Pont); +R828_ErrCode R828_IQ_Tree(void *pTuner, UINT8 FixPot, UINT8 FlucPot, UINT8 PotReg, R828_SectType* CompareTree); +R828_ErrCode R828_CompreCor(R828_SectType* CorArry); +R828_ErrCode R828_CompreStep(void *pTuner, R828_SectType* StepArry, UINT8 Pace); +R828_ErrCode R828_Muti_Read(void *pTuner, UINT8 IMR_Reg, UINT16* IMR_Result_Data); +R828_ErrCode R828_Section(void *pTuner, R828_SectType* SectionArry); +R828_ErrCode R828_F_IMR(void *pTuner, R828_SectType* IQ_Pont); +R828_ErrCode R828_IMR_Cross(void *pTuner, R828_SectType* IQ_Pont, UINT8* X_Direct); + +Sys_Info_Type R828_Sys_Sel(R828_Standard_Type R828_Standard); +Freq_Info_Type R828_Freq_Sel(UINT32 RF_freq); +SysFreq_Info_Type R828_SysFreq_Sel(R828_Standard_Type R828_Standard,UINT32 RF_freq); + +R828_ErrCode R828_Filt_Cal(void *pTuner, UINT32 Cal_Freq,BW_Type R828_BW); +//R828_ErrCode R828_SetFrequency(void *pTuner, R828_Set_Info R828_INFO, R828_SetFreq_Type R828_SetFreqMode); + +Sys_Info_Type R828_Sys_Sel(R828_Standard_Type R828_Standard) +{ + Sys_Info_Type R828_Sys_Info; + + switch (R828_Standard) + { + + case DVB_T_6M: + case DVB_T2_6M: + R828_Sys_Info.IF_KHz=3570; + R828_Sys_Info.BW=BW_6M; + R828_Sys_Info.FILT_CAL_LO=56000; //52000->56000 + R828_Sys_Info.FILT_GAIN=0x10; //+3dB, 6MHz on + R828_Sys_Info.IMG_R=0x00; //image negative + R828_Sys_Info.FILT_Q=0x10; //R10[4]:low Q(1'b1) + R828_Sys_Info.HP_COR=0x6B; // 1.7M disable, +2cap, 1.0MHz + R828_Sys_Info.EXT_ENABLE=0x60; //R30[6]=1 ext enable; R30[5]:1 ext at LNA max-1 + R828_Sys_Info.LOOP_THROUGH=0x00; //R5[7], LT ON + R828_Sys_Info.LT_ATT=0x00; //R31[7], LT ATT enable + R828_Sys_Info.FLT_EXT_WIDEST=0x00;//R15[7]: FLT_EXT_WIDE OFF + R828_Sys_Info.POLYFIL_CUR=0x60; //R25[6:5]:Min + break; + + case DVB_T_7M: + case DVB_T2_7M: + R828_Sys_Info.IF_KHz=4070; + R828_Sys_Info.BW=BW_7M; + R828_Sys_Info.FILT_CAL_LO=60000; + R828_Sys_Info.FILT_GAIN=0x10; //+3dB, 6MHz on + R828_Sys_Info.IMG_R=0x00; //image negative + R828_Sys_Info.FILT_Q=0x10; //R10[4]:low Q(1'b1) + R828_Sys_Info.HP_COR=0x2B; // 1.7M disable, +1cap, 1.0MHz + R828_Sys_Info.EXT_ENABLE=0x60; //R30[6]=1 ext enable; R30[5]:1 ext at LNA max-1 + R828_Sys_Info.LOOP_THROUGH=0x00; //R5[7], LT ON + R828_Sys_Info.LT_ATT=0x00; //R31[7], LT ATT enable + R828_Sys_Info.FLT_EXT_WIDEST=0x00;//R15[7]: FLT_EXT_WIDE OFF + R828_Sys_Info.POLYFIL_CUR=0x60; //R25[6:5]:Min + break; + + case DVB_T_7M_2: + case DVB_T2_7M_2: + R828_Sys_Info.IF_KHz=4570; + R828_Sys_Info.BW=BW_7M; + R828_Sys_Info.FILT_CAL_LO=63000; + R828_Sys_Info.FILT_GAIN=0x10; //+3dB, 6MHz on + R828_Sys_Info.IMG_R=0x00; //image negative + R828_Sys_Info.FILT_Q=0x10; //R10[4]:low Q(1'b1) + R828_Sys_Info.HP_COR=0x2A; // 1.7M disable, +1cap, 1.25MHz + R828_Sys_Info.EXT_ENABLE=0x60; //R30[6]=1 ext enable; R30[5]:1 ext at LNA max-1 + R828_Sys_Info.LOOP_THROUGH=0x00; //R5[7], LT ON + R828_Sys_Info.LT_ATT=0x00; //R31[7], LT ATT enable + R828_Sys_Info.FLT_EXT_WIDEST=0x00;//R15[7]: FLT_EXT_WIDE OFF + R828_Sys_Info.POLYFIL_CUR=0x60; //R25[6:5]:Min + break; + + case DVB_T_8M: + case DVB_T2_8M: + R828_Sys_Info.IF_KHz=4570; + R828_Sys_Info.BW=BW_8M; + R828_Sys_Info.FILT_CAL_LO=68500; + R828_Sys_Info.FILT_GAIN=0x10; //+3dB, 6MHz on + R828_Sys_Info.IMG_R=0x00; //image negative + R828_Sys_Info.FILT_Q=0x10; //R10[4]:low Q(1'b1) + R828_Sys_Info.HP_COR=0x0B; // 1.7M disable, +0cap, 1.0MHz + R828_Sys_Info.EXT_ENABLE=0x60; //R30[6]=1 ext enable; R30[5]:1 ext at LNA max-1 + R828_Sys_Info.LOOP_THROUGH=0x00; //R5[7], LT ON + R828_Sys_Info.LT_ATT=0x00; //R31[7], LT ATT enable + R828_Sys_Info.FLT_EXT_WIDEST=0x00;//R15[7]: FLT_EXT_WIDE OFF + R828_Sys_Info.POLYFIL_CUR=0x60; //R25[6:5]:Min + break; + + case ISDB_T: + R828_Sys_Info.IF_KHz=4063; + R828_Sys_Info.BW=BW_6M; + R828_Sys_Info.FILT_CAL_LO=59000; + R828_Sys_Info.FILT_GAIN=0x10; //+3dB, 6MHz on + R828_Sys_Info.IMG_R=0x00; //image negative + R828_Sys_Info.FILT_Q=0x10; //R10[4]:low Q(1'b1) + R828_Sys_Info.HP_COR=0x6A; // 1.7M disable, +2cap, 1.25MHz + R828_Sys_Info.EXT_ENABLE=0x40; //R30[6], ext enable; R30[5]:0 ext at LNA max + R828_Sys_Info.LOOP_THROUGH=0x00; //R5[7], LT ON + R828_Sys_Info.LT_ATT=0x00; //R31[7], LT ATT enable + R828_Sys_Info.FLT_EXT_WIDEST=0x00;//R15[7]: FLT_EXT_WIDE OFF + R828_Sys_Info.POLYFIL_CUR=0x60; //R25[6:5]:Min + break; + + default: //DVB_T_8M + R828_Sys_Info.IF_KHz=4570; + R828_Sys_Info.BW=BW_8M; + R828_Sys_Info.FILT_CAL_LO=68500; + R828_Sys_Info.FILT_GAIN=0x10; //+3dB, 6MHz on + R828_Sys_Info.IMG_R=0x00; //image negative + R828_Sys_Info.FILT_Q=0x10; //R10[4]:low Q(1'b1) + R828_Sys_Info.HP_COR=0x0D; // 1.7M disable, +0cap, 0.7MHz + R828_Sys_Info.EXT_ENABLE=0x60; //R30[6]=1 ext enable; R30[5]:1 ext at LNA max-1 + R828_Sys_Info.LOOP_THROUGH=0x00; //R5[7], LT ON + R828_Sys_Info.LT_ATT=0x00; //R31[7], LT ATT enable + R828_Sys_Info.FLT_EXT_WIDEST=0x00;//R15[7]: FLT_EXT_WIDE OFF + R828_Sys_Info.POLYFIL_CUR=0x60; //R25[6:5]:Min + break; + + } + + return R828_Sys_Info; +} + +Freq_Info_Type R828_Freq_Sel(UINT32 LO_freq) +{ + Freq_Info_Type R828_Freq_Info; + + if(LO_freq<50000) + { + R828_Freq_Info.OPEN_D=0x08; // low + R828_Freq_Info.RF_MUX_PLOY = 0x02; //R26[7:6]=0 (LPF) R26[1:0]=2 (low) + R828_Freq_Info.TF_C=0xDF; //R27[7:0] band2,band0 + R828_Freq_Info.XTAL_CAP20P=0x02; //R16[1:0] 20pF (10) + R828_Freq_Info.XTAL_CAP10P=0x01; + R828_Freq_Info.XTAL_CAP0P=0x00; + R828_Freq_Info.IMR_MEM = 0; + } + + else if(LO_freq>=50000 && LO_freq<55000) + { + R828_Freq_Info.OPEN_D=0x08; // low + R828_Freq_Info.RF_MUX_PLOY = 0x02; //R26[7:6]=0 (LPF) R26[1:0]=2 (low) + R828_Freq_Info.TF_C=0xBE; //R27[7:0] band4,band1 + R828_Freq_Info.XTAL_CAP20P=0x02; //R16[1:0] 20pF (10) + R828_Freq_Info.XTAL_CAP10P=0x01; + R828_Freq_Info.XTAL_CAP0P=0x00; + R828_Freq_Info.IMR_MEM = 0; + } + else if( LO_freq>=55000 && LO_freq<60000) + { + R828_Freq_Info.OPEN_D=0x08; // low + R828_Freq_Info.RF_MUX_PLOY = 0x02; //R26[7:6]=0 (LPF) R26[1:0]=2 (low) + R828_Freq_Info.TF_C=0x8B; //R27[7:0] band7,band4 + R828_Freq_Info.XTAL_CAP20P=0x02; //R16[1:0] 20pF (10) + R828_Freq_Info.XTAL_CAP10P=0x01; + R828_Freq_Info.XTAL_CAP0P=0x00; + R828_Freq_Info.IMR_MEM = 0; + } + else if( LO_freq>=60000 && LO_freq<65000) + { + R828_Freq_Info.OPEN_D=0x08; // low + R828_Freq_Info.RF_MUX_PLOY = 0x02; //R26[7:6]=0 (LPF) R26[1:0]=2 (low) + R828_Freq_Info.TF_C=0x7B; //R27[7:0] band8,band4 + R828_Freq_Info.XTAL_CAP20P=0x02; //R16[1:0] 20pF (10) + R828_Freq_Info.XTAL_CAP10P=0x01; + R828_Freq_Info.XTAL_CAP0P=0x00; + R828_Freq_Info.IMR_MEM = 0; + } + else if( LO_freq>=65000 && LO_freq<70000) + { + R828_Freq_Info.OPEN_D=0x08; // low + R828_Freq_Info.RF_MUX_PLOY = 0x02; //R26[7:6]=0 (LPF) R26[1:0]=2 (low) + R828_Freq_Info.TF_C=0x69; //R27[7:0] band9,band6 + R828_Freq_Info.XTAL_CAP20P=0x02; //R16[1:0] 20pF (10) + R828_Freq_Info.XTAL_CAP10P=0x01; + R828_Freq_Info.XTAL_CAP0P=0x00; + R828_Freq_Info.IMR_MEM = 0; + } + else if( LO_freq>=70000 && LO_freq<75000) + { + R828_Freq_Info.OPEN_D=0x08; // low + R828_Freq_Info.RF_MUX_PLOY = 0x02; //R26[7:6]=0 (LPF) R26[1:0]=2 (low) + R828_Freq_Info.TF_C=0x58; //R27[7:0] band10,band7 + R828_Freq_Info.XTAL_CAP20P=0x02; //R16[1:0] 20pF (10) + R828_Freq_Info.XTAL_CAP10P=0x01; + R828_Freq_Info.XTAL_CAP0P=0x00; + R828_Freq_Info.IMR_MEM = 0; + } + else if( LO_freq>=75000 && LO_freq<80000) + { + R828_Freq_Info.OPEN_D=0x00; // high + R828_Freq_Info.RF_MUX_PLOY = 0x02; //R26[7:6]=0 (LPF) R26[1:0]=2 (low) + R828_Freq_Info.TF_C=0x44; //R27[7:0] band11,band11 + R828_Freq_Info.XTAL_CAP20P=0x02; //R16[1:0] 20pF (10) + R828_Freq_Info.XTAL_CAP10P=0x01; + R828_Freq_Info.XTAL_CAP0P=0x00; + R828_Freq_Info.IMR_MEM = 0; + } + else if( LO_freq>=80000 && LO_freq<90000) + { + R828_Freq_Info.OPEN_D=0x00; // high + R828_Freq_Info.RF_MUX_PLOY = 0x02; //R26[7:6]=0 (LPF) R26[1:0]=2 (low) + R828_Freq_Info.TF_C=0x44; //R27[7:0] band11,band11 + R828_Freq_Info.XTAL_CAP20P=0x02; //R16[1:0] 20pF (10) + R828_Freq_Info.XTAL_CAP10P=0x01; + R828_Freq_Info.XTAL_CAP0P=0x00; + R828_Freq_Info.IMR_MEM = 0; + } + else if( LO_freq>=90000 && LO_freq<100000) + { + R828_Freq_Info.OPEN_D=0x00; // high + R828_Freq_Info.RF_MUX_PLOY = 0x02; //R26[7:6]=0 (LPF) R26[1:0]=2 (low) + R828_Freq_Info.TF_C=0x34; //R27[7:0] band12,band11 + R828_Freq_Info.XTAL_CAP20P=0x01; //R16[1:0] 10pF (01) + R828_Freq_Info.XTAL_CAP10P=0x01; + R828_Freq_Info.XTAL_CAP0P=0x00; + R828_Freq_Info.IMR_MEM = 0; + } + else if( LO_freq>=100000 && LO_freq<110000) + { + R828_Freq_Info.OPEN_D=0x00; // high + R828_Freq_Info.RF_MUX_PLOY = 0x02; //R26[7:6]=0 (LPF) R26[1:0]=2 (low) + R828_Freq_Info.TF_C=0x34; //R27[7:0] band12,band11 + R828_Freq_Info.XTAL_CAP20P=0x01; //R16[1:0] 10pF (01) + R828_Freq_Info.XTAL_CAP10P=0x01; + R828_Freq_Info.XTAL_CAP0P=0x00; + R828_Freq_Info.IMR_MEM = 0; + } + else if( LO_freq>=110000 && LO_freq<120000) + { + R828_Freq_Info.OPEN_D=0x00; // high + R828_Freq_Info.RF_MUX_PLOY = 0x02; //R26[7:6]=0 (LPF) R26[1:0]=2 (low) + R828_Freq_Info.TF_C=0x24; //R27[7:0] band13,band11 + R828_Freq_Info.XTAL_CAP20P=0x01; //R16[1:0] 10pF (01) + R828_Freq_Info.XTAL_CAP10P=0x01; + R828_Freq_Info.XTAL_CAP0P=0x00; + R828_Freq_Info.IMR_MEM = 1; + } + else if( LO_freq>=120000 && LO_freq<140000) + { + R828_Freq_Info.OPEN_D=0x00; // high + R828_Freq_Info.RF_MUX_PLOY = 0x02; //R26[7:6]=0 (LPF) R26[1:0]=2 (low) + R828_Freq_Info.TF_C=0x24; //R27[7:0] band13,band11 + R828_Freq_Info.XTAL_CAP20P=0x01; //R16[1:0] 10pF (01) + R828_Freq_Info.XTAL_CAP10P=0x01; + R828_Freq_Info.XTAL_CAP0P=0x00; + R828_Freq_Info.IMR_MEM = 1; + } + else if( LO_freq>=140000 && LO_freq<180000) + { + R828_Freq_Info.OPEN_D=0x00; // high + R828_Freq_Info.RF_MUX_PLOY = 0x02; //R26[7:6]=0 (LPF) R26[1:0]=2 (low) + R828_Freq_Info.TF_C=0x14; //R27[7:0] band14,band11 + R828_Freq_Info.XTAL_CAP20P=0x01; //R16[1:0] 10pF (01) + R828_Freq_Info.XTAL_CAP10P=0x01; + R828_Freq_Info.XTAL_CAP0P=0x00; + R828_Freq_Info.IMR_MEM = 1; + } + else if( LO_freq>=180000 && LO_freq<220000) + { + R828_Freq_Info.OPEN_D=0x00; // high + R828_Freq_Info.RF_MUX_PLOY = 0x02; //R26[7:6]=0 (LPF) R26[1:0]=2 (low) + R828_Freq_Info.TF_C=0x13; //R27[7:0] band14,band12 + R828_Freq_Info.XTAL_CAP20P=0x00; //R16[1:0] 0pF (00) + R828_Freq_Info.XTAL_CAP10P=0x00; + R828_Freq_Info.XTAL_CAP0P=0x00; + R828_Freq_Info.IMR_MEM = 1; + } + else if( LO_freq>=220000 && LO_freq<250000) + { + R828_Freq_Info.OPEN_D=0x00; // high + R828_Freq_Info.RF_MUX_PLOY = 0x02; //R26[7:6]=0 (LPF) R26[1:0]=2 (low) + R828_Freq_Info.TF_C=0x13; //R27[7:0] band14,band12 + R828_Freq_Info.XTAL_CAP20P=0x00; //R16[1:0] 0pF (00) + R828_Freq_Info.XTAL_CAP10P=0x00; + R828_Freq_Info.XTAL_CAP0P=0x00; + R828_Freq_Info.IMR_MEM = 2; + } + else if( LO_freq>=250000 && LO_freq<280000) + { + R828_Freq_Info.OPEN_D=0x00; // high + R828_Freq_Info.RF_MUX_PLOY = 0x02; //R26[7:6]=0 (LPF) R26[1:0]=2 (low) + R828_Freq_Info.TF_C=0x11; //R27[7:0] highest,highest + R828_Freq_Info.XTAL_CAP20P=0x00; //R16[1:0] 0pF (00) + R828_Freq_Info.XTAL_CAP10P=0x00; + R828_Freq_Info.XTAL_CAP0P=0x00; + R828_Freq_Info.IMR_MEM = 2; + } + else if( LO_freq>=280000 && LO_freq<310000) + { + R828_Freq_Info.OPEN_D=0x00; // high + R828_Freq_Info.RF_MUX_PLOY = 0x02; //R26[7:6]=0 (LPF) R26[1:0]=2 (low) + R828_Freq_Info.TF_C=0x00; //R27[7:0] highest,highest + R828_Freq_Info.XTAL_CAP20P=0x00; //R16[1:0] 0pF (00) + R828_Freq_Info.XTAL_CAP10P=0x00; + R828_Freq_Info.XTAL_CAP0P=0x00; + R828_Freq_Info.IMR_MEM = 2; + } + else if( LO_freq>=310000 && LO_freq<450000) + { + R828_Freq_Info.OPEN_D=0x00; // high + R828_Freq_Info.RF_MUX_PLOY = 0x41; //R26[7:6]=1 (bypass) R26[1:0]=1 (middle) + R828_Freq_Info.TF_C=0x00; //R27[7:0] highest,highest + R828_Freq_Info.XTAL_CAP20P=0x00; //R16[1:0] 0pF (00) + R828_Freq_Info.XTAL_CAP10P=0x00; + R828_Freq_Info.XTAL_CAP0P=0x00; + R828_Freq_Info.IMR_MEM = 2; + } + else if( LO_freq>=450000 && LO_freq<588000) + { + R828_Freq_Info.OPEN_D=0x00; // high + R828_Freq_Info.RF_MUX_PLOY = 0x41; //R26[7:6]=1 (bypass) R26[1:0]=1 (middle) + R828_Freq_Info.TF_C=0x00; //R27[7:0] highest,highest + R828_Freq_Info.XTAL_CAP20P=0x00; //R16[1:0] 0pF (00) + R828_Freq_Info.XTAL_CAP10P=0x00; + R828_Freq_Info.XTAL_CAP0P=0x00; + R828_Freq_Info.IMR_MEM = 3; + } + else if( LO_freq>=588000 && LO_freq<650000) + { + R828_Freq_Info.OPEN_D=0x00; // high + R828_Freq_Info.RF_MUX_PLOY = 0x40; //R26[7:6]=1 (bypass) R26[1:0]=0 (highest) + R828_Freq_Info.TF_C=0x00; //R27[7:0] highest,highest + R828_Freq_Info.XTAL_CAP20P=0x00; //R16[1:0] 0pF (00) + R828_Freq_Info.XTAL_CAP10P=0x00; + R828_Freq_Info.XTAL_CAP0P=0x00; + R828_Freq_Info.IMR_MEM = 3; + } + else + { + R828_Freq_Info.OPEN_D=0x00; // high + R828_Freq_Info.RF_MUX_PLOY = 0x40; //R26[7:6]=1 (bypass) R26[1:0]=0 (highest) + R828_Freq_Info.TF_C=0x00; //R27[7:0] highest,highest + R828_Freq_Info.XTAL_CAP20P=0x00; //R16[1:0] 0pF (00) + R828_Freq_Info.XTAL_CAP10P=0x00; + R828_Freq_Info.XTAL_CAP0P=0x00; + R828_Freq_Info.IMR_MEM = 4; + } + + return R828_Freq_Info; +} + +SysFreq_Info_Type R828_SysFreq_Sel(R828_Standard_Type R828_Standard,UINT32 RF_freq) +{ + SysFreq_Info_Type R828_SysFreq_Info; + + switch(R828_Standard) + { + + case DVB_T_6M: + case DVB_T_7M: + case DVB_T_7M_2: + case DVB_T_8M: + if( (RF_freq==506000) || (RF_freq==666000) || (RF_freq==818000) ) + { + R828_SysFreq_Info.MIXER_TOP=0x14; // MIXER TOP:14 , TOP-1, low-discharge + R828_SysFreq_Info.LNA_TOP=0xE5; // Detect BW 3, LNA TOP:4, PreDet Top:2 + R828_SysFreq_Info.CP_CUR=0x28; //101, 0.2 + R828_SysFreq_Info.DIV_BUF_CUR=0x20; // 10, 200u + } + else + { + R828_SysFreq_Info.MIXER_TOP=0x24; // MIXER TOP:13 , TOP-1, low-discharge + R828_SysFreq_Info.LNA_TOP=0xE5; // Detect BW 3, LNA TOP:4, PreDet Top:2 + R828_SysFreq_Info.CP_CUR=0x38; // 111, auto + R828_SysFreq_Info.DIV_BUF_CUR=0x30; // 11, 150u + } + R828_SysFreq_Info.LNA_VTH_L=0x53; // LNA VTH 0.84 , VTL 0.64 + R828_SysFreq_Info.MIXER_VTH_L=0x75; // MIXER VTH 1.04, VTL 0.84 + R828_SysFreq_Info.AIR_CABLE1_IN=0x00; + R828_SysFreq_Info.CABLE2_IN=0x00; + R828_SysFreq_Info.PRE_DECT=0x40; + R828_SysFreq_Info.LNA_DISCHARGE=14; + R828_SysFreq_Info.FILTER_CUR=0x40; // 10, low + break; + + + case DVB_T2_6M: + case DVB_T2_7M: + case DVB_T2_7M_2: + case DVB_T2_8M: + R828_SysFreq_Info.MIXER_TOP=0x24; // MIXER TOP:13 , TOP-1, low-discharge + R828_SysFreq_Info.LNA_TOP=0xE5; // Detect BW 3, LNA TOP:4, PreDet Top:2 + R828_SysFreq_Info.LNA_VTH_L=0x53; // LNA VTH 0.84 , VTL 0.64 + R828_SysFreq_Info.MIXER_VTH_L=0x75; // MIXER VTH 1.04, VTL 0.84 + R828_SysFreq_Info.AIR_CABLE1_IN=0x00; + R828_SysFreq_Info.CABLE2_IN=0x00; + R828_SysFreq_Info.PRE_DECT=0x40; + R828_SysFreq_Info.LNA_DISCHARGE=14; + R828_SysFreq_Info.CP_CUR=0x38; // 111, auto + R828_SysFreq_Info.DIV_BUF_CUR=0x30; // 11, 150u + R828_SysFreq_Info.FILTER_CUR=0x40; // 10, low + break; + + case ISDB_T: + R828_SysFreq_Info.MIXER_TOP=0x24; // MIXER TOP:13 , TOP-1, low-discharge + R828_SysFreq_Info.LNA_TOP=0xE5; // Detect BW 3, LNA TOP:4, PreDet Top:2 + R828_SysFreq_Info.LNA_VTH_L=0x75; // LNA VTH 1.04 , VTL 0.84 + R828_SysFreq_Info.MIXER_VTH_L=0x75; // MIXER VTH 1.04, VTL 0.84 + R828_SysFreq_Info.AIR_CABLE1_IN=0x00; + R828_SysFreq_Info.CABLE2_IN=0x00; + R828_SysFreq_Info.PRE_DECT=0x40; + R828_SysFreq_Info.LNA_DISCHARGE=14; + R828_SysFreq_Info.CP_CUR=0x38; // 111, auto + R828_SysFreq_Info.DIV_BUF_CUR=0x30; // 11, 150u + R828_SysFreq_Info.FILTER_CUR=0x40; // 10, low + break; + + default: //DVB-T 8M + R828_SysFreq_Info.MIXER_TOP=0x24; // MIXER TOP:13 , TOP-1, low-discharge + R828_SysFreq_Info.LNA_TOP=0xE5; // Detect BW 3, LNA TOP:4, PreDet Top:2 + R828_SysFreq_Info.LNA_VTH_L=0x53; // LNA VTH 0.84 , VTL 0.64 + R828_SysFreq_Info.MIXER_VTH_L=0x75; // MIXER VTH 1.04, VTL 0.84 + R828_SysFreq_Info.AIR_CABLE1_IN=0x00; + R828_SysFreq_Info.CABLE2_IN=0x00; + R828_SysFreq_Info.PRE_DECT=0x40; + R828_SysFreq_Info.LNA_DISCHARGE=14; + R828_SysFreq_Info.CP_CUR=0x38; // 111, auto + R828_SysFreq_Info.DIV_BUF_CUR=0x30; // 11, 150u + R828_SysFreq_Info.FILTER_CUR=0x40; // 10, low + break; + + } //end switch + +//DTV use Diplexer +#if(USE_DIPLEXER==TRUE) +if ((Rafael_Chip==R820C) || (Rafael_Chip==R820T) || (Rafael_Chip==R828S)) +{ + // Air-in (>=DIP_FREQ) & cable-1(= DIP_FREQ) + { + R828_SysFreq_Info.AIR_CABLE1_IN = 0x00; //air in, cable-1 off + R828_SysFreq_Info.CABLE2_IN = 0x00; //cable-2 off + } + else + { + R828_SysFreq_Info.AIR_CABLE1_IN = 0x60; //cable-1 in, air off + R828_SysFreq_Info.CABLE2_IN = 0x00; //cable-2 off + } +} +#endif + return R828_SysFreq_Info; + + } + +R828_ErrCode R828_Xtal_Check(void *pTuner) +{ + UINT8 ArrayNum; + + ArrayNum = 27; + for(ArrayNum=0;ArrayNum<27;ArrayNum++) + { + R828_Arry[ArrayNum] = R828_iniArry[ArrayNum]; + } + + //cap 30pF & Drive Low + R828_I2C.RegAddr = 0x10; + R828_Arry[11] = (R828_Arry[11] & 0xF4) | 0x0B ; + R828_I2C.Data = R828_Arry[11]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //set pll autotune = 128kHz + R828_I2C.RegAddr = 0x1A; + R828_Arry[21] = R828_Arry[21] & 0xF3; + R828_I2C.Data = R828_Arry[21]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //set manual initial reg = 111111; + R828_I2C.RegAddr = 0x13; + R828_Arry[14] = (R828_Arry[14] & 0x80) | 0x7F; + R828_I2C.Data = R828_Arry[14]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //set auto + R828_I2C.RegAddr = 0x13; + R828_Arry[14] = (R828_Arry[14] & 0xBF); + R828_I2C.Data = R828_Arry[14]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_Delay_MS(pTuner, 5); + + R828_I2C_Len.RegAddr = 0x00; + R828_I2C_Len.Len = 3; + if(I2C_Read_Len(pTuner, &R828_I2C_Len) != RT_Success) + return RT_Fail; + + // if 30pF unlock, set to cap 20pF +#if (USE_16M_XTAL==TRUE) + //VCO=2360MHz for 16M Xtal. VCO band 26 + if(((R828_I2C_Len.Data[2] & 0x40) == 0x00) || ((R828_I2C_Len.Data[2] & 0x3F) > 29) || ((R828_I2C_Len.Data[2] & 0x3F) < 23)) +#else + if(((R828_I2C_Len.Data[2] & 0x40) == 0x00) || ((R828_I2C_Len.Data[2] & 0x3F) == 0x3F)) +#endif + { + //cap 20pF + R828_I2C.RegAddr = 0x10; + R828_Arry[11] = (R828_Arry[11] & 0xFC) | 0x02; + R828_I2C.Data = R828_Arry[11]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_Delay_MS(pTuner, 5); + + R828_I2C_Len.RegAddr = 0x00; + R828_I2C_Len.Len = 3; + if(I2C_Read_Len(pTuner, &R828_I2C_Len) != RT_Success) + return RT_Fail; + + // if 20pF unlock, set to cap 10pF +#if (USE_16M_XTAL==TRUE) + if(((R828_I2C_Len.Data[2] & 0x40) == 0x00) || ((R828_I2C_Len.Data[2] & 0x3F) > 29) || ((R828_I2C_Len.Data[2] & 0x3F) < 23)) +#else + if(((R828_I2C_Len.Data[2] & 0x40) == 0x00) || ((R828_I2C_Len.Data[2] & 0x3F) == 0x3F)) +#endif + { + //cap 10pF + R828_I2C.RegAddr = 0x10; + R828_Arry[11] = (R828_Arry[11] & 0xFC) | 0x01; + R828_I2C.Data = R828_Arry[11]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_Delay_MS(pTuner, 5); + + R828_I2C_Len.RegAddr = 0x00; + R828_I2C_Len.Len = 3; + if(I2C_Read_Len(pTuner, &R828_I2C_Len) != RT_Success) + return RT_Fail; + + // if 10pF unlock, set to cap 0pF +#if (USE_16M_XTAL==TRUE) + if(((R828_I2C_Len.Data[2] & 0x40) == 0x00) || ((R828_I2C_Len.Data[2] & 0x3F) > 29) || ((R828_I2C_Len.Data[2] & 0x3F) < 23)) +#else + if(((R828_I2C_Len.Data[2] & 0x40) == 0x00) || ((R828_I2C_Len.Data[2] & 0x3F) == 0x3F)) +#endif + { + //cap 0pF + R828_I2C.RegAddr = 0x10; + R828_Arry[11] = (R828_Arry[11] & 0xFC) | 0x00; + R828_I2C.Data = R828_Arry[11]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_Delay_MS(pTuner, 5); + + R828_I2C_Len.RegAddr = 0x00; + R828_I2C_Len.Len = 3; + if(I2C_Read_Len(pTuner, &R828_I2C_Len) != RT_Success) + return RT_Fail; + + // if unlock, set to high drive +#if (USE_16M_XTAL==TRUE) + if(((R828_I2C_Len.Data[2] & 0x40) == 0x00) || ((R828_I2C_Len.Data[2] & 0x3F) > 29) || ((R828_I2C_Len.Data[2] & 0x3F) < 23)) +#else + if(((R828_I2C_Len.Data[2] & 0x40) == 0x00) || ((R828_I2C_Len.Data[2] & 0x3F) == 0x3F)) +#endif + { + //X'tal drive high + R828_I2C.RegAddr = 0x10; + R828_Arry[11] = (R828_Arry[11] & 0xF7) ; + R828_I2C.Data = R828_Arry[11]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //R828_Delay_MS(15); + R828_Delay_MS(pTuner, 20); + + R828_I2C_Len.RegAddr = 0x00; + R828_I2C_Len.Len = 3; + if(I2C_Read_Len(pTuner, &R828_I2C_Len) != RT_Success) + return RT_Fail; + +#if (USE_16M_XTAL==TRUE) + if(((R828_I2C_Len.Data[2] & 0x40) == 0x00) || ((R828_I2C_Len.Data[2] & 0x3F) > 29) || ((R828_I2C_Len.Data[2] & 0x3F) < 23)) +#else + if(((R828_I2C_Len.Data[2] & 0x40) == 0x00) || ((R828_I2C_Len.Data[2] & 0x3F) == 0x3F)) +#endif + { + return RT_Fail; + } + else //0p+high drive lock + { + Xtal_cap_sel_tmp = XTAL_HIGH_CAP_0P; + } + } + else //0p lock + { + Xtal_cap_sel_tmp = XTAL_LOW_CAP_0P; + } + } + else //10p lock + { + Xtal_cap_sel_tmp = XTAL_LOW_CAP_10P; + } + } + else //20p lock + { + Xtal_cap_sel_tmp = XTAL_LOW_CAP_20P; + } + } + else // 30p lock + { + Xtal_cap_sel_tmp = XTAL_LOW_CAP_30P; + } + + return RT_Success; +} +R828_ErrCode R828_Init(void *pTuner) +{ +// R820T_EXTRA_MODULE *pExtra; + UINT8 i; + + // Get tuner extra module. +// pExtra = &(pTuner->Extra.R820t); + + //write initial reg + //if(R828_InitReg(pTuner) != RT_Success) + // return RT_Fail; + + if(R828_IMR_done_flag==FALSE) + { + + //write initial reg +// if(R828_InitReg(pTuner) != RT_Success) +// return RT_Fail; + + //Do Xtal check + if((Rafael_Chip==R820T) || (Rafael_Chip==R828S) || (Rafael_Chip==R820C)) + { + Xtal_cap_sel = XTAL_HIGH_CAP_0P; + } + else + { + if(R828_Xtal_Check(pTuner) != RT_Success) //1st + return RT_Fail; + + Xtal_cap_sel = Xtal_cap_sel_tmp; + + if(R828_Xtal_Check(pTuner) != RT_Success) //2nd + return RT_Fail; + + if(Xtal_cap_sel_tmp > Xtal_cap_sel) + { + Xtal_cap_sel = Xtal_cap_sel_tmp; + } + + if(R828_Xtal_Check(pTuner) != RT_Success) //3rd + return RT_Fail; + + if(Xtal_cap_sel_tmp > Xtal_cap_sel) + { + Xtal_cap_sel = Xtal_cap_sel_tmp; + } + + } + + //reset filter cal. + for (i=0; i24000) + RingRef = R828_Xtal /2; + else + RingRef = R828_Xtal; + + for(n=0;n<16;n++) + { + if((16+n)* 8 * RingRef >= 3100000) + { + n_ring=n; + break; + } + + if(n==15) //n_ring not found + { + //return RT_Fail; + n_ring=n; + } + + } + + R828_Arry[19] &= 0xF0; //set ring[3:0] + R828_Arry[19] |= n_ring; + RingVCO = (16+n_ring)* 8 * RingRef; + R828_Arry[19]&=0xDF; //clear ring_se23 + R828_Arry[20]&=0xFC; //clear ring_seldiv + R828_Arry[26]&=0xFC; //clear ring_att + + switch(IMR_MEM) + { + case 0: + RingFreq = RingVCO/48; + R828_Arry[19]|=0x20; // ring_se23 = 1 + R828_Arry[20]|=0x03; // ring_seldiv = 3 + R828_Arry[26]|=0x02; // ring_att 10 + break; + case 1: + RingFreq = RingVCO/16; + R828_Arry[19]|=0x00; // ring_se23 = 0 + R828_Arry[20]|=0x02; // ring_seldiv = 2 + R828_Arry[26]|=0x00; // pw_ring 00 + break; + case 2: + RingFreq = RingVCO/8; + R828_Arry[19]|=0x00; // ring_se23 = 0 + R828_Arry[20]|=0x01; // ring_seldiv = 1 + R828_Arry[26]|=0x03; // pw_ring 11 + break; + case 3: + RingFreq = RingVCO/6; + R828_Arry[19]|=0x20; // ring_se23 = 1 + R828_Arry[20]|=0x00; // ring_seldiv = 0 + R828_Arry[26]|=0x03; // pw_ring 11 + break; + case 4: + RingFreq = RingVCO/4; + R828_Arry[19]|=0x00; // ring_se23 = 0 + R828_Arry[20]|=0x00; // ring_seldiv = 0 + R828_Arry[26]|=0x01; // pw_ring 01 + break; + default: + RingFreq = RingVCO/4; + R828_Arry[19]|=0x00; // ring_se23 = 0 + R828_Arry[20]|=0x00; // ring_seldiv = 0 + R828_Arry[26]|=0x01; // pw_ring 01 + break; + } + + + //write pw_ring,n_ring,ringdiv2 to I2C + + //------------n_ring,ring_se23----------// + R828_I2C.RegAddr = 0x18; + R828_I2C.Data = R828_Arry[19]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + //------------ring_sediv----------------// + R828_I2C.RegAddr = 0x19; + R828_I2C.Data = R828_Arry[20]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + //------------pw_ring-------------------// + R828_I2C.RegAddr = 0x1f; + R828_I2C.Data = R828_Arry[26]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //Must do before PLL() + if(R828_MUX(pTuner, RingFreq - 5300) != RT_Success) //MUX input freq ~ RF_in Freq + return RT_Fail; + + if(R828_PLL(pTuner, (RingFreq - 5300) * 1000, STD_SIZE) != RT_Success) //set pll freq = ring freq - 6M + return RT_Fail; + + if(IM_Flag == TRUE) + { + if(R828_IQ(pTuner, &IMR_POINT) != RT_Success) + return RT_Fail; + } + else + { + IMR_POINT.Gain_X = IMR_Data[3].Gain_X; + IMR_POINT.Phase_Y = IMR_Data[3].Phase_Y; + IMR_POINT.Value = IMR_Data[3].Value; + if(R828_F_IMR(pTuner, &IMR_POINT) != RT_Success) + return RT_Fail; + } + + //Save IMR Value + switch(IMR_MEM) + { + case 0: + IMR_Data[0].Gain_X = IMR_POINT.Gain_X; + IMR_Data[0].Phase_Y = IMR_POINT.Phase_Y; + IMR_Data[0].Value = IMR_POINT.Value; + break; + case 1: + IMR_Data[1].Gain_X = IMR_POINT.Gain_X; + IMR_Data[1].Phase_Y = IMR_POINT.Phase_Y; + IMR_Data[1].Value = IMR_POINT.Value; + break; + case 2: + IMR_Data[2].Gain_X = IMR_POINT.Gain_X; + IMR_Data[2].Phase_Y = IMR_POINT.Phase_Y; + IMR_Data[2].Value = IMR_POINT.Value; + break; + case 3: + IMR_Data[3].Gain_X = IMR_POINT.Gain_X; + IMR_Data[3].Phase_Y = IMR_POINT.Phase_Y; + IMR_Data[3].Value = IMR_POINT.Value; + break; + case 4: + IMR_Data[4].Gain_X = IMR_POINT.Gain_X; + IMR_Data[4].Phase_Y = IMR_POINT.Phase_Y; + IMR_Data[4].Value = IMR_POINT.Value; + break; + default: + IMR_Data[4].Gain_X = IMR_POINT.Gain_X; + IMR_Data[4].Phase_Y = IMR_POINT.Phase_Y; + IMR_Data[4].Value = IMR_POINT.Value; + break; + } + return RT_Success; +} + +R828_ErrCode R828_PLL(void *pTuner, UINT32 LO_Freq, R828_Standard_Type R828_Standard) +{ + +// R820T_EXTRA_MODULE *pExtra; + + UINT8 MixDiv; + UINT8 DivBuf; + UINT8 Ni; + UINT8 Si; + UINT8 DivNum; + UINT8 Nint; + UINT32 VCO_Min_kHz; + UINT32 VCO_Max_kHz; + uint64_t VCO_Freq; + UINT32 PLL_Ref; //Max 24000 (kHz) + UINT32 VCO_Fra; //VCO contribution by SDM (kHz) + UINT16 Nsdm; + UINT16 SDM; + UINT16 SDM16to9; + UINT16 SDM8to1; + //UINT8 Judge = 0; + UINT8 VCO_fine_tune; + + MixDiv = 2; + DivBuf = 0; + Ni = 0; + Si = 0; + DivNum = 0; + Nint = 0; + VCO_Min_kHz = 1770000; + VCO_Max_kHz = VCO_Min_kHz*2; + VCO_Freq = 0; + PLL_Ref = 0; //Max 24000 (kHz) + VCO_Fra = 0; //VCO contribution by SDM (kHz) + Nsdm = 2; + SDM = 0; + SDM16to9 = 0; + SDM8to1 = 0; + //UINT8 Judge = 0; + VCO_fine_tune = 0; + +#if 0 + if ((Rafael_Chip==R620D) || (Rafael_Chip==R828D) || (Rafael_Chip==R828)) //X'tal can't not exceed 20MHz for ATV + { + if(R828_Standard <= SECAM_L1) //ref set refdiv2, reffreq = Xtal/2 on ATV application + { + R828_Arry[11] |= 0x10; //b4=1 + PLL_Ref = R828_Xtal /2; + } + else //DTV, FilCal, IMR + { + R828_Arry[11] &= 0xEF; + PLL_Ref = R828_Xtal; + } + } + else + { + if(R828_Xtal > 24000) + { + R828_Arry[11] |= 0x10; //b4=1 + PLL_Ref = R828_Xtal /2; + } + else + { + R828_Arry[11] &= 0xEF; + PLL_Ref = R828_Xtal; + } + } +#endif + //FIXME hack + R828_Arry[11] &= 0xEF; + PLL_Ref = rtlsdr_get_tuner_clock(pTuner); + + R828_I2C.RegAddr = 0x10; + R828_I2C.Data = R828_Arry[11]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //set pll autotune = 128kHz + R828_I2C.RegAddr = 0x1A; + R828_Arry[21] = R828_Arry[21] & 0xF3; + R828_I2C.Data = R828_Arry[21]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //Set VCO current = 100 + R828_I2C.RegAddr = 0x12; + R828_Arry[13] = (R828_Arry[13] & 0x1F) | 0x80; + R828_I2C.Data = R828_Arry[13]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //Divider + while(MixDiv <= 64) + { + if((((LO_Freq/1000) * MixDiv) >= VCO_Min_kHz) && (((LO_Freq/1000) * MixDiv) < VCO_Max_kHz)) + { + DivBuf = MixDiv; + while(DivBuf > 2) + { + DivBuf = DivBuf >> 1; + DivNum ++; + } + break; + } + MixDiv = MixDiv << 1; + } + + R828_I2C_Len.RegAddr = 0x00; + R828_I2C_Len.Len = 5; + if(I2C_Read_Len(pTuner, &R828_I2C_Len) != RT_Success) + return RT_Fail; + + VCO_fine_tune = (R828_I2C_Len.Data[4] & 0x30)>>4; + + if(VCO_fine_tune > VCO_pwr_ref) + DivNum = DivNum - 1; + else if(VCO_fine_tune < VCO_pwr_ref) + DivNum = DivNum + 1; + + R828_I2C.RegAddr = 0x10; + R828_Arry[11] &= 0x1F; + R828_Arry[11] |= (DivNum << 5); + R828_I2C.Data = R828_Arry[11]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + VCO_Freq = (uint64_t)(LO_Freq * (uint64_t)MixDiv); + Nint = (UINT8) (VCO_Freq / 2 / PLL_Ref); + VCO_Fra = (UINT16) ((VCO_Freq - 2 * PLL_Ref * Nint) / 1000); + + //FIXME hack + PLL_Ref /= 1000; + +// printf("VCO_Freq = %lu, Nint= %u, VCO_Fra= %lu, LO_Freq= %u, MixDiv= %u\n", VCO_Freq, Nint, VCO_Fra, LO_Freq, MixDiv); + + //boundary spur prevention + if (VCO_Fra < PLL_Ref/64) //2*PLL_Ref/128 + VCO_Fra = 0; + else if (VCO_Fra > PLL_Ref*127/64) //2*PLL_Ref*127/128 + { + VCO_Fra = 0; + Nint ++; + } + else if((VCO_Fra > PLL_Ref*127/128) && (VCO_Fra < PLL_Ref)) //> 2*PLL_Ref*127/256, < 2*PLL_Ref*128/256 + VCO_Fra = PLL_Ref*127/128; // VCO_Fra = 2*PLL_Ref*127/256 + else if((VCO_Fra > PLL_Ref) && (VCO_Fra < PLL_Ref*129/128)) //> 2*PLL_Ref*128/256, < 2*PLL_Ref*129/256 + VCO_Fra = PLL_Ref*129/128; // VCO_Fra = 2*PLL_Ref*129/256 + else + VCO_Fra = VCO_Fra; + + if (Nint > 63) { + fprintf(stderr, "[R820T] No valid PLL values for %u Hz!\n", LO_Freq); + return RT_Fail; + } + + //N & S + Ni = (Nint - 13) / 4; + Si = Nint - 4 *Ni - 13; + R828_I2C.RegAddr = 0x14; + R828_Arry[15] = 0x00; + R828_Arry[15] |= (Ni + (Si << 6)); + R828_I2C.Data = R828_Arry[15]; + + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //pw_sdm + R828_I2C.RegAddr = 0x12; + R828_Arry[13] &= 0xF7; + if(VCO_Fra == 0) + R828_Arry[13] |= 0x08; + R828_I2C.Data = R828_Arry[13]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //SDM calculator + while(VCO_Fra > 1) + { + if (VCO_Fra > (2*PLL_Ref / Nsdm)) + { + SDM = SDM + 32768 / (Nsdm/2); + VCO_Fra = VCO_Fra - 2*PLL_Ref / Nsdm; + if (Nsdm >= 0x8000) + break; + } + Nsdm = Nsdm << 1; + } + + SDM16to9 = SDM >> 8; + SDM8to1 = SDM - (SDM16to9 << 8); + + R828_I2C.RegAddr = 0x16; + R828_Arry[17] = (UINT8) SDM16to9; + R828_I2C.Data = R828_Arry[17]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + R828_I2C.RegAddr = 0x15; + R828_Arry[16] = (UINT8) SDM8to1; + R828_I2C.Data = R828_Arry[16]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + +// R828_Delay_MS(10); + + if ((Rafael_Chip==R620D) || (Rafael_Chip==R828D) || (Rafael_Chip==R828)) + { + if(R828_Standard <= SECAM_L1) + R828_Delay_MS(pTuner, 20); + else + R828_Delay_MS(pTuner, 10); + } + else + { + R828_Delay_MS(pTuner, 10); + } + + //check PLL lock status + R828_I2C_Len.RegAddr = 0x00; + R828_I2C_Len.Len = 3; + if(I2C_Read_Len(pTuner, &R828_I2C_Len) != RT_Success) + return RT_Fail; + + if( (R828_I2C_Len.Data[2] & 0x40) == 0x00 ) + { + fprintf(stderr, "[R820T] PLL not locked for %u Hz!\n", LO_Freq); + R828_I2C.RegAddr = 0x12; + R828_Arry[13] = (R828_Arry[13] & 0x1F) | 0x60; //increase VCO current + R828_I2C.Data = R828_Arry[13]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + return RT_Fail; + } + + //set pll autotune = 8kHz + R828_I2C.RegAddr = 0x1A; + R828_Arry[21] = R828_Arry[21] | 0x08; + R828_I2C.Data = R828_Arry[21]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + return RT_Success; +} + +R828_ErrCode R828_MUX(void *pTuner, UINT32 RF_KHz) +{ + UINT8 RT_Reg08; + UINT8 RT_Reg09; + + RT_Reg08 = 0; + RT_Reg09 = 0; + + //Freq_Info_Type Freq_Info1; + Freq_Info1 = R828_Freq_Sel(RF_KHz); + + // Open Drain + R828_I2C.RegAddr = 0x17; + R828_Arry[18] = (R828_Arry[18] & 0xF7) | Freq_Info1.OPEN_D; + R828_I2C.Data = R828_Arry[18]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + // RF_MUX,Polymux + R828_I2C.RegAddr = 0x1A; + R828_Arry[21] = (R828_Arry[21] & 0x3C) | Freq_Info1.RF_MUX_PLOY; + R828_I2C.Data = R828_Arry[21]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + // TF BAND + R828_I2C.RegAddr = 0x1B; + R828_Arry[22] &= 0x00; + R828_Arry[22] |= Freq_Info1.TF_C; + R828_I2C.Data = R828_Arry[22]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + // XTAL CAP & Drive + R828_I2C.RegAddr = 0x10; + R828_Arry[11] &= 0xF4; + switch(Xtal_cap_sel) + { + case XTAL_LOW_CAP_30P: + case XTAL_LOW_CAP_20P: + R828_Arry[11] = R828_Arry[11] | Freq_Info1.XTAL_CAP20P | 0x08; + break; + + case XTAL_LOW_CAP_10P: + R828_Arry[11] = R828_Arry[11] | Freq_Info1.XTAL_CAP10P | 0x08; + break; + + case XTAL_LOW_CAP_0P: + R828_Arry[11] = R828_Arry[11] | Freq_Info1.XTAL_CAP0P | 0x08; + break; + + case XTAL_HIGH_CAP_0P: + R828_Arry[11] = R828_Arry[11] | Freq_Info1.XTAL_CAP0P | 0x00; + break; + + default: + R828_Arry[11] = R828_Arry[11] | Freq_Info1.XTAL_CAP0P | 0x08; + break; + } + R828_I2C.Data = R828_Arry[11]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //Set_IMR + if(R828_IMR_done_flag == TRUE) + { + RT_Reg08 = IMR_Data[Freq_Info1.IMR_MEM].Gain_X & 0x3F; + RT_Reg09 = IMR_Data[Freq_Info1.IMR_MEM].Phase_Y & 0x3F; + } + else + { + RT_Reg08 = 0; + RT_Reg09 = 0; + } + + R828_I2C.RegAddr = 0x08; + R828_Arry[3] = R828_iniArry[3] & 0xC0; + R828_Arry[3] = R828_Arry[3] | RT_Reg08; + R828_I2C.Data = R828_Arry[3]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_I2C.RegAddr = 0x09; + R828_Arry[4] = R828_iniArry[4] & 0xC0; + R828_Arry[4] = R828_Arry[4] | RT_Reg09; + R828_I2C.Data =R828_Arry[4] ; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + return RT_Success; +} + +R828_ErrCode R828_IQ(void *pTuner, R828_SectType* IQ_Pont) +{ + R828_SectType Compare_IQ[3]; +// R828_SectType CompareTemp; +// UINT8 IQ_Count = 0; + UINT8 VGA_Count; + UINT16 VGA_Read; + UINT8 X_Direction; // 1:X, 0:Y + + VGA_Count = 0; + VGA_Read = 0; + + // increase VGA power to let image significant + for(VGA_Count = 12;VGA_Count < 16;VGA_Count ++) + { + R828_I2C.RegAddr = 0x0C; + R828_I2C.Data = (R828_Arry[7] & 0xF0) + VGA_Count; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_Delay_MS(pTuner, 10); // + + if(R828_Muti_Read(pTuner, 0x01, &VGA_Read) != RT_Success) + return RT_Fail; + + if(VGA_Read > 40*4) + break; + } + + //initial 0x08, 0x09 + //Compare_IQ[0].Gain_X = 0x40; //should be 0xC0 in R828, Jason + //Compare_IQ[0].Phase_Y = 0x40; //should be 0x40 in R828 + Compare_IQ[0].Gain_X = R828_iniArry[3] & 0xC0; // Jason modified, clear b[5], b[4:0] + Compare_IQ[0].Phase_Y = R828_iniArry[4] & 0xC0; // + + //while(IQ_Count < 3) + //{ + // Determine X or Y + if(R828_IMR_Cross(pTuner, &Compare_IQ[0], &X_Direction) != RT_Success) + return RT_Fail; + + //if(X_Direction==1) + //{ + // if(R828_IQ_Tree(Compare_IQ[0].Phase_Y, Compare_IQ[0].Gain_X, 0x09, &Compare_IQ[0]) != RT_Success) //X + // return RT_Fail; + //} + //else + //{ + // if(R828_IQ_Tree(Compare_IQ[0].Gain_X, Compare_IQ[0].Phase_Y, 0x08, &Compare_IQ[0]) != RT_Success) //Y + // return RT_Fail; + //} + + /* + //--- X direction ---// + //X: 3 points + if(R828_IQ_Tree(Compare_IQ[0].Phase_Y, Compare_IQ[0].Gain_X, 0x09, &Compare_IQ[0]) != RT_Success) // + return RT_Fail; + + //compare and find min of 3 points. determine I/Q direction + if(R828_CompreCor(&Compare_IQ[0]) != RT_Success) + return RT_Fail; + + //increase step to find min value of this direction + if(R828_CompreStep(&Compare_IQ[0], 0x08) != RT_Success) + return RT_Fail; + */ + + if(X_Direction==1) + { + //compare and find min of 3 points. determine I/Q direction + if(R828_CompreCor(&Compare_IQ[0]) != RT_Success) + return RT_Fail; + + //increase step to find min value of this direction + if(R828_CompreStep(pTuner, &Compare_IQ[0], 0x08) != RT_Success) //X + return RT_Fail; + } + else + { + //compare and find min of 3 points. determine I/Q direction + if(R828_CompreCor(&Compare_IQ[0]) != RT_Success) + return RT_Fail; + + //increase step to find min value of this direction + if(R828_CompreStep(pTuner, &Compare_IQ[0], 0x09) != RT_Success) //Y + return RT_Fail; + } + /* + //--- Y direction ---// + //Y: 3 points + if(R828_IQ_Tree(Compare_IQ[0].Gain_X, Compare_IQ[0].Phase_Y, 0x08, &Compare_IQ[0]) != RT_Success) // + return RT_Fail; + + //compare and find min of 3 points. determine I/Q direction + if(R828_CompreCor(&Compare_IQ[0]) != RT_Success) + return RT_Fail; + + //increase step to find min value of this direction + if(R828_CompreStep(&Compare_IQ[0], 0x09) != RT_Success) + return RT_Fail; + */ + + //Another direction + if(X_Direction==1) + { + if(R828_IQ_Tree(pTuner, Compare_IQ[0].Gain_X, Compare_IQ[0].Phase_Y, 0x08, &Compare_IQ[0]) != RT_Success) //Y + return RT_Fail; + + //compare and find min of 3 points. determine I/Q direction + if(R828_CompreCor(&Compare_IQ[0]) != RT_Success) + return RT_Fail; + + //increase step to find min value of this direction + if(R828_CompreStep(pTuner, &Compare_IQ[0], 0x09) != RT_Success) //Y + return RT_Fail; + } + else + { + if(R828_IQ_Tree(pTuner, Compare_IQ[0].Phase_Y, Compare_IQ[0].Gain_X, 0x09, &Compare_IQ[0]) != RT_Success) //X + return RT_Fail; + + //compare and find min of 3 points. determine I/Q direction + if(R828_CompreCor(&Compare_IQ[0]) != RT_Success) + return RT_Fail; + + //increase step to find min value of this direction + if(R828_CompreStep(pTuner, &Compare_IQ[0], 0x08) != RT_Success) //X + return RT_Fail; + } + //CompareTemp = Compare_IQ[0]; + + //--- Check 3 points again---// + if(X_Direction==1) + { + if(R828_IQ_Tree(pTuner, Compare_IQ[0].Phase_Y, Compare_IQ[0].Gain_X, 0x09, &Compare_IQ[0]) != RT_Success) //X + return RT_Fail; + } + else + { + if(R828_IQ_Tree(pTuner, Compare_IQ[0].Gain_X, Compare_IQ[0].Phase_Y, 0x08, &Compare_IQ[0]) != RT_Success) //Y + return RT_Fail; + } + + //if(R828_IQ_Tree(Compare_IQ[0].Phase_Y, Compare_IQ[0].Gain_X, 0x09, &Compare_IQ[0]) != RT_Success) // + // return RT_Fail; + + if(R828_CompreCor(&Compare_IQ[0]) != RT_Success) + return RT_Fail; + + //if((CompareTemp.Gain_X == Compare_IQ[0].Gain_X) && (CompareTemp.Phase_Y == Compare_IQ[0].Phase_Y))//Ben Check + // break; + + //IQ_Count ++; + //} + //if(IQ_Count == 3) + // return RT_Fail; + + //Section-4 Check + /* + CompareTemp = Compare_IQ[0]; + for(IQ_Count = 0;IQ_Count < 5;IQ_Count ++) + { + if(R828_Section(&Compare_IQ[0]) != RT_Success) + return RT_Fail; + + if((CompareTemp.Gain_X == Compare_IQ[0].Gain_X) && (CompareTemp.Phase_Y == Compare_IQ[0].Phase_Y)) + break; + } + */ + + //Section-9 check + //if(R828_F_IMR(&Compare_IQ[0]) != RT_Success) + if(R828_Section(pTuner, &Compare_IQ[0]) != RT_Success) + return RT_Fail; + + *IQ_Pont = Compare_IQ[0]; + + //reset gain/phase control setting + R828_I2C.RegAddr = 0x08; + R828_I2C.Data = R828_iniArry[3] & 0xC0; //Jason + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_I2C.RegAddr = 0x09; + R828_I2C.Data = R828_iniArry[4] & 0xC0; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + return RT_Success; +} + +//-------------------------------------------------------------------------------------------- +// Purpose: record IMC results by input gain/phase location +// then adjust gain or phase positive 1 step and negtive 1 step, both record results +// input: FixPot: phase or gain +// FlucPot phase or gain +// PotReg: 0x08 or 0x09 +// CompareTree: 3 IMR trace and results +// output: TREU or FALSE +//-------------------------------------------------------------------------------------------- +R828_ErrCode R828_IQ_Tree(void *pTuner, UINT8 FixPot, UINT8 FlucPot, UINT8 PotReg, R828_SectType* CompareTree) +{ + UINT8 TreeCount; + UINT8 TreeTimes; + UINT8 TempPot; + UINT8 PntReg; + + TreeCount = 0; + TreeTimes = 3; + TempPot = 0; + PntReg = 0; + + if(PotReg == 0x08) + PntReg = 0x09; //phase control + else + PntReg = 0x08; //gain control + + for(TreeCount = 0;TreeCount < TreeTimes;TreeCount ++) + { + R828_I2C.RegAddr = PotReg; + R828_I2C.Data = FixPot; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_I2C.RegAddr = PntReg; + R828_I2C.Data = FlucPot; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + if(R828_Muti_Read(pTuner, 0x01, &CompareTree[TreeCount].Value) != RT_Success) + return RT_Fail; + + if(PotReg == 0x08) + { + CompareTree[TreeCount].Gain_X = FixPot; + CompareTree[TreeCount].Phase_Y = FlucPot; + } + else + { + CompareTree[TreeCount].Phase_Y = FixPot; + CompareTree[TreeCount].Gain_X = FlucPot; + } + + if(TreeCount == 0) //try right-side point + FlucPot ++; + else if(TreeCount == 1) //try left-side point + { + if((FlucPot & 0x1F) < 0x02) //if absolute location is 1, change I/Q direction + { + TempPot = 2 - (FlucPot & 0x1F); + if(FlucPot & 0x20) //b[5]:I/Q selection. 0:Q-path, 1:I-path + { + FlucPot &= 0xC0; + FlucPot |= TempPot; + } + else + { + FlucPot |= (0x20 | TempPot); + } + } + else + FlucPot -= 2; + } + } + + return RT_Success; +} + +//-----------------------------------------------------------------------------------/ +// Purpose: compare IMC result aray [0][1][2], find min value and store to CorArry[0] +// input: CorArry: three IMR data array +// output: TRUE or FALSE +//-----------------------------------------------------------------------------------/ +R828_ErrCode R828_CompreCor(R828_SectType* CorArry) +{ + UINT8 CompCount; + R828_SectType CorTemp; + + CompCount = 0; + + for(CompCount = 3;CompCount > 0;CompCount --) + { + if(CorArry[0].Value > CorArry[CompCount - 1].Value) //compare IMC result [0][1][2], find min value + { + CorTemp = CorArry[0]; + CorArry[0] = CorArry[CompCount - 1]; + CorArry[CompCount - 1] = CorTemp; + } + } + + return RT_Success; +} + +//-------------------------------------------------------------------------------------// +// Purpose: if (Gain<9 or Phase<9), Gain+1 or Phase+1 and compare with min value +// new < min => update to min and continue +// new > min => Exit +// input: StepArry: three IMR data array +// Pace: gain or phase register +// output: TRUE or FALSE +//-------------------------------------------------------------------------------------// +R828_ErrCode R828_CompreStep(void *pTuner, R828_SectType* StepArry, UINT8 Pace) +{ + //UINT8 StepCount = 0; + R828_SectType StepTemp; + + //min value already saved in StepArry[0] + StepTemp.Phase_Y = StepArry[0].Phase_Y; + StepTemp.Gain_X = StepArry[0].Gain_X; + + while(((StepTemp.Gain_X & 0x1F) < IMR_TRIAL) && ((StepTemp.Phase_Y & 0x1F) < IMR_TRIAL)) //5->10 + { + if(Pace == 0x08) + StepTemp.Gain_X ++; + else + StepTemp.Phase_Y ++; + + R828_I2C.RegAddr = 0x08; + R828_I2C.Data = StepTemp.Gain_X ; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_I2C.RegAddr = 0x09; + R828_I2C.Data = StepTemp.Phase_Y; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + if(R828_Muti_Read(pTuner, 0x01, &StepTemp.Value) != RT_Success) + return RT_Fail; + + if(StepTemp.Value <= StepArry[0].Value) + { + StepArry[0].Gain_X = StepTemp.Gain_X; + StepArry[0].Phase_Y = StepTemp.Phase_Y; + StepArry[0].Value = StepTemp.Value; + } + else + { + break; + } + + } //end of while() + + return RT_Success; +} + +//-----------------------------------------------------------------------------------/ +// Purpose: read multiple IMC results for stability +// input: IMR_Reg: IMC result address +// IMR_Result_Data: result +// output: TRUE or FALSE +//-----------------------------------------------------------------------------------/ +R828_ErrCode R828_Muti_Read(void *pTuner, UINT8 IMR_Reg, UINT16* IMR_Result_Data) //jason modified +{ + UINT8 ReadCount; + UINT16 ReadAmount; + UINT8 ReadMax; + UINT8 ReadMin; + UINT8 ReadData; + + ReadCount = 0; + ReadAmount = 0; + ReadMax = 0; + ReadMin = 255; + ReadData = 0; + + R828_Delay_MS(pTuner, 5); + + for(ReadCount = 0;ReadCount < 6;ReadCount ++) + { + R828_I2C_Len.RegAddr = 0x00; + R828_I2C_Len.Len = IMR_Reg + 1; //IMR_Reg = 0x01 + if(I2C_Read_Len(pTuner, &R828_I2C_Len) != RT_Success) + return RT_Fail; + + ReadData = R828_I2C_Len.Data[1]; + + ReadAmount = ReadAmount + (UINT16)ReadData; + + if(ReadData < ReadMin) + ReadMin = ReadData; + + if(ReadData > ReadMax) + ReadMax = ReadData; + } + *IMR_Result_Data = ReadAmount - (UINT16)ReadMax - (UINT16)ReadMin; + + return RT_Success; +} + +R828_ErrCode R828_Section(void *pTuner, R828_SectType* IQ_Pont) +{ + R828_SectType Compare_IQ[3]; + R828_SectType Compare_Bet[3]; + + //Try X-1 column and save min result to Compare_Bet[0] + if((IQ_Pont->Gain_X & 0x1F) == 0x00) + { + /* + if((IQ_Pont->Gain_X & 0xE0) == 0x40) //bug => only compare b[5], + Compare_IQ[0].Gain_X = 0x61; // Gain=1, I-path //Jason + else + Compare_IQ[0].Gain_X = 0x41; // Gain=1, Q-path + */ + Compare_IQ[0].Gain_X = ((IQ_Pont->Gain_X) & 0xDF) + 1; //Q-path, Gain=1 + } + else + Compare_IQ[0].Gain_X = IQ_Pont->Gain_X - 1; //left point + Compare_IQ[0].Phase_Y = IQ_Pont->Phase_Y; + + if(R828_IQ_Tree(pTuner, Compare_IQ[0].Gain_X, Compare_IQ[0].Phase_Y, 0x08, &Compare_IQ[0]) != RT_Success) // y-direction + return RT_Fail; + + if(R828_CompreCor(&Compare_IQ[0]) != RT_Success) + return RT_Fail; + + Compare_Bet[0].Gain_X = Compare_IQ[0].Gain_X; + Compare_Bet[0].Phase_Y = Compare_IQ[0].Phase_Y; + Compare_Bet[0].Value = Compare_IQ[0].Value; + + //Try X column and save min result to Compare_Bet[1] + Compare_IQ[0].Gain_X = IQ_Pont->Gain_X; + Compare_IQ[0].Phase_Y = IQ_Pont->Phase_Y; + + if(R828_IQ_Tree(pTuner, Compare_IQ[0].Gain_X, Compare_IQ[0].Phase_Y, 0x08, &Compare_IQ[0]) != RT_Success) + return RT_Fail; + + if(R828_CompreCor(&Compare_IQ[0]) != RT_Success) + return RT_Fail; + + Compare_Bet[1].Gain_X = Compare_IQ[0].Gain_X; + Compare_Bet[1].Phase_Y = Compare_IQ[0].Phase_Y; + Compare_Bet[1].Value = Compare_IQ[0].Value; + + //Try X+1 column and save min result to Compare_Bet[2] + if((IQ_Pont->Gain_X & 0x1F) == 0x00) + Compare_IQ[0].Gain_X = ((IQ_Pont->Gain_X) | 0x20) + 1; //I-path, Gain=1 + else + Compare_IQ[0].Gain_X = IQ_Pont->Gain_X + 1; + Compare_IQ[0].Phase_Y = IQ_Pont->Phase_Y; + + if(R828_IQ_Tree(pTuner, Compare_IQ[0].Gain_X, Compare_IQ[0].Phase_Y, 0x08, &Compare_IQ[0]) != RT_Success) + return RT_Fail; + + if(R828_CompreCor(&Compare_IQ[0]) != RT_Success) + return RT_Fail; + + Compare_Bet[2].Gain_X = Compare_IQ[0].Gain_X; + Compare_Bet[2].Phase_Y = Compare_IQ[0].Phase_Y; + Compare_Bet[2].Value = Compare_IQ[0].Value; + + if(R828_CompreCor(&Compare_Bet[0]) != RT_Success) + return RT_Fail; + + *IQ_Pont = Compare_Bet[0]; + + return RT_Success; +} + +R828_ErrCode R828_IMR_Cross(void *pTuner, R828_SectType* IQ_Pont, UINT8* X_Direct) +{ + + R828_SectType Compare_Cross[5]; //(0,0)(0,Q-1)(0,I-1)(Q-1,0)(I-1,0) + R828_SectType Compare_Temp; + UINT8 CrossCount; + UINT8 Reg08; + UINT8 Reg09; + + CrossCount = 0; + Reg08 = R828_iniArry[3] & 0xC0; + Reg09 = R828_iniArry[4] & 0xC0; + + //memset(&Compare_Temp,0, sizeof(R828_SectType)); + Compare_Temp.Gain_X = 0; + Compare_Temp.Phase_Y = 0; + Compare_Temp.Value = 0; + + Compare_Temp.Value = 255; + + for(CrossCount=0; CrossCount<5; CrossCount++) + { + + if(CrossCount==0) + { + Compare_Cross[CrossCount].Gain_X = Reg08; + Compare_Cross[CrossCount].Phase_Y = Reg09; + } + else if(CrossCount==1) + { + Compare_Cross[CrossCount].Gain_X = Reg08; //0 + Compare_Cross[CrossCount].Phase_Y = Reg09 + 1; //Q-1 + } + else if(CrossCount==2) + { + Compare_Cross[CrossCount].Gain_X = Reg08; //0 + Compare_Cross[CrossCount].Phase_Y = (Reg09 | 0x20) + 1; //I-1 + } + else if(CrossCount==3) + { + Compare_Cross[CrossCount].Gain_X = Reg08 + 1; //Q-1 + Compare_Cross[CrossCount].Phase_Y = Reg09; + } + else + { + Compare_Cross[CrossCount].Gain_X = (Reg08 | 0x20) + 1; //I-1 + Compare_Cross[CrossCount].Phase_Y = Reg09; + } + + R828_I2C.RegAddr = 0x08; + R828_I2C.Data = Compare_Cross[CrossCount].Gain_X; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_I2C.RegAddr = 0x09; + R828_I2C.Data = Compare_Cross[CrossCount].Phase_Y; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + if(R828_Muti_Read(pTuner, 0x01, &Compare_Cross[CrossCount].Value) != RT_Success) + return RT_Fail; + + if( Compare_Cross[CrossCount].Value < Compare_Temp.Value) + { + Compare_Temp.Value = Compare_Cross[CrossCount].Value; + Compare_Temp.Gain_X = Compare_Cross[CrossCount].Gain_X; + Compare_Temp.Phase_Y = Compare_Cross[CrossCount].Phase_Y; + } + } //end for loop + + + if((Compare_Temp.Phase_Y & 0x1F)==1) //y-direction + { + *X_Direct = (UINT8) 0; + IQ_Pont[0].Gain_X = Compare_Cross[0].Gain_X; + IQ_Pont[0].Phase_Y = Compare_Cross[0].Phase_Y; + IQ_Pont[0].Value = Compare_Cross[0].Value; + + IQ_Pont[1].Gain_X = Compare_Cross[1].Gain_X; + IQ_Pont[1].Phase_Y = Compare_Cross[1].Phase_Y; + IQ_Pont[1].Value = Compare_Cross[1].Value; + + IQ_Pont[2].Gain_X = Compare_Cross[2].Gain_X; + IQ_Pont[2].Phase_Y = Compare_Cross[2].Phase_Y; + IQ_Pont[2].Value = Compare_Cross[2].Value; + } + else //(0,0) or x-direction + { + *X_Direct = (UINT8) 1; + IQ_Pont[0].Gain_X = Compare_Cross[0].Gain_X; + IQ_Pont[0].Phase_Y = Compare_Cross[0].Phase_Y; + IQ_Pont[0].Value = Compare_Cross[0].Value; + + IQ_Pont[1].Gain_X = Compare_Cross[3].Gain_X; + IQ_Pont[1].Phase_Y = Compare_Cross[3].Phase_Y; + IQ_Pont[1].Value = Compare_Cross[3].Value; + + IQ_Pont[2].Gain_X = Compare_Cross[4].Gain_X; + IQ_Pont[2].Phase_Y = Compare_Cross[4].Phase_Y; + IQ_Pont[2].Value = Compare_Cross[4].Value; + } + return RT_Success; +} + +//----------------------------------------------------------------------------------------// +// purpose: search surrounding points from previous point +// try (x-1), (x), (x+1) columns, and find min IMR result point +// input: IQ_Pont: previous point data(IMR Gain, Phase, ADC Result, RefRreq) +// will be updated to final best point +// output: TRUE or FALSE +//----------------------------------------------------------------------------------------// +R828_ErrCode R828_F_IMR(void *pTuner, R828_SectType* IQ_Pont) +{ + R828_SectType Compare_IQ[3]; + R828_SectType Compare_Bet[3]; + UINT8 VGA_Count; + UINT16 VGA_Read; + + VGA_Count = 0; + VGA_Read = 0; + + //VGA + for(VGA_Count = 12;VGA_Count < 16;VGA_Count ++) + { + R828_I2C.RegAddr = 0x0C; + R828_I2C.Data = (R828_Arry[7] & 0xF0) + VGA_Count; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_Delay_MS(pTuner, 10); + + if(R828_Muti_Read(pTuner, 0x01, &VGA_Read) != RT_Success) + return RT_Fail; + + if(VGA_Read > 40*4) + break; + } + + //Try X-1 column and save min result to Compare_Bet[0] + if((IQ_Pont->Gain_X & 0x1F) == 0x00) + { + Compare_IQ[0].Gain_X = ((IQ_Pont->Gain_X) & 0xDF) + 1; //Q-path, Gain=1 + } + else + Compare_IQ[0].Gain_X = IQ_Pont->Gain_X - 1; //left point + Compare_IQ[0].Phase_Y = IQ_Pont->Phase_Y; + + if(R828_IQ_Tree(pTuner, Compare_IQ[0].Gain_X, Compare_IQ[0].Phase_Y, 0x08, &Compare_IQ[0]) != RT_Success) // y-direction + return RT_Fail; + + if(R828_CompreCor(&Compare_IQ[0]) != RT_Success) + return RT_Fail; + + Compare_Bet[0].Gain_X = Compare_IQ[0].Gain_X; + Compare_Bet[0].Phase_Y = Compare_IQ[0].Phase_Y; + Compare_Bet[0].Value = Compare_IQ[0].Value; + + //Try X column and save min result to Compare_Bet[1] + Compare_IQ[0].Gain_X = IQ_Pont->Gain_X; + Compare_IQ[0].Phase_Y = IQ_Pont->Phase_Y; + + if(R828_IQ_Tree(pTuner, Compare_IQ[0].Gain_X, Compare_IQ[0].Phase_Y, 0x08, &Compare_IQ[0]) != RT_Success) + return RT_Fail; + + if(R828_CompreCor(&Compare_IQ[0]) != RT_Success) + return RT_Fail; + + Compare_Bet[1].Gain_X = Compare_IQ[0].Gain_X; + Compare_Bet[1].Phase_Y = Compare_IQ[0].Phase_Y; + Compare_Bet[1].Value = Compare_IQ[0].Value; + + //Try X+1 column and save min result to Compare_Bet[2] + if((IQ_Pont->Gain_X & 0x1F) == 0x00) + Compare_IQ[0].Gain_X = ((IQ_Pont->Gain_X) | 0x20) + 1; //I-path, Gain=1 + else + Compare_IQ[0].Gain_X = IQ_Pont->Gain_X + 1; + Compare_IQ[0].Phase_Y = IQ_Pont->Phase_Y; + + if(R828_IQ_Tree(pTuner, Compare_IQ[0].Gain_X, Compare_IQ[0].Phase_Y, 0x08, &Compare_IQ[0]) != RT_Success) + return RT_Fail; + + if(R828_CompreCor(&Compare_IQ[0]) != RT_Success) + return RT_Fail; + + Compare_Bet[2].Gain_X = Compare_IQ[0].Gain_X; + Compare_Bet[2].Phase_Y = Compare_IQ[0].Phase_Y; + Compare_Bet[2].Value = Compare_IQ[0].Value; + + if(R828_CompreCor(&Compare_Bet[0]) != RT_Success) + return RT_Fail; + + *IQ_Pont = Compare_Bet[0]; + + return RT_Success; +} + +R828_ErrCode R828_GPIO(void *pTuner, R828_GPIO_Type R828_GPIO_Conrl) +{ + if(R828_GPIO_Conrl == HI_SIG) + R828_Arry[10] |= 0x01; + else + R828_Arry[10] &= 0xFE; + + R828_I2C.RegAddr = 0x0F; + R828_I2C.Data = R828_Arry[10]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + return RT_Success; +} + +R828_ErrCode R828_SetStandard(void *pTuner, R828_Standard_Type RT_Standard) +{ + + // Used Normal Arry to Modify + UINT8 ArrayNum; + + ArrayNum = 27; + for(ArrayNum=0;ArrayNum<27;ArrayNum++) + { + R828_Arry[ArrayNum] = R828_iniArry[ArrayNum]; + } + + + // Record Init Flag & Xtal_check Result + if(R828_IMR_done_flag == TRUE) + R828_Arry[7] = (R828_Arry[7] & 0xF0) | 0x01 | (Xtal_cap_sel<<1); + else + R828_Arry[7] = (R828_Arry[7] & 0xF0) | 0x00; + + R828_I2C.RegAddr = 0x0C; + R828_I2C.Data = R828_Arry[7]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + // Record version + R828_I2C.RegAddr = 0x13; + R828_Arry[14] = (R828_Arry[14] & 0xC0) | VER_NUM; + R828_I2C.Data = R828_Arry[14]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + + //for LT Gain test + if(RT_Standard > SECAM_L1) + { + R828_I2C.RegAddr = 0x1D; //[5:3] LNA TOP + R828_I2C.Data = (R828_Arry[24] & 0xC7) | 0x00; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //R828_Delay_MS(1); + } + + // Look Up System Dependent Table + Sys_Info1 = R828_Sys_Sel(RT_Standard); + R828_IF_khz = Sys_Info1.IF_KHz; + R828_CAL_LO_khz = Sys_Info1.FILT_CAL_LO; + + // Filter Calibration + if(R828_Fil_Cal_flag[RT_Standard] == FALSE) + { + // do filter calibration + if(R828_Filt_Cal(pTuner, Sys_Info1.FILT_CAL_LO,Sys_Info1.BW) != RT_Success) + return RT_Fail; + + + // read and set filter code + R828_I2C_Len.RegAddr = 0x00; + R828_I2C_Len.Len = 5; + if(I2C_Read_Len(pTuner, &R828_I2C_Len) != RT_Success) + return RT_Fail; + + R828_Fil_Cal_code[RT_Standard] = R828_I2C_Len.Data[4] & 0x0F; + + //Filter Cali. Protection + if(R828_Fil_Cal_code[RT_Standard]==0 || R828_Fil_Cal_code[RT_Standard]==15) + { + if(R828_Filt_Cal(pTuner, Sys_Info1.FILT_CAL_LO,Sys_Info1.BW) != RT_Success) + return RT_Fail; + + R828_I2C_Len.RegAddr = 0x00; + R828_I2C_Len.Len = 5; + if(I2C_Read_Len(pTuner, &R828_I2C_Len) != RT_Success) + return RT_Fail; + + R828_Fil_Cal_code[RT_Standard] = R828_I2C_Len.Data[4] & 0x0F; + + if(R828_Fil_Cal_code[RT_Standard]==15) //narrowest + R828_Fil_Cal_code[RT_Standard] = 0; + + } + R828_Fil_Cal_flag[RT_Standard] = TRUE; + } + + // Set Filter Q + R828_Arry[5] = (R828_Arry[5] & 0xE0) | Sys_Info1.FILT_Q | R828_Fil_Cal_code[RT_Standard]; + R828_I2C.RegAddr = 0x0A; + R828_I2C.Data = R828_Arry[5]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + // Set BW, Filter_gain, & HP corner + R828_Arry[6]= (R828_Arry[6] & 0x10) | Sys_Info1.HP_COR; + R828_I2C.RegAddr = 0x0B; + R828_I2C.Data = R828_Arry[6]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + // Set Img_R + R828_Arry[2] = (R828_Arry[2] & 0x7F) | Sys_Info1.IMG_R; + R828_I2C.RegAddr = 0x07; + R828_I2C.Data = R828_Arry[2]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + + // Set filt_3dB, V6MHz + R828_Arry[1] = (R828_Arry[1] & 0xCF) | Sys_Info1.FILT_GAIN; + R828_I2C.RegAddr = 0x06; + R828_I2C.Data = R828_Arry[1]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //channel filter extension + R828_Arry[25] = (R828_Arry[25] & 0x9F) | Sys_Info1.EXT_ENABLE; + R828_I2C.RegAddr = 0x1E; + R828_I2C.Data = R828_Arry[25]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + + //Loop through + R828_Arry[0] = (R828_Arry[0] & 0x7F) | Sys_Info1.LOOP_THROUGH; + R828_I2C.RegAddr = 0x05; + R828_I2C.Data = R828_Arry[0]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //Loop through attenuation + R828_Arry[26] = (R828_Arry[26] & 0x7F) | Sys_Info1.LT_ATT; + R828_I2C.RegAddr = 0x1F; + R828_I2C.Data = R828_Arry[26]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //filter extention widest + R828_Arry[10] = (R828_Arry[10] & 0x7F) | Sys_Info1.FLT_EXT_WIDEST; + R828_I2C.RegAddr = 0x0F; + R828_I2C.Data = R828_Arry[10]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //RF poly filter current + R828_Arry[20] = (R828_Arry[20] & 0x9F) | Sys_Info1.POLYFIL_CUR; + R828_I2C.RegAddr = 0x19; + R828_I2C.Data = R828_Arry[20]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + return RT_Success; +} + +R828_ErrCode R828_Filt_Cal(void *pTuner, UINT32 Cal_Freq,BW_Type R828_BW) +{ + //set in Sys_sel() + /* + if(R828_BW == BW_8M) + { + //set filt_cap = no cap + R828_I2C.RegAddr = 0x0B; //reg11 + R828_Arry[6] &= 0x9F; //filt_cap = no cap + R828_I2C.Data = R828_Arry[6]; + } + else if(R828_BW == BW_7M) + { + //set filt_cap = +1 cap + R828_I2C.RegAddr = 0x0B; //reg11 + R828_Arry[6] &= 0x9F; //filt_cap = no cap + R828_Arry[6] |= 0x20; //filt_cap = +1 cap + R828_I2C.Data = R828_Arry[6]; + } + else if(R828_BW == BW_6M) + { + //set filt_cap = +2 cap + R828_I2C.RegAddr = 0x0B; //reg11 + R828_Arry[6] &= 0x9F; //filt_cap = no cap + R828_Arry[6] |= 0x60; //filt_cap = +2 cap + R828_I2C.Data = R828_Arry[6]; + } + + + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; +*/ + + // Set filt_cap + R828_I2C.RegAddr = 0x0B; + R828_Arry[6]= (R828_Arry[6] & 0x9F) | (Sys_Info1.HP_COR & 0x60); + R828_I2C.Data = R828_Arry[6]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + + //set cali clk =on + R828_I2C.RegAddr = 0x0F; //reg15 + R828_Arry[10] |= 0x04; //calibration clk=on + R828_I2C.Data = R828_Arry[10]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //X'tal cap 0pF for PLL + R828_I2C.RegAddr = 0x10; + R828_Arry[11] = (R828_Arry[11] & 0xFC) | 0x00; + R828_I2C.Data = R828_Arry[11]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //Set PLL Freq = Filter Cali Freq + if(R828_PLL(pTuner, Cal_Freq * 1000, STD_SIZE) != RT_Success) + return RT_Fail; + + //Start Trigger + R828_I2C.RegAddr = 0x0B; //reg11 + R828_Arry[6] |= 0x10; //vstart=1 + R828_I2C.Data = R828_Arry[6]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //delay 0.5ms + R828_Delay_MS(pTuner, 1); + + //Stop Trigger + R828_I2C.RegAddr = 0x0B; + R828_Arry[6] &= 0xEF; //vstart=0 + R828_I2C.Data = R828_Arry[6]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + + //set cali clk =off + R828_I2C.RegAddr = 0x0F; //reg15 + R828_Arry[10] &= 0xFB; //calibration clk=off + R828_I2C.Data = R828_Arry[10]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + return RT_Success; + +} + +R828_ErrCode R828_SetFrequency(void *pTuner, R828_Set_Info R828_INFO, R828_SetFreq_Type R828_SetFreqMode) +{ + UINT32 LO_Hz; + +#if 0 + // Check Input Frequency Range + if((R828_INFO.RF_KHz<40000) || (R828_INFO.RF_KHz>900000)) + { + return RT_Fail; + } +#endif + + if(R828_INFO.R828_Standard==SECAM_L1) + LO_Hz = R828_INFO.RF_Hz - (Sys_Info1.IF_KHz * 1000); + else + LO_Hz = R828_INFO.RF_Hz + (Sys_Info1.IF_KHz * 1000); + + //Set MUX dependent var. Must do before PLL( ) + if(R828_MUX(pTuner, LO_Hz/1000) != RT_Success) + return RT_Fail; + + //Set PLL + if(R828_PLL(pTuner, LO_Hz, R828_INFO.R828_Standard) != RT_Success) + return RT_Fail; + + R828_IMR_point_num = Freq_Info1.IMR_MEM; + + + //Set TOP,VTH,VTL + SysFreq_Info1 = R828_SysFreq_Sel(R828_INFO.R828_Standard, R828_INFO.RF_KHz); + + + // write DectBW, pre_dect_TOP + R828_Arry[24] = (R828_Arry[24] & 0x38) | (SysFreq_Info1.LNA_TOP & 0xC7); + R828_I2C.RegAddr = 0x1D; + R828_I2C.Data = R828_Arry[24]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + // write MIXER TOP, TOP+-1 + R828_Arry[23] = (R828_Arry[23] & 0x07) | (SysFreq_Info1.MIXER_TOP & 0xF8); + R828_I2C.RegAddr = 0x1C; + R828_I2C.Data = R828_Arry[23]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + + // write LNA VTHL + R828_Arry[8] = (R828_Arry[8] & 0x00) | SysFreq_Info1.LNA_VTH_L; + R828_I2C.RegAddr = 0x0D; + R828_I2C.Data = R828_Arry[8]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + // write MIXER VTHL + R828_Arry[9] = (R828_Arry[9] & 0x00) | SysFreq_Info1.MIXER_VTH_L; + R828_I2C.RegAddr = 0x0E; + R828_I2C.Data = R828_Arry[9]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + // Cable-1/Air in + R828_I2C.RegAddr = 0x05; + R828_Arry[0] &= 0x9F; + R828_Arry[0] |= SysFreq_Info1.AIR_CABLE1_IN; + R828_I2C.Data = R828_Arry[0]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + // Cable-2 in + R828_I2C.RegAddr = 0x06; + R828_Arry[1] &= 0xF7; + R828_Arry[1] |= SysFreq_Info1.CABLE2_IN; + R828_I2C.Data = R828_Arry[1]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //CP current + R828_I2C.RegAddr = 0x11; + R828_Arry[12] &= 0xC7; + R828_Arry[12] |= SysFreq_Info1.CP_CUR; + R828_I2C.Data = R828_Arry[12]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //div buffer current + R828_I2C.RegAddr = 0x17; + R828_Arry[18] &= 0xCF; + R828_Arry[18] |= SysFreq_Info1.DIV_BUF_CUR; + R828_I2C.Data = R828_Arry[18]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + // Set channel filter current + R828_I2C.RegAddr = 0x0A; + R828_Arry[5] = (R828_Arry[5] & 0x9F) | SysFreq_Info1.FILTER_CUR; + R828_I2C.Data = R828_Arry[5]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //Air-In only for Astrometa + R828_Arry[0] = (R828_Arry[0] & 0x9F) | 0x00; + R828_Arry[1] = (R828_Arry[1] & 0xF7) | 0x00; + + R828_I2C.RegAddr = 0x05; + R828_I2C.Data = R828_Arry[0]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_I2C.RegAddr = 0x06; + R828_I2C.Data = R828_Arry[1]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //Set LNA + if(R828_INFO.R828_Standard > SECAM_L1) + { + + if(R828_SetFreqMode==FAST_MODE) //FAST mode + { + //R828_Arry[24] = (R828_Arry[24] & 0xC7) | 0x20; //LNA TOP:4 + R828_Arry[24] = (R828_Arry[24] & 0xC7) | 0x00; //LNA TOP:lowest + R828_I2C.RegAddr = 0x1D; + R828_I2C.Data = R828_Arry[24]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_Arry[23] = (R828_Arry[23] & 0xFB); // 0: normal mode + R828_I2C.RegAddr = 0x1C; + R828_I2C.Data = R828_Arry[23]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_Arry[1] = (R828_Arry[1] & 0xBF); //0: PRE_DECT off + R828_I2C.RegAddr = 0x06; + R828_I2C.Data = R828_Arry[1]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //agc clk 250hz + R828_Arry[21] = (R828_Arry[21] & 0xCF) | 0x30; + R828_I2C.RegAddr = 0x1A; + R828_I2C.Data = R828_Arry[21]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + } + else //NORMAL mode + { + + R828_Arry[24] = (R828_Arry[24] & 0xC7) | 0x00; //LNA TOP:lowest + R828_I2C.RegAddr = 0x1D; + R828_I2C.Data = R828_Arry[24]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_Arry[23] = (R828_Arry[23] & 0xFB); // 0: normal mode + R828_I2C.RegAddr = 0x1C; + R828_I2C.Data = R828_Arry[23]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_Arry[1] = (R828_Arry[1] & 0xBF); //0: PRE_DECT off + R828_I2C.RegAddr = 0x06; + R828_I2C.Data = R828_Arry[1]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //agc clk 250hz + R828_Arry[21] = (R828_Arry[21] & 0xCF) | 0x30; //250hz + R828_I2C.RegAddr = 0x1A; + R828_I2C.Data = R828_Arry[21]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_Delay_MS(pTuner, 250); + + // PRE_DECT on + /* + R828_Arry[1] = (R828_Arry[1] & 0xBF) | SysFreq_Info1.PRE_DECT; + R828_I2C.RegAddr = 0x06; + R828_I2C.Data = R828_Arry[1]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + */ + // write LNA TOP = 3 + //R828_Arry[24] = (R828_Arry[24] & 0xC7) | (SysFreq_Info1.LNA_TOP & 0x38); + R828_Arry[24] = (R828_Arry[24] & 0xC7) | 0x18; //TOP=3 + R828_I2C.RegAddr = 0x1D; + R828_I2C.Data = R828_Arry[24]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + // write discharge mode + R828_Arry[23] = (R828_Arry[23] & 0xFB) | (SysFreq_Info1.MIXER_TOP & 0x04); + R828_I2C.RegAddr = 0x1C; + R828_I2C.Data = R828_Arry[23]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + // LNA discharge current + R828_Arry[25] = (R828_Arry[25] & 0xE0) | SysFreq_Info1.LNA_DISCHARGE; + R828_I2C.RegAddr = 0x1E; + R828_I2C.Data = R828_Arry[25]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //agc clk 60hz + R828_Arry[21] = (R828_Arry[21] & 0xCF) | 0x20; + R828_I2C.RegAddr = 0x1A; + R828_I2C.Data = R828_Arry[21]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + } + } + else + { + if(R828_SetFreqMode==NORMAL_MODE || R828_SetFreqMode==FAST_MODE) + { + /* + // PRE_DECT on + R828_Arry[1] = (R828_Arry[1] & 0xBF) | SysFreq_Info1.PRE_DECT; + R828_I2C.RegAddr = 0x06; + R828_I2C.Data = R828_Arry[1]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + */ + // PRE_DECT off + R828_Arry[1] = (R828_Arry[1] & 0xBF); //0: PRE_DECT off + R828_I2C.RegAddr = 0x06; + R828_I2C.Data = R828_Arry[1]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + // write LNA TOP + R828_Arry[24] = (R828_Arry[24] & 0xC7) | (SysFreq_Info1.LNA_TOP & 0x38); + R828_I2C.RegAddr = 0x1D; + R828_I2C.Data = R828_Arry[24]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + // write discharge mode + R828_Arry[23] = (R828_Arry[23] & 0xFB) | (SysFreq_Info1.MIXER_TOP & 0x04); + R828_I2C.RegAddr = 0x1C; + R828_I2C.Data = R828_Arry[23]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + // LNA discharge current + R828_Arry[25] = (R828_Arry[25] & 0xE0) | SysFreq_Info1.LNA_DISCHARGE; + R828_I2C.RegAddr = 0x1E; + R828_I2C.Data = R828_Arry[25]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + // agc clk 1Khz, external det1 cap 1u + R828_Arry[21] = (R828_Arry[21] & 0xCF) | 0x00; + R828_I2C.RegAddr = 0x1A; + R828_I2C.Data = R828_Arry[21]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_Arry[11] = (R828_Arry[11] & 0xFB) | 0x00; + R828_I2C.RegAddr = 0x10; + R828_I2C.Data = R828_Arry[11]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + } + } + + return RT_Success; + +} + +R828_ErrCode R828_Standby(void *pTuner, R828_LoopThrough_Type R828_LoopSwitch) +{ + if(R828_LoopSwitch == LOOP_THROUGH) + { + R828_I2C.RegAddr = 0x06; + R828_I2C.Data = 0xB1; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + R828_I2C.RegAddr = 0x05; + R828_I2C.Data = 0x03; + + + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + } + else + { + R828_I2C.RegAddr = 0x05; + R828_I2C.Data = 0xA3; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_I2C.RegAddr = 0x06; + R828_I2C.Data = 0xB1; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + } + + R828_I2C.RegAddr = 0x07; + R828_I2C.Data = 0x3A; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_I2C.RegAddr = 0x08; + R828_I2C.Data = 0x40; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_I2C.RegAddr = 0x09; + R828_I2C.Data = 0xC0; //polyfilter off + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_I2C.RegAddr = 0x0A; + R828_I2C.Data = 0x36; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_I2C.RegAddr = 0x0C; + R828_I2C.Data = 0x35; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_I2C.RegAddr = 0x0F; + R828_I2C.Data = 0x78; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_I2C.RegAddr = 0x11; + R828_I2C.Data = 0x03; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_I2C.RegAddr = 0x17; + R828_I2C.Data = 0xF4; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_I2C.RegAddr = 0x19; + R828_I2C.Data = 0x0C; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + + return RT_Success; +} + +R828_ErrCode R828_GetRfGain(void *pTuner, R828_RF_Gain_Info *pR828_rf_gain) +{ + + R828_I2C_Len.RegAddr = 0x00; + R828_I2C_Len.Len = 4; + if(I2C_Read_Len(pTuner, &R828_I2C_Len) != RT_Success) + return RT_Fail; + + pR828_rf_gain->RF_gain1 = (R828_I2C_Len.Data[3] & 0x0F); + pR828_rf_gain->RF_gain2 = ((R828_I2C_Len.Data[3] & 0xF0) >> 4); + pR828_rf_gain->RF_gain_comb = pR828_rf_gain->RF_gain1*2 + pR828_rf_gain->RF_gain2; + + return RT_Success; +} + + +/* measured with a Racal 6103E GSM test set at 928 MHz with -60 dBm + * input power, for raw results see: + * http://steve-m.de/projects/rtl-sdr/gain_measurement/r820t/ + */ + +#define VGA_BASE_GAIN -47 +static const int r820t_vga_gain_steps[] = { + 0, 26, 26, 30, 42, 35, 24, 13, 14, 32, 36, 34, 35, 37, 35, 36 +}; + +static const int r820t_lna_gain_steps[] = { + 0, 9, 13, 40, 38, 13, 31, 22, 26, 31, 26, 14, 19, 5, 35, 13 +}; + +static const int r820t_mixer_gain_steps[] = { + 0, 5, 10, 10, 19, 9, 10, 25, 17, 10, 8, 16, 13, 6, 3, -8 +}; + +R828_ErrCode R828_SetRfGain(void *pTuner, int gain) +{ + int i, total_gain = 0; + uint8_t mix_index = 0, lna_index = 0; + + for (i = 0; i < 15; i++) { + if (total_gain >= gain) + break; + + total_gain += r820t_lna_gain_steps[++lna_index]; + + if (total_gain >= gain) + break; + + total_gain += r820t_mixer_gain_steps[++mix_index]; + } + + /* set LNA gain */ + R828_I2C.RegAddr = 0x05; + R828_Arry[0] = (R828_Arry[0] & 0xF0) | lna_index; + R828_I2C.Data = R828_Arry[0]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + /* set Mixer gain */ + R828_I2C.RegAddr = 0x07; + R828_Arry[2] = (R828_Arry[2] & 0xF0) | mix_index; + R828_I2C.Data = R828_Arry[2]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + return RT_Success; +} + +R828_ErrCode R828_RfGainMode(void *pTuner, int manual) +{ + UINT8 MixerGain; + UINT8 LnaGain; + + MixerGain = 0; + LnaGain = 0; + + if (manual) { + //LNA auto off + R828_I2C.RegAddr = 0x05; + R828_Arry[0] = R828_Arry[0] | 0x10; + R828_I2C.Data = R828_Arry[0]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //Mixer auto off + R828_I2C.RegAddr = 0x07; + R828_Arry[2] = R828_Arry[2] & 0xEF; + R828_I2C.Data = R828_Arry[2]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + R828_I2C_Len.RegAddr = 0x00; + R828_I2C_Len.Len = 4; + if(I2C_Read_Len(pTuner, &R828_I2C_Len) != RT_Success) + return RT_Fail; + + /* set fixed VGA gain for now (16.3 dB) */ + R828_I2C.RegAddr = 0x0C; + R828_Arry[7] = (R828_Arry[7] & 0x60) | 0x08; + R828_I2C.Data = R828_Arry[7]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + + } else { + //LNA + R828_I2C.RegAddr = 0x05; + R828_Arry[0] = R828_Arry[0] & 0xEF; + R828_I2C.Data = R828_Arry[0]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + //Mixer + R828_I2C.RegAddr = 0x07; + R828_Arry[2] = R828_Arry[2] | 0x10; + R828_I2C.Data = R828_Arry[2]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + + /* set fixed VGA gain for now (26.5 dB) */ + R828_I2C.RegAddr = 0x0C; + R828_Arry[7] = (R828_Arry[7] & 0x60) | 0x0B; + R828_I2C.Data = R828_Arry[7]; + if(I2C_Write(pTuner, &R828_I2C) != RT_Success) + return RT_Fail; + } + + return RT_Success; +}