pax_global_header00006660000000000000000000000064122570332360014515gustar00rootroot0000000000000052 comment=d5dbefbd1b9f6fff4f44d96c4b1dd48e504904db yara-2.0.0/000077500000000000000000000000001225703323600124505ustar00rootroot00000000000000yara-2.0.0/AUTHORS000066400000000000000000000001241225703323600135150ustar00rootroot00000000000000 Victor M. Alvarez Mike Wiacek yara-2.0.0/COPYING000066400000000000000000000261351225703323600135120ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.yara-2.0.0/Makefile.am000066400000000000000000000006061225703323600145060ustar00rootroot00000000000000AM_CFLAGS=-O4 -Wall -I$(srcdir)/libyara # Build the library in the hand subdirectory first. SUBDIRS = libyara DIST_SUBDIRS = libyara ACLOCAL_AMFLAGS=-I m4 bin_PROGRAMS = yara yarac yara_SOURCES = threading.c yara.c yara_LDADD = libyara/.libs/libyara.a yarac_SOURCES = yarac.c yarac_LDADD = libyara/.libs/libyara.a # man page man1_MANS = yara.man EXTRA_DIST = $(man1_MANS) README.md yara-2.0.0/README.md000066400000000000000000000205451225703323600137350ustar00rootroot00000000000000## YARA in a nutshell YARA is a tool aimed at (but not limited to) helping malware researchers to identify and classify malware samples. With YARA you can create descriptions of malware families (or whatever you want to describe) based on textual or binary patterns. Each description, a.k.a rule, consists of a set of strings and a boolean expression which determine its logic. Let's see an example: ``` rule silent_banker : banker { meta: description = "This is just an example" thread_level = 3 in_the_wild = true strings: $a = {6A 40 68 00 30 00 00 6A 14 8D 91} $b = {8D 4D B0 2B C1 83 C0 27 99 6A 4E 59 F7 F9} $c = "UVODFRYSIHLNWPEJXQZAKCBGMT" condition: $a or $b or $c } ``` The above rule is telling YARA that any file containing one of the three strings must be reported as *silent_banker*. This is just a simple example, more complex and powerful rules can be created by using wild-cards, case-insensitive strings, regular expressions, special operators and many other features that you'll find explained in [YARA's documentation](https://googledrive.com/host/0BznOMqZ9f3VUek8yN3VvSGdhRFU/YARA-Manual.pdf). YARA is multi-platform, running on Windows, Linux and Mac OS X, and can be used through its command-line interface or from your own Python scripts with the yara-python extension. Python users can also use [yara-ctyles](https://github.com/mjdorma/yara-ctypes) by Michael Dorman. He has also written a multi-threaded command-line YARA scanner based on yara-ctypes that can exploit the benefits of current multi-core CPUs when scanning big file collections. If you are a Ruby user you can use [yara-ruby](https://github.com/SpiderLabs/yara-ruby), written by Eric Monti. ## What's new in YARA 2.0 YARA has experiencied an almost complete rewrite for version 2.0, as a result this new version has the following advantages over previous ones: * It's faster, [believe me](http://www.youtube.com/watch?v=ApAFU5ROo10), a LOT faster. With YARA 2.0 scanning speed is from 2X to 100X faster depending on your rules. The 100X speedup is only experienced with certain corner cases, but if you have a large and diverse set of rules you'll definitely notice the improvement. * Better multi-threading support. Previous versions of YARA were thread-safe up to a certain level. You could compile rules and scan multiple files simultaneously, provided that each thread was using its own set of compiled rules. In YARA 2.0 multiple threads can share the same compiled rules to scan multiple files at the same time. The new YARA's command-line scanner takes advance of that and is now multi-threaded, allowing to scan whole directories blazingly fast. * Rules can be saved to binary form. In the same way you would compile your program's source code to create an executable file, with YARA 2.0 you can compile your rules and save them into a binary file for later use. This way you can use pre-compiled rules without having to parse them again, or you can share rules with someone else without revealing the actual source code (but beware that each time you do that God kills a kitten). The drawsbacks for this rewrite are: * You can find some incompatibilities in regular expressions. YARA 2.0 replaced external libraries like PCRE or RE2 with its own regular expression engine. Most regular expression features are present in the new implementation, but a few ones like POSIX character classes and backreferences are missing. If you were using RE2 instead of PCRE with previous versions of YARA you won't miss backreferences, because RE2 don't support them neither. * The C API provided by libyara has changed. If you're a developer using this API you'll need to make some changes to your application in order to adapt it to YARA 2.0. But don't worry, it won't be too much work and the benefits worth the effort. Users of yara-python are not affected, the Python interface remains the same. ## Who's using YARA * [VirusTotal Intelligence](https://www.virustotal.com/intelligence/) * [jsunpack-n](http://jsunpack.jeek.org/) * [We Watch Your Website](http://www.wewatchyourwebsite.com/) * [FireEye, Inc.](http://www.fireeye.com) * [Fidelis XPS](http://www.fidelissecurity.com/network-security-appliance/Fidelis-XPS) * [RSA ECAT](http://www.emc.com/security/rsa-ecat.htm) * [CrowdStrike FMS](https://github.com/CrowdStrike/CrowdFMS) Are you using it too? Tell me! ## Releases ### 2.0.0 (26/12/2013) * Faster matching algorithm * Command-line scanner is now multi-threaded * Compiled rules can be saved to and loaded from a file * Added support for unbounded jumps * New libyara API ### 1.7.2 (02/12/2013) * BUGFIX: Regular expressions marked as both "wide" and "ascii" were treated as just "wide" * BUGFIX: Bug in "n of ()" operator * BUGFIX: Bug in get_process_memory could cause infinite loop ### 1.7.1 (25/11/2013) * BUGFIX: Fix SIGABORT in ARM * BUGFIX: Failing to detect one-byte strings at the end of a file. * BUGFIX: Strings being incorrectly printed when marked both as wide and ascii * BUGFIX: Stack overflow while following circular symlinks * BUGFIX: Expression "/re/ matches var" always matching if "var" was an empty string * BUGFIX: Strings marked as "fullword" were incorrectly matching in some cases. ### 1.7 (29/03/2013) * Faster compilation * Added suport for modulus (%) and bitwise xor (|) operators * Better hashing of regular expressions * BUGFIX: yara-python segfault when using dir() on Rules and Match classes * BUGFIX: Integer overflow causing infinite loop * BUGFIX: Handling strings containing \x00 characters correctly * BUGFIX: Regular expressions not matching at the end of the file when compiled with RE2 * BUGFIX: Memory leaks * BUGFIX: File handle leaks ### 1.6 (04/08/2011) * Added support for bitwise operators * Added support for multi-line hex strings * Scan speed improvement for regular expressions (with PCRE) * yara-python ported to Python 3.x * yara-python support for 64-bits Python under Windows * BUGFIX: Buffer overflow in error printing ### 1.5 (22/03/2011) * Added -l parameter to abort scanning after a number of matches * Added support for scanning processes memory * Entrypoint now works with ELF as well as PE files * Added support for linking with the faster RE2 library (http://code.google.com/p/re2/) instead of PCRE * Implemented index operator to access offsets where string was found * Implemented new operator "for < quantifier > < variable > in < set or range > : (< expression >) " * BUGFIX: Memory leaks in yara-python * BUGFIX: yara.compile namespaces not working with filesources ### 1.4 (13/05/2010) * Added external variables * Scan speed improvements * Added fast scan mode * BUGFIX: crash in 64-bits Windows ### 1.3 (26/10/2009) * Added a C-like "include" directive * Added support for multi-sources compilation in yara-python * Added support for metadata declaration in rules * BUGFIX: Incorrect handling of single-line comments at the end of the file * BUGFIX: Integer underflow when scanning files of size <= 2 bytes ### 1.2.1 (14/04/2009) * libyara: added support for compiling rules directly from memory * libyara: interface refactored * libyara: is thread-safe now * BUGFIX: Invoking pcre_compile with non-terminated string * BUGFIX: Underscore not recognized in string identifiers * BUGFIX: Memory leak * BUGFIX: Access violation on xxcompare functions ### 1.2 (13/01/2009) * Added support for global rules * Added support for declaring alternative sub-strings in hex strings * Added support for anonymous strings * Added support for intXX and uintXX functions * Operator "of" was enhanced * Implemented new operator "for..of" * "widechar" is now "wide" and can be used in conjuntion with "ascii" * Improved syntax error reporting in yara-python * "compile" method in yara-python was enhanced * "matchfile" method in yara-python was substituted by "match" * Some performance improvements * BUGFIX: Wrong behavior of escaped characters in regular expressions * BUGFIX: Fatal error in yara-python when invoking matchfile with invalid path twice * BUGFIX: Wrong precedence of OR and AND operators * BUGFIX: Access violation when scanning MZ files with e_lfanew == -1 * BUGFIX: Incorrect handling of hex strings in lexer ### 1.1 (05/01/2009) * Added support for strings containing null (\x00) chars * Added syntactic construct "x of them" * Regular expressions syntax changed * Now regular expressions can begin with any character ### 1.0 (24/09/2008) * First release yara-2.0.0/bootstrap.sh000077500000000000000000000027241225703323600150310ustar00rootroot00000000000000#!/bin/sh die() { echo "$@" exit 1 } # Try to locate a program by using which, and verify that the file is an # executable locate_binary() { for f in $@ do file=`which $f 2>/dev/null | grep -v '^no '` if test -n "$file" -a -x "$file"; then echo $file return 0 fi done echo "" return 1 } autogen() { echo "libtoolize..." if test x$LIBTOOLIZE = x; then LIBTOOLIZE=`locate_binary libtoolize glibtoolize` if test x$LIBTOOLIZE = x; then die "Did not find a supported aclocal" fi fi $LIBTOOLIZE --force --quiet || exit 1 echo "aclocal..." if test x$ACLOCAL = x; then ACLOCAL=`locate_binary aclocal-1.11 aclocal-1.10 aclocal-1.9 aclocal19 aclocal-1.7 aclocal17 aclocal-1.5 aclocal15 aclocal` if test x$ACLOCAL = x; then die "Did not find a supported aclocal" fi fi $ACLOCAL || exit 1 echo "autoheader..." AUTOHEADER=${AUTOHEADER:-autoheader} $AUTOHEADER || exit 1 echo "automake..." if test x$AUTOMAKE = x; then AUTOMAKE=`locate_binary automake-1.14 automake-1.3 automake-1.12 automake-1.11 automake-1.10 automake-1.9 automake-1.7 automake` if test x$AUTOMAKE = x; then die "Did not find a supported automake" fi fi $AUTOMAKE --foreign --add-missing || $AUTOMAKE --gnu --add-missing || exit 1 echo "autoconf..." AUTOCONF=${AUTOCONF:-autoconf} $AUTOCONF || exit 1 } echo "== bootstraping yara" autogen echo "== bootstraping libyara" cd libyara autogen cd ..yara-2.0.0/build.sh000066400000000000000000000000511225703323600140770ustar00rootroot00000000000000#!/bin/sh ./bootstrap.sh ./configure makeyara-2.0.0/config.h000066400000000000000000000034351225703323600140730ustar00rootroot00000000000000/* config.h. Generated from config.h.in by configure. */ /* config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define to 1 if you have the `pthread' library (-lpthread). */ #define HAVE_LIBPTHREAD 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #define LT_OBJDIR ".libs/" /* Name of package */ #define PACKAGE "yara" /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "vmalvarez@virustotal.com" /* Define to the full name of this package. */ #define PACKAGE_NAME "yara" /* Define to the full name and version of this package. */ #define PACKAGE_STRING "yara 2.0" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "yara" /* Define to the version of this package. */ #define PACKAGE_VERSION "2.0" /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Version number of package */ #define VERSION "2.0" yara-2.0.0/configure.ac000066400000000000000000000013201225703323600147320ustar00rootroot00000000000000AC_INIT([yara], [2.0], [vmalvarez@virustotal.com]) ${CFLAGS=""} # automake 1.12 seems to require AM_PROG_AR, but automake 1.11 doesn't # recognize it m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) LT_INIT AM_INIT_AUTOMAKE([-Wall -Werror foreign]) AC_PROG_CC AC_PROG_LIBTOOL AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([Makefile]) AC_CONFIG_SUBDIRS([libyara]) AC_CHECK_LIB(pthread, pthread_create) AC_ARG_ENABLE([dmalloc], [AS_HELP_STRING([--enable-dmalloc], [enable dmalloc to debug heap-related issues])], [if test x$enableval = xyes; then AC_CHECK_LIB(dmalloc, dmalloc_malloc,, AC_MSG_ERROR(please install dmalloc library)) AC_DEFINE([DMALLOC], [], [enable dmalloc]) fi]) AC_OUTPUT yara-2.0.0/doc/000077500000000000000000000000001225703323600132155ustar00rootroot00000000000000yara-2.0.0/doc/YARA User's Manual.pdf000066400000000000000000007701221225703323600170040ustar00rootroot00000000000000%PDF-1.3 % 4 0 obj << /Length 5 0 R /Filter /FlateDecode >> stream xVn0)HH"8TV%-E1xI^{iRVZ;|3 L0ൄq 'nL#;T>tϾYҁ;0 [ ̟9v +=4VDpɚwyVX@Le.LϲӊE7EbǺ >CnV2F;h; `@R0nFɾ5$Z`Ƒ4-y,b*1J;c 1g9:Kd.Qo2 / 5wb 3z+e:aCs|UxO~҄5DıQ1O*yFTŽU̎/ RX'9t nAoӢ[U{OQy1oOc@S,T{+:%EiW;2ݦ}V!=VƐ4"*žntWZ-~=> c9br>I0e-ڈEV.pLM?SP0); b$唧ktWԸ[l(*ދ`Brxocvu}xNdCFa8x5 $g\k endstream endobj 5 0 obj 719 endobj 2 0 obj << /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 595 842] /Annots 15 0 R >> endobj 6 0 obj << /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /ColorSpace << /Cs1 7 0 R /Cs2 12 0 R >> /Font << /TT3 10 0 R /TT4 11 0 R /TT1 8 0 R /TT2 9 0 R >> /XObject << /Im1 13 0 R >> >> endobj 15 0 obj [ 16 0 R ] endobj 13 0 obj << /Length 14 0 R /Type /XObject /Subtype /Image /Width 212 /Height 71 /Interpolate true /ColorSpace 17 0 R /Intent /Perceptual /SMask 18 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x{lˏU@15j#>H|%&h>& Qh FL|P黅bkBhK-q;;s۰s|vfgvvo(y1*c4Wo֭ N,]ZW5mZe(/((F+R_W}'6okmr8{HeHD:y")jbjކk_<޲aHK:ih7:Ŋ|+%=R|yLHBiiŜ9DY@!p}p7ߔϜS goL7xKtֺ/޷e/ibr$ҺeK !Ig%s+-(]b+5* RS^8{LFGFϞ?ymc3_]>kV%ًDJ/TUjG[kU {87K9C-#{eT-Y{옞=4w^{lk-:Ė M5e komM&*) ?43F{pgo㹰9q0`Ϗ2Y ;+dfH^rfFі-knֳ%iJ=jx~(4ol -`7COԳG ƒY%dn^RF:cP(_(( [ S-0C<+3Be3{=_\g[j[|%ۅ8L\*dBU(.9GU%+˅˓fJjßp|ѳwKɻvhL[dBuCLHǥJh)Bia'K|H +a\8b 0sr0gKQ]NN{(7C7 pžg la=)ڴ 4-4޳'+i7XE3f={ ؓn^-" `l|d dP}U={w-{P  W!\Xx0RPY2帏Ag25bL0o#}}F__)؃P  H؃1 / 2[Q[7:PfY3ݭ^c8Y.aD^1!j=Gc^U2Т*Bg+̓Lů@@U ]NDgQ$/=zaI.gdeB{Ȟj{={#X2@Ԏ%Ɯ"tFIF6@*+/DZwŲ'j !:n,aBŅ缎%_B"hڰc׮N#x8;{x|%hTg4Y T|!~_¢Qu?W سP6jI=b=u׮5tzJ*BIi46FP%L{ꥳA $k ,*}Ǐ[RYFOcc˦M ?͉;\w2s1|K]:g-UCtƹXS({ՑKA};)/:51jcXAz=gk| L(b7Yi8 P ,^<Fأ~e2簇 t]vX)USsqড়FIh2Z̽axc-,L9m1=G3_s 89E= VC9J``^oaBo]w%S=J(f9{`@/#fS>aCCO?::<O>;p5e9{ր/ L3\Y<-*XZ1:^fLo޸$kG-:cA8O!+2?Gn1tϱ '{!l粗|3uӧcH=驣'? ~DRn`{wH&J0A({HCظ8`>;+F/wٲ~ӟ #'aA,Vz?d&8UChGN@FCz'lF t^"c5#=q T)glHC|gi L- L=L~?qS.!(=id*C؃q%U331=|haD|^H=n]9P*BW+׵Rrj4jԋ3gCXNjIIN @a pӳgE +>:kqF,)5yf@8p%{=xXgO|Ae.Mϥ U3g1U,d)o̙X2ΗϪ8? {B>6z8qQӗ尗{I{%ho0{[#{p <Ӽ^׸|iN-{(/Co}`)~vz^/L{]Cy~ SN8cLT\:Ǎ=<cN;{ÞҖFd@tg2g3O=Hsh`ZY*ɱӥ?dF cQ()IjI2MS̢ gܲ%g 1 s6^mLrbol+g4ۋGQTP0H3g(N*]_,Զ2UK]\tݥQs|(#NntGRg)uʙL==YOq'9[IDrM6+1渀=1\ AG0A'bHj0-p׶m[x!7tr|`||/Q 8G8H:"Aެ+HˡЮpSkq[(Phw(W}O˼񾶶3%#6ku;*_A:)db" endstream endobj 14 0 obj 3928 endobj 18 0 obj << /Length 19 0 R /Type /XObject /Subtype /Image /Width 212 /Height 71 /ColorSpace /DeviceGray /Interpolate true /BitsPerComponent 8 /Filter /FlateDecode >> stream x{lEǧwXJX"/AKC HCFh A"E!h- -FhFJZy@BHKWێβwvf~~adfJEK2촡~ϯU ?eh1kUkZ w3'gX<;ON{0?6OΓ^yy^P`:y4|Q"kl\Z:B4N)Yc] {8ΘgeZ8׭24l{W*y O%1MrWh| vu"{BEr 7'@&@ypQqƄ_iu5L4ig~_s4eh,>v3/V1lX'Orl%ߺPj`L>U3Y#ӋLj-L3)ze-SϊpM=Qck)v~UiqH4gT<=>4ƿAЕf=&0ޒ;2)/Ŕ_p \0^=~F&ۉ0?('4 >v6)Lh[V1ӶHm"azH񴶊ipE;-,H'Gm>a[0cuyp[/p7+,J.bDp]iȐp 6~j|OY&8> stream xwTSϽ7" %z ;HQIP&vDF)VdTG"cE b PQDE݌k 5ޚYg}׺PtX4X\XffGD=HƳ.d,P&s"7C$ E6<~&S2)212 "įl+ɘ&Y4Pޚ%ᣌ\%g|eTI(L0_&l2E9r9hxgIbטifSb1+MxL 0oE%YmhYh~S=zU&ϞAYl/$ZUm@O ޜl^ ' lsk.+7oʿ9V;?#I3eE妧KD d9i,UQ h A1vjpԁzN6p\W p G@ K0ށiABZyCAP8C@&*CP=#t] 4}a ٰ;GDxJ>,_“@FXDBX$!k"EHqaYbVabJ0՘cVL6f3bձX'?v 6-V``[a;p~\2n5׌ &x*sb|! ߏƿ' Zk! $l$T4QOt"y\b)AI&NI$R$)TIj"]&=&!:dGrY@^O$ _%?P(&OJEBN9J@y@yCR nXZOD}J}/G3ɭk{%Oחw_.'_!JQ@SVF=IEbbbb5Q%O@%!BӥyҸM:e0G7ӓ e%e[(R0`3R46i^)*n*|"fLUo՝mO0j&jajj.ϧwϝ_4갺zj=U45nɚ4ǴhZ ZZ^0Tf%9->ݫ=cXgN].[7A\SwBOK/X/_Q>QG[ `Aaac#*Z;8cq>[&IIMST`ϴ kh&45ǢYYF֠9<|y+ =X_,,S-,Y)YXmĚk]c}džjcΦ浭-v};]N"&1=xtv(}'{'IߝY) Σ -rqr.d._xpUەZM׍vm=+KGǔ ^WWbj>:>>>v}/avO8 FV> 2 u/_$\BCv< 5 ]s.,4&yUx~xw-bEDCĻHGKwFGEGME{EEKX,YFZ ={$vrK .3\rϮ_Yq*©L_wד+]eD]cIIIOAu_䩔)3ѩiB%a+]3='/40CiU@ёL(sYfLH$%Y jgGeQn~5f5wugv5k֮\۹Nw]m mHFˍenQQ`hBBQ-[lllfjۗ"^bO%ܒY}WwvwXbY^Ю]WVa[q`id2JjGէ{׿m>PkAma꺿g_DHGGu;776ƱqoC{P38!9 ҝˁ^r۽Ug9];}}_~imp㭎}]/}.{^=}^?z8hc' O*?f`ϳgC/Oϩ+FFGGόzˌㅿ)ѫ~wgbk?Jި9mdwi獵ޫ?cǑOO?w| x&mf endstream endobj 21 0 obj 2612 endobj 7 0 obj [ /ICCBased 20 0 R ] endobj 22 0 obj << /Length 23 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream xwTSϽ7" %z ;HQIP&vDF)VdTG"cE b PQDE݌k 5ޚYg}׺PtX4X\XffGD=HƳ.d,P&s"7C$ E6<~&S2)212 "įl+ɘ&Y4Pޚ%ᣌ\%g|eTI(L0_&l2E9r9hxgIbטifSb1+MxL 0oE%YmhYh~S=zU&ϞAYl/$ZUm@O ޜl^ ' lsk.+7oʿ9V;?#I3eE妧KD d9i,UQ h A1vjpԁzN6p\W p G@ K0ށiABZyCAP8C@&*CP=#t] 4}a ٰ;GDxJ>,_“@FXDBX$!k"EHqaYbVabJ0՘cVL6f3bձX'?v 6-V``[a;p~\2n5׌ &x*sb|! ߏƿ' Zk! $l$T4QOt"y\b)AI&NI$R$)TIj"]&=&!:dGrY@^O$ _%?P(&OJEBN9J@y@yCR nXZOD}J}/G3ɭk{%Oחw_.'_!JQ@SVF=IEbbbb5Q%O@%!BӥyҸM:e0G7ӓ e%e[(R0`3R46i^)*n*|"fLUo՝mO0j&jajj.ϧwϝ_4갺zj=U45nɚ4ǴhZ ZZ^0Tf%9->ݫ=cXgN].[7A\SwBOK/X/_Q>QG[ `Aaac#*Z;8cq>[&IIMST`ϴ kh&45ǢYYF֠9<|y+ =X_,,S-,Y)YXmĚk]c}džjcΦ浭-v};]N"&1=xtv(}'{'IߝY) Σ -rqr.d._xpUەZM׍vm=+KGǔ ^WWbj>:>>>v}/avO8 FV> 2 u/_$\BCv< 5 ]s.,4&yUx~xw-bEDCĻHGKwFGEGME{EEKX,YFZ ={$vrK .3\rϮ_Yq*©L_wד+]eD]cIIIOAu_䩔)3ѩiB%a+]3='/40CiU@ёL(sYfLH$%Y jgGeQn~5f5wugv5k֮\۹Nw]m mHFˍenQQ`hBBQ-[lllfjۗ"^bO%ܒY}WwvwXbY^Ю]WVa[q`id2JjGէ{׿m>PkAma꺿g_DHGGu;776ƱqoC{P38!9 ҝˁ^r۽Ug9];}}_~imp㭎}]/}.{^=}^?z8hc' O*?f`ϳgC/Oϩ+FFGGόzˌㅿ)ѫ~wgbk?Jި9mdwi獵ޫ?cǑOO?w| x&mf endstream endobj 23 0 obj 2612 endobj 17 0 obj [ /ICCBased 22 0 R ] endobj 24 0 obj << /Length 25 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >> stream xWTS[@ W)#̀tDJ 6bH Ć.łeEE]l+kłŊe-tQPł W5rp矿,RH2v2+s|frh<W$e%&A )׿WBP^3_Pă\( @@h܄tr)Cl.kd`H2qKlnAHjb++E)!@ @xHC|_* q "?YT!/* qG05b(C%S _Kȱ8W3eBȓ=d gH!~.sRU+*N!6|I03yܘD!M fU*O$d9["'tA\!(R3raj4{@֗RrD(qB,C R`L2E2;˕E!H"J;A:P¿< ݀+Q.878ؐK r (2@"\-9W T|8g\"S{etrTRW0W!WڧNRZ%&8 GLHd>FIUGhb;aigӀ+Uu߉8!U (ZJޭj\fpJ$q&)-Vư\6EĻt`oU䋠 UzouIvw b}[aS9ح|NiU2}e=}h `oNR/DIws/yPeSfLIXɂ+W -2W( H(w%굤L|UҞ fj6()D{hQudT:lH ?W܍|y;8}2S> Dõ~f>O9!!?1oS,Rם@Ut ݅Cg |amqtMwGG|ǧ!"MeB+?Uɔa#D2iDh44S/T5th ƕeU!0ѽ`B&(s^s:s`GK aØrcC8Uźp5G$;#Nue!GQA$Q.`/^(-rr L bz¯q!xx  H$WR CO%M'UIuӰ^dc?Lry&y1y#y82yBQ\) "TPQvSQPz(o445444$;5j\x1,\MEfUD Rk ;ZZZZZIZ"Zkjz=Q[D{q[/h4#-EӖi'ihot:ΧϡWOu4utX:uJuu\u ֭mֽ;g穗WXo9^}~>_V 0;p|m z ɆN<* ; 􍼍ҍf12ƌ9b34aL4\1ym:4T`ZiǴ,,l!渹ytMGQ9b_-P d[---,ٖRu'-¬VY6Y>fa`1ČS h!['4r=wvv9vZٗAAơᵣcBCNNR]NwiΡӜk$?rK.Х+*rzٍ&qur/vaQq(QYj/mO}r^.^<kiF4{Mq> }Z}6emol)`lo}r;i`̶1m[B!!߇tڄrCkCمFXYO2:<0|V,Q>^mTnԮ{&x4):6zy %ǩ ̊9>~K,e:.fqw%@'aeDi?'j&{&%LIٙ*uliit3"2Vdt5~ 晢̦,JVzV] 'LX1$I3&l>Y<))I;sykxOaU>A`QNpΊܕ}Pa_.Z/z9u~B f$_rЪpFeB5-piXY]R4In)lW8+Qt> %.%JF0ɛZfS6{k֖쩳[Y0g.{yy~)g(9?c~s<ͮ z ſ}۱hu>T+W1/->wk$gIRߥI]_| +qcU媗>W]y ubMڸM-[~p}gؚ=,6,z#Ma6[n{74:Vo%o-p[3sd{׎wZ\ ݥշ{K?Fްe񞪽`b}z@O?m8hpi,i8$<Քt9%?o?lsёGGxq'Ni}rkNu=}Lԙmcg>xC|/4痃.6] ryWBq5ε 񝗯]yc⍮ķZz^yWn={=]]G#ܿoEY^}Q}OxDdw7> stream x[]sݶ}ǯRA 1t3r=L"%Hv,ǯ9 qI|H=X@7zW[}swFj3=5] W޾R?ˡ.z[VmzזmI/]sUvM]uV>~x~dF7mImkN_a_~K/]|;'/_JT|yelrK^-zg…*>]?W{17hʺm]]y+JЙ]ٌ a w]7]+]I0#LI+?ޔaafgL޵iNh` 7I!Ȭwx3 M$J yպJଃ) ;{aboj@]a@2ޟklB'qA&n+xsLzK;\3к:Q$eFiB<=GI=mZv;ɼQ&NVƹJ4ƸҴ] w@aMBYʈ^p> ^D`TH_t04&M{Iǔ'_;.B +55껻 GxD@@Qآd;+ohJ"ϫ]SN?i7p o? . 69I;HG[< 6u' "VJ:=s&PO$^kn@e?jN;)\;  ޶O?k~$b{Kj' nmBV:σ\@1\k?z$q8D 'xE`q&ℕBFFM3,fckI~_LmBhz_%H#:@:oN(.hyqvJjTޑQZΐC>8+ p%<p`tZ C~YÓ>`8-#D ]"&SU\dE1_?4ʓmp6;fjgZL;CH ȳk4+-aE=}/7?'_bwS67jKtV3-o3<8Mm_༄j :Be͇[TeB Ud+5)/a ] ,BߔvH}o:1&B*~NspTdPPDa@ P@O.v@nS2h/rSd㨡Y:PRv]p*)g&<s<:ȍ ˃cPbuʘu h2x,t6l1 ::y-zb: #uW\Y <.f.O{gvB/gӪ%H@  RhFjTA<7:#wٚm?zKpyZvPƛ+4*(9^~#D3eB;^uqKZ:0#BSdB>Κoy&\X"팰m}RR`a[/F2 pK2zr;uq] @1XKkMq%3<>u: a6V#K=F?hK9cƆz;^EHiU\Mj/]Ww r XpTI PԏZ8DTHQ`?vH2LQn`&9Ih7Ƶ-l+>1N!o2ftaF^!~};Wֲimݔ K˩ѡ qT2t==V6w(WL K 5<sN!;"^p6r|g44$C7U3͓JUTg),ǻORoY<'d:͈%r xK|U:k ?3σPiҙgD"?!J62/d/k##V$x)8]z#N+ }g{JJ>.!ȭ 9)X d(Yԫ1Ks1PXowY+8 1wrKLD/mqE64kK.na{:[+:3`=ÍER"qgr<\ʟ{s%ᛪd:]#lϱr>GbC&(l:9fe^R.ZvGP.G[Xn{Zǂ 6drtp*RZD59MWwA6o{9`4Ff3xv.rί>p!ϳ\mZ"%_K{/G򝣤Gڳk3"tFAl$x8F8ҟ^(w'? dEHBlJGØZ$@9ӿ$N`mv:\^kr~#3p+ *-xWr/$ .XMxtU&dXp̀;𞺺rhFj6S-)44M$-7 endstream endobj 28 0 obj 2693 endobj 26 0 obj << /Type /Page /Parent 3 0 R /Resources 29 0 R /Contents 27 0 R /MediaBox [0 0 595 842] >> endobj 29 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT5 30 0 R /TT6 31 0 R /TT3 10 0 R /TT4 11 0 R /TT1 8 0 R /TT2 9 0 R >> >> endobj 33 0 obj << /Length 34 0 R /Filter /FlateDecode >> stream x\ێ}h h[}ȃ$FAiwv-!ȯ[R$NMvϬafbթ ˿}>uM~xϾMY ÜwPHT%Z<ъhiYC9͡awU^!tWՕa:W^"[zxEvYKxGH|;yqI)cwKV'ȯ|E@ v r MO Pa.aX>Z}5Y)?")+/I0s(bJZt;f*j]^;Gn4Ѩf TrBAs]NVN߈bHPV9Ъi7+AQL ۉGVHv̬ v^cc|YJbU%UԍT~A`o.i. 0Hl(䢎Ly!xH_~VVEHA Qe3|1Mԣ̩DZR͑ށ}BF6PՎy -hǪALVZ&bly_T80'dm%6/VUMW<=)8(#q'aC-ARA19 UqYo(5`I tBg'D(IoaCXƣ?@ =3 y"=z7VӠ1[A0!aCޚE#e@#R1K:E)^RfۇJfP9Pؔ #a 0|sIHyc-R͖%4 bv!& IikYYRD(Y]>P~Bf1o ^9yH$D13 Ǥ\Sx  3蝌7XwH?`ep M I?Jit/YiYMk=4TqFfKT9UEIn %T50Evl1Ľ!Y˜h sC`V|$?[&H,@\ iJuE0e/to 1)f)>'^ ߱'XvW GE0?c}ȧ0E|\{y #(@)L"ҪUvXC+@!,M̋ކY<詬UetU Ұ xHs`;Еʰng My=+55 kh*|A>(]pؾRJZ%oVIV$hCKd f3e5Mj`<}+,9GRÊMD%܃9rxM߰F$8 ,-S11nΒ=s{cv&h_ꋿ)oZtB,2(:H㉀% Sؖ[J,`R/h~fFt[vU~Mlحk5HQꉂܝ .%WXIL& #4HqYEX Q?pK7yaʚ%ӂv|y/K0J0]^6Z!d ڢGra#h-82 ZbJ'TvZq|P^VReLQ8M;JA+\0ᄶ "ٟ8 0[,v)ݮ(3(bMp D?\I~QS-s9SuC_:W3#A򑸖@F3H7S9UI",+/^~qO!Z`фɪͽo]9!GV;ڧDǔI!hB3JikۊTLJݏV2l4V}hWNd r*/_`)5MC6TN]7r׏i5ȝd'!<>w7R[]z`?R$‚e[Mm5:=}TdjrH+|x<-|ju?]+duabK[4~8LuIu!m{-,SMj>EOC ƚxc RkZ)$ ~iU]iIDl|}?{77ڰTD[Q8h,#hE\W!ޗmLk%lyY %'mڞn/(qdJv!;)'fp3諹,wE"lN˫\g.jpM%oUs T1K7wwLk:'BΚB]wwonnXuH^ts6LYjD"T3u̐[s y!zԙHRiZE@ ęЏS7\$ ~:DTE6ҫq*?@Q.Q/ZM(3]Ki2|_ a4j)uGz JH]?# 57t"Mvv j´(%mzҖ~acSEAeaoķH[?`ۇXRLdtTkr +.äk̊3K~L[k¼>x(ΐ @I{5^ݣ(mSYBx͊x/w({t((,f9ةA:+UuVw3(Oejxm?%-| xy a§ /&Ce@RD!a(M}*]R#VP&aE *s5Em+̂~qyz8B?pa?EQO؆\?S3S8>)ܙoprF.kSzng\T/!d 0Ĵ1eZ)ޫg=ىO7{^J^&r5+#c.{t#/"5֏)~y #{} F@", '~_ J R_9\bsĘKgAV9sQ5u }/>~1@J_6`0"8)@JH_Q4Z'ITJd-Y܋9(H]( F"r U߁v脡ƃK1˘ĉ*+բHM9Try"_?LEM5Ɖk:4*W-JTi*]_kIzpew?3;ho;&hHY4е)J/Sw!z1uT eKa.ܺ>;I)d[ vRm뗷&ݘMBv IqS&: >?krc/c=xd endstream endobj 34 0 obj 4425 endobj 32 0 obj << /Type /Page /Parent 3 0 R /Resources 35 0 R /Contents 33 0 R /MediaBox [0 0 595 842] >> endobj 35 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 12 0 R >> /Font << /TT8 37 0 R /TT9 38 0 R /TT3 10 0 R /TT4 11 0 R /TT7 36 0 R /TT1 8 0 R /TT2 9 0 R >> >> endobj 40 0 obj << /Length 41 0 R /Filter /FlateDecode >> stream x\mܶ_"v@>$iڦ@?$("w97_o鐜yf(QZ"9!?OwU7}űqkz=݅݅wk*WU۶aV5QY)պ_떘O 550n>ro}ru兽zm+/vA3/wg瑱oK>t7ĺZƭۡWQXCG=2jۮQjv"^ɋ#۹I;TGFV9Elլe:>+%$:7Ѷgak*QNڦһxe|*< gdې:\njpgQWu]75pKm6?zgAIƿ#ɮ~(9Qt ߐu;\Wm(|'`lwwbwH1Tz( 73@+dW+~i qq8w!7buѢx"(`8E Nh|w^A@| "0rkBPE;x{(P-0r}@ &zHaG(Jl%:S>(x)V//qH-|^&t -GCՋ|c[c%1o399Le&|P@H {,.s͒Uf +YTA4ա)Ӝ7HxX,NL.uM 4 YHhbrg, ~ܽOgy|2i`\|x7N,%&LyJG s@ :!:s@ LU8v#i {L/lPCB?J;Ic`bʼnuL; 0/ um58= ŝ5턛6Zވ$ЙLT3?0wI0O_%9` w&@x BU[ tH 8"xԃk4@{ ꫏$)G,&4Tj8 1X4 ,?]L'x嚕Ӄ!.s᝱ d5p4.<̩b ~st w /6 V]n1nG~oɚdB=3[p2FmKMү`c *rf̑ mGH4&#;]TT O",t'so(nh6-݈'Rݯ3Ov"Հ(%&ijXQS'꒴Cݩy(p%my0'3 *W\|r=-ϙͩ/,Tl5[v㍌/@œi&2T7CV Ӫ(QPX58x`-~baߚSQn 3#X?MP2ɱX2Y ٳ <ZG55|"\K@+Jrem7):_TB2\oɽPB02;L,*1-Z$3쿓edS R}wIj7m~QjrTLhr/DD~cK@@ZƱL97/=Qv(2QΈ\ N( rId`G! wZ)=D? g΀`O ǐwbbr<4gD & PP' Cx>I.5K[|q|;a^rn|;M>{ļ6WV ]N( s rB 0ȐeNj'|uq.Ka 9NwL w?Ķ!rM&WLb!);xU٬\̺s>6ADy59cE5]r7(s8[2}"5BvT!A?I0HA<C@9ݛ"",nt'֕)rjf݇ȿBA6Lef ӵ4>!iww]! W>.%u ó.fGmo2+ȯ`Lmvx/=ӛfzP¢͠! b<ŃOQ:$FMdkpXoJIfjß90&ҢĔHgNif/U:H&7FOm*!_|!8w@q#!S, U7  gP. bRڱd&||>6ealB3210{p&bBWX?Q)MF4hQcjwHASB̫c4!<i@)?&9IO?x Jȋ K.r,[. x<3DfDDϠpDeL|;yFYu?qGCnIL6b` ɴf+* dlްEx3*u!-e endstream endobj 41 0 obj 4800 endobj 39 0 obj << /Type /Page /Parent 3 0 R /Resources 42 0 R /Contents 40 0 R /MediaBox [0 0 595 842] >> endobj 42 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 12 0 R >> /Font << /TT8 37 0 R /TT9 38 0 R /TT1 8 0 R /TT2 9 0 R >> >> endobj 44 0 obj << /Length 45 0 R /Filter /FlateDecode >> stream x\m >B d.}w ch C+) gώϾ=ǻFпR  rsE];{jg nݷn=swCׄ[;݆݆շ+2uM[qzzEXVSuzv|G[{7ՊpzWns^Odqsc Ǔ0kw3d,[oUN>b`ڇj 3 c߃I62DI.%7BKLoӿej(1`:t0a[ذ密o{0#HW2h#0Q]b,gՈ4MkMH)dҬAŠ,2[0K4̇?H!s x+faY ["vtf(}`'lX~-U~n ;^wu4; tܶL\}5l  uU54U~CbÇe3W١ ():[ұ~un\I^?őLYqoi NxwQA?H/e0"EIWa-):*'Xx\y/Y\5K%B(*|cAQ75ݐ4cz)b .M_u=95")Yv>F/!UݺƮ!lmߏ9hhɃn!2*BYߒ%)[i{J'o)?| 0x>QiR8U>(>tUUwѿo_\ܽpH-$Nh`ŪbײL͚@B#z%r 26qHBps Uujf۷w77o~{}TM']͝$xXYtIdGtxzh[M(ᰪn7Mcl~$orޛ^?ܓ;Gw{op~KBFd6bRn'4Z؜$c\|('ұ>P1~s/1e2)}/OCK Uo64jo⏈+벣#u19WZbP}PC`JOOʇBu&9Z;tt`Df/FzK9y!D+_ $lF N+>;KV  h) L?+*pscH_zQʇXs@P rgQa %V ?\AE>~H`2]JDHp%;+YD  Yz<3⇦ Ŏ;b'?DD n &$ewfDC rj3 c"xC >ًTB0R_mD45NB `fEf +~1. OL$4`PjAD6>@Ɨƅ[I \2lNu5O,J96x0³CT-Ť.> f XP/9ޑ+C='#4Gx`:XAOx! )db>4Rz ) ]ˑKjc1b³EzH JU.dIV J0OXB #&N i+w<_w8 xqa{AMHC&(0&T^#xYAzdeRaI.($͙s~4H샿G@ zq&*Ķ0NLګ>*PZ <),``mfJp UᖁyN?$)ÍƆ)ʈʞ6hSFΗ;\H̝k3cS$z B(h)~.e1hlȬYT"6`6x(2Zj8!,O췐Iq/YXHl|nSJ*'`ղ 0 ,/eK[g".^.AB!^7fVm%1|4(McB L&jG*(R`K_Gzf(wi f􋦏! ^D+XaN{N¤ ʲrM^9],Y]uzX<Ob˽dG^OhHʹEЖ#Ş{V_8vxT-uHMOxBcƀve;˧F,V' 6v\bLcpFlh'͎"yÿo[[=݈ncԃV=ᅴe߹_QܣG=~~ "#੖ή3rRW{JWz[{UWLS:drΐ0wQ1 3):혡7b:Q[Pً횾;ڤ+knji`yYsӫMv|;Wf8nu)ȵp^?Eyr.{%.agPu25 2$&i eCIt,%?ZqfR+݇sI>S\|Lk9].mQDy77ji n?@azP,ACl SؔT# Wia!PRׅgoP8߱9k5XjHe5o+a 90C~MF ^\E a96OB2|S<r$0 %B ɩO1_Wc>+Ֆl~H= 0s) )iJpٶ>Ю )AlX- L=&$4@?3C)srF endstream endobj 45 0 obj 4043 endobj 43 0 obj << /Type /Page /Parent 3 0 R /Resources 46 0 R /Contents 44 0 R /MediaBox [0 0 595 842] >> endobj 46 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 12 0 R >> /Font << /TT8 37 0 R /TT9 38 0 R /TT3 10 0 R /TT4 11 0 R /TT1 8 0 R /TT2 9 0 R >> >> endobj 48 0 obj << /Length 49 0 R /Filter /FlateDecode >> stream x[ϧ`4&b@d ? !P:YI3,ȫYR<#ݍ n5uw|'+ӎ-/?G%wGv=اJدokjR~eul쪞sUٷMkb> Xɔl']9t]/w{V*D?۽j5n_+Yt!>*.q!6T\^H^ H/~n2kJGvD`B>-I}o08# Ⱦ$~YjRA7M'3wCَ赯ʪHٝTG8;  ,u&i1!r:JN9>>|sS=?xXdzt͐SMӟSu$"gŔ;l{o_<9RSU#V5j̹ki˪M ^ s}f(ER˹fjo~))"ZəˡiQX09m_Vuצ/>˝„1Yv1-uCs_kylgFr=ϋ$\e! yg>ȡgtK!^ s.'qVQ*/N<.V̇ҟ!+n3-|!a}jC>붞>`Kޯ) }3Y~ma3FoΤɹW\I\֢6#{TSMhKEy%uΚ":6<仆`ĽS# @rv_{h #ڄw%ogp/߼ ?|LW^MeA5CC~rjzi(ktA,X j 2ft% p g(")A"Z_>p@u*W锴HoXsIf}/KK0_dEӯ^R޼F~ZJ #wTCe13QGG+lUM! N U r&6ǶyF~3 -XaH)$֞΅#"jdp΅=r#.Lɋ"B6CFQF*mp/(b!i)D)D߁'R02.qd3ryY$Z*!dm_vF 7ks!&6 KBnwj-cX7=LH"ki2i9Ao_yvDPn>eh{?MF&>=:FcJEE-mٮ-S9ls%qlF3A43 @|6!r o׬fvAn~hm=q4P]~,e)$q@cjI=;+HaCWSQKc%%u3i ֬ܯvu Oyh򜍹LV QР`OŨ, 5  i6ුVEHԵ6vsE:0gF K@WXȄ5-LoDA]l]#c -Hn2%Xܕ 9ZF] D{K.a\mUo m.]s$ܕS02T * G^B\qU6ZF1ȷz|PhpJ'Wz$0]XK?;Zdds+\$җ$qÍhO d0gCAt"g4Mbsr@frSx+,FQqˇ" -Wb)i|SKCg~3J̬Ѓ9$VWr> !o'9~B2'-'ZC* VI5S{ZEIgb$9{v}|43#D,[ R\I0 sNȆ$-G?r$+n`4{^|jް\!75k~/>TA-ԩNKRIWY' # Č:p^L o@C.٩?+lQd\p`EaT1d |; e(yXވ4/xG Vq 2%DJ pg]~S+lT5Nf:UѶ!-{A$-] 9>X+ endstream endobj 49 0 obj 2872 endobj 47 0 obj << /Type /Page /Parent 3 0 R /Resources 50 0 R /Contents 48 0 R /MediaBox [0 0 595 842] >> endobj 50 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 12 0 R >> /Font << /TT8 37 0 R /TT9 38 0 R /TT1 8 0 R /TT2 9 0 R >> >> endobj 52 0 obj << /Length 53 0 R /Filter /FlateDecode >> stream x[mܶ_rD A]nQMQs|9޽8g$-!EtAV'>Ù!V}ުSNӥU}yn|fSzea]~U= ơ=A٧jw^SAjCY̡a7A5fF}v8b?Tڷ|]qQI哝"Fzםr#K~:Ό5RE< c[E {NP4xaBs&1 ̠C\j ;yi;#AZS/*kC5=0~ZQJYï!ljk{Vq 6\E ^#Y "YpP.T#.`[9~~Z~SݍmZe,=O.t_5S_vpWz-Xi mU;66UNӨnȰ0LcOݺrj2* nI,}h=VcQT+@=<>zwyחEIZZJ8ʛ\yp?' >5ZNV"7$mLpw#Tݺ&ofY:sNw=a-?ƪf ,R m]< IQJk)Ʈ'Gۡ['/!&dMs#tG ^nշzک)W)]AloNKkqB"F'1%> ;NW"V ɬ"Von_^]#gfM:h" O%DhAY zSG۾5?D"wMO+q5`߉W;MuSfVʰ0Ues(|%Dv_JVc}^w.6yUC$j6&':ti(Ȧ6OBZlI8 #g9B CVjK"㡣OÊ@LAH`qń6wzt=V8_'םnEOS"Z4qKE?zN݅KyrJ^-LI8RB0dȏf%Uj{L?l"8!V̀RYiFU؞Ӫ. }]U|)q4ieI?qá>AÇ8yc8(/'dpq,ԻYJYa+s?U"+"x_M!C(BȬ:CP lE9 @MmDSTN.ˍ5qB/wf6 /L#ah=dݮ9~ ?+ءy+gC ΌA R`glQ"bZǞsL{\'3ї ;e" xt}i֢"Ybnkl(Ikad!U-Q┾z ?d7$+5 iN<mDpm+mErmd1Y'8ǔ672k6$r sT%sT-e&#\Q#Ws6+8(?._(:厊i$ejyڵtgZ]x)m(3Cp."iBYQJ'p:*^JBӂ:*h*R:yrGɉ0z[ #* >a &2l'~y[ܙPd{2yI(Jm8ás{r!CvK A4 jQyeJ j,itlq!91 lHaq(J,[FLu FL`܃V D.6ReIڠ\2ka.F4F (}< I`u /%"Ӝ1 HuȀH H\u| ᐔeK8l"\W1^zɹÝ%M0#GlAY@7 *DvBIӱ#\|r*5`9.ܻ)9g^tw'2u?%zMH=$`;P~”o"l!aGXx~͋秏G[W34tR؂nj -u5w\/ ;nj"Ú`nK@ϙAp;嬎<_Gh( 99.|8|Řd#k鲘E$E7n$4$[t2 I@čJm^`(QLY vδ/k, W.WrF \R>=iBҙ#ˎOH%W<{X {䂨FbЋ@3(N- +Dڃ<_Bp`ΣiWl21X&}f_HE~p]jtTF;+𮩽u*cPtɹA9F`,,Ah?Kq5F#4*2?1kw 'Ѡ~O<( 1)@ABB =[:en(a1Č;I@F6BU:#t+`XܥpdL u`KQFMPr!9 H>YcVLT]@/@#a Hv$&CzƵMޤ|*p)z$I 5aϾW\<GJ#s/XWhåo݄7)ʷ#&$]7>uzT.#~_RB endstream endobj 53 0 obj 3441 endobj 51 0 obj << /Type /Page /Parent 3 0 R /Resources 54 0 R /Contents 52 0 R /MediaBox [0 0 595 842] >> endobj 54 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 12 0 R >> /Font << /TT8 37 0 R /TT9 38 0 R /TT3 10 0 R /TT4 11 0 R /TT1 8 0 R /TT2 9 0 R >> >> endobj 56 0 obj << /Length 57 0 R /Filter /FlateDecode >> stream x[[o~_ :/`;iEbBY˶R]]ٱ[#yGrfVZũYyx7rޙ;S7uflk0_2۽3kλrOr浃յEm.ʾL;E_2!еPcSakYe/ƾ<ۘʾKgsml6k Oz@)zj)vNЧݯ{s}wթlh܀]S]0bjZ3Խp"S{V(Ǣ^)=OLq79ix't*zPCKA2%ϒ.󷤐K[}YYA(DFכ\'U10ʭ%sp)2VI Qˬ>tWa J>0{we~@"Eo !0eOd wx |ERiL&4|mdeQem6۬:h&no޼?sSκڻn+LJb~mo[wE5u0MCb3::FCfΛJH~l;7eƒGmTd=t*r^P5ΠQn2]N o;}(NEY`A,C0zH(+?LúU6PCܤ#˓1NtTl,pA?jӘ,Nia' b}gH$xA>P,f,ڧ0Jaq:u0JZ&cHd#(m@m~2CHpݎ Vs옄Dp4bzݢ]ZXz^=g)l",_N4-U6YKg,$tD_%9VS& O?jXl ,jz1McݶyI7BP%ZonV6.` T\ib98H(2+zC4al4,((hmY}],$I3x#vZg%*9fP DGGPpD,ܡJh@ٽQ`~\EuMt5r-NdD6'\M%Q;!ZqjuTIҰf<&|pWٽàeB~y|q_}\|7LJd+H9h60vLm0X% atE4nwyfģMԣVӊsmhds]ꇑS1vu Pm;Nnann@gjlkeZOO{# YwVM;o"hESM[B[fAUZuF9獧#Hk/g[i|w] =U-] Kh] Sַm 6MͶ&]V<V>? {qַ7..ookr8HEUE Ǖ93"&cj1pE@wk҇_X?8;/Ҿfpew`82q]RƒWmS] *izVIY31ᴎx]hYOO4JPI+-JŃRL˻>UE:j1-GDR?ЄE[3fTĀm)8 2VpQL2-^竾w`l hu)5Gf.(:)m vM(woIH$;'Dl (WNŸ}g:B%I3 УŐXmr[qLD=DrV2–|q'?~:ϞmD*",L6+ K2ҽa*4c"qbF+'MieΥT b_@^Z.fKEm):?,N ,7Hnk˨˰v_idͰQDkڹՈ+p瞧4s,s קf,&gNPC*{UՂ͸W?tWV۪UGwn7v=wjZ_ٛ<4^umjK1  t-Xċ,UG6/n{ua޽Glv7>;pqSa~H x23(ÐYgE#:KZׅȿ=,:M?}g/pa_!(g.$aܕ;Is:\cLg DjP{Wj`0g. 10Wk^UTFgﯾB(^R;ºDp@!.zkQȭ҉př(I#4_ ]C\ucm/{~.u N^Cz6_2gBG$X|`?)uSgO~MD]L8m{E&ROVc><ŕcAZ]6EW6S<0Lite5 E BCqN ʖ 7XmBG)(6Gj{csd%ʅ?G킁5 -0^Í-:St-̗cW|PcY{5*h-,,Y,4ā#A#6Gmeu`y/RH嘅%+Ӏ%ЕG,׸O|Ԣ endstream endobj 57 0 obj 3440 endobj 55 0 obj << /Type /Page /Parent 3 0 R /Resources 58 0 R /Contents 56 0 R /MediaBox [0 0 595 842] >> endobj 58 0 obj << /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /ColorSpace << /Cs1 7 0 R /Cs6 62 0 R /Cs2 12 0 R >> /ExtGState << /Gs1 63 0 R >> /Font << /TT10 59 0 R /TT3 10 0 R /TT4 11 0 R /TT8 37 0 R /TT9 38 0 R /TT1 8 0 R /TT2 9 0 R >> /XObject << /Im2 60 0 R >> >> endobj 60 0 obj << /Length 61 0 R /Type /XObject /Subtype /Image /Width 720 /Height 141 /Interpolate true /ColorSpace 62 0 R /SMask 64 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xȒ_h|o;G7; V)5)EO٘?o?wz_W~pkuw}뻽z_W~pko|/3 Ṙ]$ 75lLx|/ Lk15P_Vm)/{^ˍ[2ɸDX[HrJ6.$\J%:q/7{nRƼ|<1j2+'=%n$L&ϻyrN1ߵN{# sӚWm^^mb Ɣ#){)d7H}wKܮeRjʋ?9{ֳZjLM2G\j.z^g/mꩼx2lj<;[/`g{=իMoLNYڑ*(خg;, , $O^LuoѮzd܌#^2V!kЦњz*͘& ]z=ƟR>MC,ҨIes^g&~ޕux*%S|/ga-6`u%^0(?& $C\Ui&O^)5aZiGdY5>E2ng i$YQVҜ<ϟdu<.O.c${v2jJѓ|QB*G (-&ϻKW݉3L{+sݓi:&#^;{y $c%z h/>Qo\YRz LPp{e/2nԀ)}2RG&ROK#y0v${df^}1ڝ4=eЛxdқd>j/pٽj0jZc?KF7AN$cAjxF PR2KC%qkQj#ګŶ|6i!<4d4a2t:wFbƠJV6^*QĽbẁۙ|u5B R唽Z/7;>\$p8Ki9e/`fwNR854Ք'Ւߒ|;nRWB/ěMR}%xvz n^z_}]=~ 7Z{]6g\Ț?X8J8J[Nҷ}VY7?mwz_W~pkuw}뻽z_W~pkuw}뻽z_W~pk#7J01 5ɤd,s)*mJ9w*4 )Hs/8F2dEG&B2]L^IƁIbMHk+r]j jIj{icnڜKNM2gZ5bJE?ױ',M^{Gb 'C1eEe'#}s^g $c1eŷ#'#qۋ2 q{MUzبi潸.Nx{]g&997rՌd_g/NEE NF{sr^=%甐r)✤K!OzLKf*z5L%k}#řiFⴻ:r)-(`Ma=U2#"diMa=KC$ÍSĥL%ye|_%FO55f#_z]0{8o,'fMa=e1t?{컩/>U1N€R|&FS ^}l X%Nêφ^⌺9ټH3(&4♐J2H⟿Qll ]UR8?74 Q9BqY4a2Tgr2ҷF}390Me dr2.0r]j^Xl,3(\q/#PO95mjɽ8Քm=^:2kDJ3Ő)=~WKӁVMF{)gs4ވo>̱k<Ϟkxuss=9etH#94a2M#5bՖ䉥I&yi$}Qa6 $vCLNFzdE85 j*R* 6"=UIa=~ٟۺ%lzS)}7b6CLZPucɯ{NF{99I` *Sy^mQGuw4M 7ـ5,[idOJ%5V0EM&d0멒q43 ˍ9XKس]YqgIž.%gjJVNdҌs%57['Hk2%_%H< cH0zq߫3TdRzbĸ5*WpBw|R?i՘SL}؅hTit)V{4Y{cƀؠ,P$FO5$2^Is|/>6k |,K/SBӅbUJPG&#OLY.PGf<5MIULNzagZ\2rI5pNi~yIJdҘd:1b*N{1MF8fcj^䅓.yl "΄QS iI)8fq`=-!fx>YJjJ/(L{Ğbc*8Ů!~74Spili*2&4 ]Ҵ^͘dIdrlaL$\T5Ypezeƥk&strd4h){UZ;SGu$pLd-){9\cz!-3K%kTe5vFjHHF t Y(g~OdI [S&Ҫ1 hlWz_W~pWe#}ݻ9w }}Z'^:?7^Zok}zo <~w}3Z 7pvͰnிw}Z 7pvͰnிw}Z 7pvpb $k 39r6-/ŻYJ㒍f R ©IîZ(MݫhT{Y I$HM2*|,rS,2)%Fdh, S={Ҝ`gf|{0٦zX!RRk7rȁ;d6[SvI˪p2U e<6^t1\'#1JM2nad,6HM2&RZlP%b7j4TՌylb6Ž5W.9rd%jێM#5HU eN.r[#k.idk.{p.HGz%`S,ҚzVo d'Hp6ak\J%k Y;˚ˍ\CzI" ޴Yr.3 qr2reQʇU.ɸd`^ˮ\}ke9fX|JVJ3cX\r,(n-\-# n]4C'ov'!H)^2&7076&"<5 ,utyyzJ0'1ە'N?ZQQiy؅ƶCoSyW8 /U}>4J̽jlbiOX!wyEO%.P)|/y%K{7 +|4ϴ1LkiyW?DlR@9$Ĭ3&[F @ E->#X.W}9Jb[2-PYcyNk>ʽj5}Ґ㢞x 'C\*䅓:{&<SC P#,|_b,[&颒xb{avNe2ϺRl={U&GmMYNYrւ ^1(~=O"OLx>YySya/b&'D\*(ሆ{kqi!GzT&#%_1cp $.zwUt.^'+b29)sx/&ddNM2Rr^2S Ԥ={U2-lJ^4f kދ{e܃-`\F͓HiFS4RrhhoG+6{Q6Ҵh/q^0n966@K6ãsdLA2mR/2 R}5M;:%,ul ،eJJ94HM2& RL^.na`̈́qɠ&hM܋`>e&q 5XldJjހeqɠi|'S^'dUM61I˂2i<6|[H#gSe>LLqHQParjlaIeaDrC(=Nˮmn+a]_knn+a]_knn+ 5j+]Zxv, ',m^꛳Y[V؝SS35){&=xfd,&v^LN RIF{UhNz$#){g1{G3^Rėoa=Kkn20 dL^.2#xyw/ks|/'?8q | S#٤?qEzj[Z&S0R'~Wosdȩɤ^L&'^& '#W}YfWc* cb He!٘{1p9p)-!~ť4R߱I\@ h1f_ Jy^?ٿ.^,IMM2SIЋp}fw {x_3e쯘󮿯W|2Ip4PbD5kG{;ߥF;%mvl!Ο£P&<U?I,|8zRoWj̦kEz׉8f?UܫȹH/z?},@%J|_wԹ[ gԳ^2Rr/U'(OvyI\uegZꟽC=)YGO)^K O q˙X%n .Pp.V4.W(\PչUbƒ'&1#X%6H ~yԫNc2nTzML{fr2RGILNF^9O2ˋۋsQE&yKLvLM39FU"^ٺ:fr2t[#\Hr]fF Ig/Vdo{If1)L/q X%%4'>9ߣkH%0OlrP9iLe2C5d%&tYVp2 L0ߋ㽘dd^ˎO ay//%7z].Y}vJj$$c\ê- '#=Wj0dkXp2s/'PcX0%LJTeFerWuc΄T&M^2"O\v, 'C Sž<ދ LNžH~VRBz5gf@R-LM2L4,Y/p2R}&֨If&xi$^N@d20.c]՚R|VI/0Àի 6D^ eԇg&͞dɗ7I3L+5b F7"k.vNsLlpxO%$cAj)|lE 5Ɍ,l!6LN&KM㣀e Xf>*q/*J8 5*$8Sz4s&']FF!lf >3#А2dulMp ^{}K\k+]W5ú^^k+]W5ú^^k+]W5coPy]_ {x]3k] {x]3k] {x]3|lqB2.H&7K6i&R lTWjqx ޼C$ h>t}QmccS#cm!YSrH%$cAj)){iOd$c1dbl!Yb/u9'Sv|SIoF8M;e%hLJE2ng iA&'#){U u^Rץ%c.V%?8 i9 'CpjP^}Gl'IQBF'%*2VG # G0I=^d2ga^POR;̿u/wd\"(Y;z^z&4 5Xl1WUe\I&M㣀 unǹ(2ָKMSGN܋X#&fjz=dS[#fUd&O^;JX =2vl&Xcd$~WqxU-fl߰G!Yw֛JV)fƖƂ 㥆dUѠSVK%Ӣ:gZl;6oU-!~ .ˌ]fF @ClA&'c3X@&'#|/l]td6Eҥ=$d1Ņ RI S^Jb˔]a*L4M2RkQLz=L%LNF{qz5J[V HFzO ^Μ{2VIY #<ʧԨ:MWuflR ̳ԋdk!YNYWdr2R٫, ',:RZ䅓{mdU39e P#,+5ɴFuLM23Rp2ߋę ©!=.&b>]#^*$fڼR$]v&esjQ>FչFOj8'1g ԔH#qHp2& R}4€Ud,6H F8YUJ_Ec!{9*[xi$i^kb 4Ռ^iIy{1h$X5Jf>~L^Jי{fBoJ*Nrhq-hqVQZ^ehpTXKIb$Sjހeqɠi|'S^'dUM61Im/;jU' ){۫iq.elzKF~+5ً}G8Io(z1YLv:'A&'e@XfA2Uj{S2[ 6IWOCƂ6T&yM&iW 1iC|+#1Q#5rӻX|{{z_W~psiw}>E:naz_ծF8?75y|_!Wo߿oz_}]=ݮ z_}]=ݮ z_}]=ݮ^/?IdNq9V@&٢R lvnLNfbtiܨ'̥d\"1<~^rdڴ:r/[H=F2.& RLOy_3HM24[SM{UrkĦ9a2{\N+x͇WtZ !L^EjyK^}&.IzYNzcʊ{1سmC%1]ͨRS{FZ^LNyw}W{W&3N`SS$y妧NK|z |w;f>7n"1~&dKǕd5.)`\ߗ5Vq5Iނ:9ꅭ3 o$^q}^/۾Ŏ'ڄor}^|/&ֈ#v*tjO{zcY|2魪?$ܺ{4R/y4JZd'w1dUcxbXJM2٨uQ_ŷߗKhMCz_S[xp^tw5,vyr7kI%$,u]딽.PO6 LM2 &)k/nZQ{i;R;?݋ 9G^-ģ.΍MPFqq?-I[c4#" t]eeY0 2=.jOu5h* e;g.į.kԋ}sdLؑsN|;{Ֆ:e/CPsf$ԐLӰ 4XY"9G#-ﻻ&t5,hdhd\K&uLM2 7tiȲt{c/W#wd\2h XSM{{5dId7Kvw[89fI-֟栵SSPoR :R@r&_doGoxmV^{}׫\k+]W+f `^}}¿'_nxZ|bND}}V7pw)߿:>vէ4Zk\!U7׽z_W=[X3XnuX+3r)7PCa7g'AKJM2"x_/n$^Rl4S{YВۑva]J%&Bba\JJt9^t9V`CH(l\J,Y !@LNl9gpd\2HM2%n{&0HM2ljDZ ]ɔk-d甒MGi4b $ׯ4vK~؅d6<K^85aU8IW1Evs/$]mHL 1]͘&֑i^.6.U}9d;$/^2/I`Lp2/v,Ә@wuJvdk Yb8  V`]`dnKɸd`Ma=KCs|-ZMFdZT;Zo>g{_{y +<ۋ ޢ!|_N>'$Vbak Y^ i.^>FiʙX"n.e0E=)(2P 32VJgz/Uy&cZr;j ()ýN쥎z:VCjNTK<JϽ^ccR,)=jKlz3b6]Eq^^gSzW#6^?Si2*a/&!N 4ު4Č%OLM;QJpAOߏ2}-,N( T6,#R&# _RLNb& 'cA&'#׍ dr2 3M8Mev5F.+sk Jl?]M&YLNF܋i2ҞQٽY1)C'vhP^Tf1LxRLvLM2rJi \옚dOzJL}&'#=Q>{s(皪34UsSÐlNRQd6KY%fybj'>+rk@5JM2Ҩ2䥡/ٞń5+$NykT^WEyUfy/4^]Ts#{1{}5_93gNM2"^Ջ#<[ĻG9̫n-D<)9N15P/džH^8^=gpSov,?MwaaaZ/nZ\-ASH㟶)yTAy >SXoK2iOF2rsc gH&Lu|2.Jɔ핚 FMyM"('dpq 5ɔxW 6]"de3Dr[0eߔe)BZ6U<T9^ȩo0_H}iٵw {x]3k] {x]3k] {x]3<ً'߿W Z ?7.R Kt5Yys, endstream endobj 61 0 obj 16413 endobj 64 0 obj << /Length 65 0 R /Type /XObject /Subtype /Image /Width 720 /Height 141 /ColorSpace /DeviceGray /Interpolate true /BitsPerComponent 8 /Filter /FlateDecode >> stream x1 g @a 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0 endstream endobj 65 0 obj 466 endobj 63 0 obj << /Type /ExtGState /ca 0.31 >> endobj 66 0 obj << /Length 67 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream xMHaї$T& R+SeL b}wg-E"u.VDNC:DuE^";cT03y|URcE4`λޘvztLUF\)s:k-iYj6|vP4*wd>,y vڴ=S԰79 ڸ@`ӋmvUl5`P=Gj)kP*}6~^/~.~a2 nײ0%f|U 9l7?j`l7"tiNf]?uhgM Zʲ4i[&LY_x {xO$̥߬S]%֧&7g̞>r=g8`候 8rʶ<dWT'<eL~.u"A=9뗚]>313X3-$e}u,gmg664$ыEzL*LZ_j_]Xy[?Xs N/ ]|msϚƫk_WfȸA2)oz-di2|m٣j|5ԥej8ɮeE7[Q|IM%ײxf)|6\ k`Ҳ䍐.> stream x\[D~("$<n7>  =3\HdW-{rS݇1]sW9*ݶSc[Fݪ*;zSKui`umQa[eoU;E_e!еP)#R]_ /ƾF}|*Dzzz=Tߪ_'jhٗ'٦$g'h a>QvpOZoڇ,Ϳ`D}N?WOIZ]S]-fTC;Id,cbhƪbnǺm{5!~,mu(,ᝪj+ ',kb'KJYlI 1o/>yy?x{/#idx$cbR3 G|oK~ *MYQN銶i!~uQ dɨ3˪lSQ>Sd2_`dcWdIض^BYWB [ZCÜeVm[uӦ<׌SQHz,U}w'>zB\8_p㊭u3HZЩmA}j){jcONuWTdZ F^C7C1d[ n@%XA2PqHl[&3qNU9-2L,1ut8Cp$,)Mׄx3%B;g|ܙB"S m+)rm4 q=18"lߏ{I6%=ew/u%YD!0^%3=<~wɫBwK ?\}hʡLͦ&<d #cpBߤ] ܻB%/Eś^`Хt΁ Bp//ĘQl0zӕ!=UOEDQX^2Qx6mzOgNPWhy:,aK=Tu#ՃC&#Mi4ۯXP2LģX[.faÐSa7,5T =*FbJqCp*.w;N1+UWt(;D:!' Э`, Wxs[O=`ൠJ 0`o sԨ\Pڒ-^=( g*mz^5n61E]NkTй{- !9C\7\ʙ`Zv]P¿Tv4BxʩfJD$2hd5k]379sji]8STfbґY^|]QfqOjrdI皑 ggGf˦tpSn逤mdj:)0 mirI.-\ vD^ZtL/S}Ixs 3,2t N65t|zrӧ\p3erߌ2FKҷ~O (Ѵ|"rR's@jXcjk{U51-6WhFCz.IR3?}yAe[TpnBhۦ:9A":wrZ8TMU4JE%B(4ƾA~Y𰸪!Խ1.7!J+` .`сIwN^}Y'@wa|.!ͣ0LVBMf $4iONh=n-RkkY^ݬơ{#4;y˭$̆qv0֛Sv2_=vi^a *`>3g { ̈ ՘_9{E4;~ 5)d/.ɚ1XbR rw A1,'5 \Gڳ(j I=/___cbypIXXq)&]ԢSF.Órɳ.LAVTS MMCZk*\'3 l^^

3}j+ -}6 E ;DE}L-7{< Uæ v Rq5M yA,~K:V/uuDdEo"F Yr6//^>۫//N}=pRe*$6D\>1H`U"җ?H?$#elC+-J=`>\WɫdC&'AB @ "!(3TjLІ Po &%W;/L Zirnש(2swD LFw[fv`yvlV6JP,);ƦDJhhӋP&7y?Y-u!蘤ݼVVp@+,b;8 & ;|EE8)xԢ R`M{%Vڼ@ae;wH|,ʰNK@2w'D6E BijB]r3̮sH[6t/$=" g|$5V[]ԘMf|L[$NCѕW뮾E BR.i>e/5|A)Q?ԶpD*NNjw\Fd\ctB^99ˉɻsXv?WX@B_ \ 2o:`\2+mz?sS/PNK<>aOoλԷf{Կ?ps?udázņk S)'R]̷SױoIMɑY:gJax*tV{x/]k.]2Vv0Gwߝ<՜\O^j+_酊ټ8DK5}T55Suw %:3f)>$IN4LނM DdDΔ,\Ef(:ENGC/_P03購5l%RTW̑_HCj O^"LI0)|> endstream endobj 71 0 obj 4114 endobj 68 0 obj << /Type /Page /Parent 69 0 R /Resources 72 0 R /Contents 70 0 R /MediaBox [0 0 595 842] >> endobj 72 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 12 0 R >> /Font << /TT8 37 0 R /TT9 38 0 R /TT3 10 0 R /TT4 11 0 R /TT1 8 0 R /TT2 9 0 R >> >> endobj 74 0 obj << /Length 75 0 R /Filter /FlateDecode >> stream x\[ܶ~`&"J]8FP$@8ޢ-.^4?-=H4deEq#oZ~pv/oi~{q橒fx)_6mY~˪F]U=OW~V}M'A_i͙iͮ+T_O5/wǙT-Wg~2^e^4X8x rL3"p<32X\$͠!o,q۶v=*ƭTXݩTYnZ\lj'<Ѻ@ dF"RDpCDlP8J(|V( ըԠC5~% ICK;H8IS$Dnd%b޿zRVhmJ55.ui;Szzlo+b[7}ݳs9b)A?/N}\]A1bY Wdesq_GrV$~rbx9/'[R5ڥk!wˀCŹq4lt}YBR Rp~4ST i0L 𒉠|p+<} "VU)'<9DWS!]\(C֮D tSjMBiFiJ@CޔjTdr9JET@! UԄȾt. j*~ gqwDlyvO]2y`F," yl>]V\|/0ѧ,` Ypz!/@ \#@y(Ě◲HqU g7DT> ߱0zwEgCe@tPM[vZ.¹'-2-& VW y, %Q 0\&`X ]$BG7faE_LH9u%Ksh7aqyE.;Xw[ E8i3XjF{Kz UņMً`ѶҕY%N b2x؇ClR&%NIXv?&ŜFxƃ(oi5GyT­?lݣEhݼG `S(x(6/?kCYT.]8)2 dz\b ~c %$O@["cBFSski762Sfn"J}$;i@;}RcYѮ[C!_NWt#koҤ&RH=3-[[//1߶% 쌼3!"9NAI_WuMy;4 0.N6< GpLW El ߼uEN'+miv11]o 1p{9 ifQ{d.93Ё{Ӹ'NqI֝YěSSxM" sj$V;Dj ΙE^][[/̱Сi;8ġF+*tD"<< VƧ w4'tI'cR UFa |AIÆ) D(..|Fд/GM )Y}LiOgQFzFqZI4y[Z`uň'qU`A ɬzSE٩:"[NYURN ~4F::a$xz t3 /i)it N'2ScF} b8-! k4j}e?ϬR$:FBiUv'0Tn+wXK''& Dv[3R  !Ak܆t ZUj{{e̚jRÝ4LZ"^ ٬qS븹3uw-j!\"M3g`ѓtXbLo3η\Bd6 yNzۘ7R( V@Egz: s< yu/,(bnCy:-qL0p:-< hnD-]ʴ>fl>U@٣Ȧ endstream endobj 75 0 obj 3589 endobj 73 0 obj << /Type /Page /Parent 69 0 R /Resources 76 0 R /Contents 74 0 R /MediaBox [0 0 595 842] >> endobj 76 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 12 0 R >> /Font << /TT8 37 0 R /TT9 38 0 R /TT1 8 0 R /TT2 9 0 R >> >> endobj 78 0 obj << /Length 79 0 R /Filter /FlateDecode >> stream x\GOQӗl')` O1!&C&,tڊ:u\s_Oյ*vlՠku\}R<9VjTqO#ƽ>4ez1juQ~Fʞ1[]5-~hkZpV+zCjPw2;v;p&>.Kb)t7z.hEz e󧛟wʏWiGma9BY/܈W,]U>տ՗\_1],tC__ \L@x{qkd 1'd]#G2l} HiqR&YLn^ph.߆ъra[e~:}?g2,Pdܘ9ʅ!|3'0{ɔ0(^1TRx3dXox{_ٗDHE@vi aj ""8vW]HP,Zvn!osG& =E,D0o;?Dyϯl;`=+ yR!zS܃4~+.%IVz^`f;넚pӬe;mQd<7uqu'q:1r<d?Mݶ=E4]dCޝ<౵ ]֍*]l\WKDGn(hGu+yD~JO{6IWl4g+J JfEi^!+^(&n pՍ$t]@ EzI(60R M[R7n~{ck֮F4"ElDM[q)2Jűo5;+<8kzmCK8?ҬI }MF*z{1X !ۢ{+m߮BQ #5u"9 Z+SKDxCWk!nB3Ä[aaw5@SJRެ񯪀*0SBDSjvVGA#u䳴fkT#Z6G^\%z9X N&Iȯ{^ ,&^ˆN$6hE3TMא8Zw3jI`W%P_E;]$ڛn|xXFIvs>,/B%Pr6ڏi.4'Y z/|;3DGJ@ϲ:tҽNPh([28aHF#:XoPWKp($0/Y`0dc5ײ:n 9Nz \v /Ë  }"ɃcDŽkUCĥδ:͜&䜩giZ;PMt;6 *AXQ, l%m#ɶ{0gUKAz8mwMU^ϸ'blMykٚZdyOhm ʳ^j"vf[ӥ(fh֚FcMOJYm؅1UILHe3%ay(+}-,mLB@*L6*BK 6}ƦLЁlRNGw.dr+RZ\4 h,P#0>H)/6f2 蒊A+"#viLcdR,-EE9u*ҽCtčFQ6AXG3c x<@E 8t̚Qxd_!L( A]v ^x~(/ѣsBoЊ0X`s3 (aLBcZm9oVfoT=˱e,#JR k9Ú8`bž1&q4„MyiۑΘ/,!LZGw/ŌVvP,ܺ 5|!qP}1gB2G.x`Yt!q&(wK7wd A + G5pTt6v9!Ta|<_ Cag<LYKOP1.'```obi&1?_47f[YSBwJ[4;.?靹scٙ"(DpzKXe8B qkjn9:N]ɩWly݀5ujx+WӮU3e}l"v5opuWjyǠίȬY9$;W!#~EVQOё]a]i0 4wkWc?z|u1WM9bѺhqՒýɯg ^<xB"XxwX(D_^3_ژ 5@oIk|R~Y'7K:a^ngN>cB'bP 8H/f9/;6 6L&coNBa4iO 4a~ dX Dһ#mg:wIw@M<0/r^E툟u9aKCQ׈0Dԏ?i-HYSvZs3,Yw{ZVMK>H'kpy/s >3\PG3POAhіpJ⊜/^{*\Cj ѴP֚Ba`X,i.3zk Mw6Nl^<xdl̻˺*&lhu4U7p)to'/YёB&7~ҷM%Mۘ4IM xZE׉2|fn|]hVcdvzQAiEDCD0FnHG"κj`1q֥Ϲ3l/MmIyǏ0qFTi#{^uG ![]1/XyޕIhA (⠉H2q QL/A^3{an&` z|d&-̈́ywfTY v&e[Lt M~ fDWԊ.tPHyf^Ev˱''7Ke^n݈w5=OПWlʱZRev2]3r9Fu.TOac9&niXcm.x"㉆Q(r_(yEfuS9ƓXy֧ y endstream endobj 79 0 obj 3934 endobj 77 0 obj << /Type /Page /Parent 69 0 R /Resources 80 0 R /Contents 78 0 R /MediaBox [0 0 595 842] >> endobj 80 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 12 0 R >> /Font << /TT8 37 0 R /TT9 38 0 R /TT3 10 0 R /TT4 11 0 R /TT1 8 0 R /TT2 9 0 R >> >> endobj 82 0 obj << /Length 83 0 R /Filter /FlateDecode >> stream x\ێ}Hp'"@(B̀3V_[׮cxqWjj*,_ c9]yGy[~ٹ-ek?_cYWSo(~(YXPw4a9!ԇqh/ em9N0zCy}SlW7WWثgꟗKէ,4 mxT^#t+f-lSYu?<ҋ_ϯ #б&CFsy&/Bd ~n8w0 Ls=@S7M˶sNEuz]s @ws=7tڔ17Oo~X;EU EH`rJk T&CuD!j;5IJz氐RVM76k`GC{YC7L1\Ov[ ~9t~rO ,PAm;/}3dW;"<#ܻ;Ilܵ,[nP]ݏݼE#B]? W!. áG7ՏGaO3tØOw~V?L{gBNNΦFDׁԾPj?qw=)7rj?azgѾƊU4G lEQ|e%mX\d3S,%!ռ~ ]0 ObV?ӏ- aQ­valHUǠv@֙JXH&5eoh25^*ĠRҁC{*hC06VK뗷>{+i9j ƈMiؓLݛRZT@9 Ԅ}7$bkoOÊDz[{9q9H m,4_⠾`^lK>`۠:AEU^ ] >pLח]7u)sng 8AV8V1٬w41ӅL-8flv>p6h ;J[ ?= uxSpJe\6\B!*_ _mJwWeg!Noqzv}BB H`0n$?ҥ:Ǹr_†[zP?gZ=:֐E_xE@nZ& (=xnsa5jK?ri !$63϶ m>( Q^ ˶ ,SDD,RzLC̮ ©$ 3k ?KZtRӿ 1HCXX4Q%C/Ȯ}=̈́#HOƴO{1r[(ٓMpU HHYkERD`L :ZdcZMl $>j^%d1{( |;.9:·2.#BB:z JNBK/y1%Cʺvn "u\Q0wE Waϯ9%`y ]#O UQ{ FF!D{E!r9m;5w. UgN.y "sSQebI"'IQV ?S¼D7A]wuhp-Vy2T"MDK-FdkpMv[c0(9?I ֊Ez3H^H#4gio?Rw­ eP9Iƴ# Jn6vcN{Z03~s'M ?v6!OP1|=AZ#V70^[FP<@6^'A 4ʮLx$M@ANyy{uxמMw0AF:B]ԟ;SFfPA`slcuEm :H2_ Fu(D:Hs޾f9`Xn[Ļ'7ԡVryubq b&첏Hd뾯 9HuT6uw;\oN?).+|k!Xa('WcK{vJh-ErdpĿ{0E[?[Qڃe÷UU~Z4:xN]%MO oYrmuZ\ endstream endobj 83 0 obj 4054 endobj 81 0 obj << /Type /Page /Parent 69 0 R /Resources 84 0 R /Contents 82 0 R /MediaBox [0 0 595 842] >> endobj 84 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 12 0 R >> /Font << /TT8 37 0 R /TT9 38 0 R /TT3 10 0 R /TT4 11 0 R /TT1 8 0 R /TT2 9 0 R >> >> endobj 86 0 obj << /Length 87 0 R /Filter /FlateDecode >> stream x\[q~_12d~Hɰpbju! RCdUWwW}U}Y^5Ǻ\P?|[K_^n^~W^yX<ݲi]ڥ;S kOԝ<hikY_K{"K.˩?{7D]w_H몺泫pWH/#oX_72v'yWWͿ׿!8c8̗tr8n\Ӱ0'emswfsz2b@lU}o-B <)0Op, R7G2.W72P~ģu£]i=z*ȿk#\ods;OgbrWjVѧ/盿 ǵ|^iZv6dn6S;XwUዷ6ERz :(U$s,g2nRL_dxEF 036CdL,Ug$9T,2]z>;_޲?`_^PEE&^=ȩ؍.3D>%=>V*L:N3n_X31pRHP =9ú+2'A=єbhz9Uxpho2I /Ňa:urIq^ HEyPE>?÷> A !3~ ^/!7A Y r`jbZ@D {+u׽aZ3o,-л\_Y Tf7\*}JX,>e?8Q8_Urrvs 8~ԧ0|S lC.IC<,mwk0 $U }#u*0v6n$ fD P\ T tvtVJ"Th2*2`. g:=ˀ9 1 pF|g(@.05Iqʠ*oO'ʋ}&<*&y*GFVpy~-2d1eCA|_ %X"SjّyYCî5}x'81t3%v( `a?aFՀ`DIV 8]7B75w95DA$s0Pc{ 6ۂu0UsWD̿X;g uɽ7I p݌h Vp Iؙ/!31h U2z{@qiT x/50  'dh"D0TCW0CQ#q:y5K=X ^ۀmx5#Bւ&=hX l|p Y͂ٮYwv$tjq\< )KBɂAp?~:gg0AY"0+cBUdTlBpp2JsG)Y)zyg͋{ҭ6+tJ!.h NBdJQ0 Up|d۵?ͬQY1Gb/ ;JisgkH,2Ւ?|[KvCGhA%ͩ ]mjPcPY1BSjT,(*E!㹝j=G&AcXB&c&#LI?Ps$ʞt+T"#}@-L֧Ttռ'v< 2LCK'Oھ'(VxؓļQqoxlW$֮uZ8{!Ơڛm!lB/Ot/SF ݃OU< 2KISp 3E > ǃ%$OTwG($"_ܜJ4fjt$r%x51wpk7z_݋x٫bnC~2dcFѿRX'g_OV8*K w1ۇW_9%CcֈԮ]R9D Nlv3q..rhg?޾WoTOL!aGV+l4݊ldt'n\@K)i4y ӥ.&Pr`.RI8Wq>WByӵ=}wga#-}#s=kΊ<T1-:ybɆdi/nGSx8ࢄ'20'%GCT#4~\=Dкkmr4 -Ypfj*rT`"0ua,J d9{gi34ܼ[_ɗǡF8k_EZz 0'UgªA&Bq;ӲVtSeNHżZs i!zʳ$/+ g U驁pj= v ~3[AV JREb @Bw;;ےڏS=&o9aO1Hu7Gs1K!{Ѧ: A-2bQRR4>V fHVl@.(kܔImΓ+i}-_5J 1». K &KqS>;)KIJ 9jP=^'Uz`z|D阵#j2>ܲ}y=u n P.UG L5 ?`nh@bؔW 6 .ֆmM9I sw X/1ՕC)), ƒ{-PV SXG(^lsAط^C I>#Ct)[F"4Dnw"4LQcj.3EKj Ju-X7UL}j/%PBGp++ _^}u ;KFhͷ# ezMWYL\Uߥ~}$nk m9,Sx'ZGC-cC.lDBIAsa'׺U|ZwT/^\7:k[MQ. '^;n'9RH7+F' mjz=$w^*ހ 'egCej2c'*<:&63]Κ Bf¤x;/& s6a{,+Nhц a aj<ӗCr 'd7"&cOI29 Q<\a2c#ϷG8u[ata¦ʽj&Rф t|f\O`YNඡG0j:>dʅ7 ^A;g` MՔ 39P8XZᝫC͋p;#yp>zJNYw bwޯ^VԇYǀ$ݜO"P(/ӿc"E%~L0j}8X?c@e_Q tjJ"2,It83~cJw1`v׾> D k\B@Ay+ϑ+,@UTq0R.=9/zQz~/H O_m'm4!C'S'P wYq?w`\yR'M̾ރ;Z?`A+RO$ N7yI2 r0= d8fQ¬!R(Z+r%ό XءD7#XXzFP+n6mIx7ǖOvۍTMW'=X8_;$`X2P>h~r6ht hymc sl LW1#i(LL9R5)kJah8xFewts2[gfpf7{4q?C 5S0Îk NEf r ,ܠ[{[}-bViߋ܀|1"'' w봤/rǰ`ujZT԰6wV/JIZ]wyEO?zߏ89;pyKfђɛVl Jwa\ U Lc1Ԁ6[CI@}xך䬧sJ>B#o SJ*gBy3{>YT-eJb@h ui?ʧeg˗:|m|Z͚+#/\#lhĐ`,遌L h2agHB(0sd,<+a{+_ ^ P|mm*p}0P0hK/75b gsӋ HFk,zo?hB.}g :_JvKHmstx<LФa At HЮr%D@I vY ^ mH2,> endobj 88 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 12 0 R >> /Font << /TT8 37 0 R /TT9 38 0 R /TT3 10 0 R /TT4 11 0 R /TT1 8 0 R /TT2 9 0 R >> >> endobj 90 0 obj << /Length 91 0 R /Filter /FlateDecode >> stream x\ێ}ﯠAv߻'Hb( PJADy،V{gVß|K:E=Rbn..,9^vjlkTU˯Tev4BkTfuzmhumQa[eoU;E_De)еP駌8~Odb }1v7wүq~8+i+ .M:Eg|(!#?0egh߇F\{x3It|=7< 04_!b: 8XCFA ,ڎog_1)# K#2 iPĥk)ٔ:]ڂfqA_@PlהE'sj+G/ ߄&܃n;3e :ç c;YF$vvD7RUhuT.ƦlR(_ez圯V|dp1SC(Y5e-)M %(q}QV%evIt0! p8F3d1~cNa'H/gb"c,poG Czص0e90gy:k3!ŨyrۃɁ3Rv2C1;MfmuլY{3 TDrgzQ 0E"$O>%21֑xTOS9ĒGjbmN(\*!$G<,U1ݴ𽼽xswuK {oJPguzœ@E_vY;'60JA%m0 wVw9mUM;oƛʳp<$Q]]ѪeFnd{ + @aGGҮKJ{5Oח?sr# Hո&WWt$`rd+r"œ~!~`bvAᨃ5+@ҋ4"Qa hp`d v-aJ֋T«x d{h[a V M9O4e 1ۖ$d2LJk+ &jNJy"!;؉ǽ{8ŃTR E*;u~dgY.>0G2 1M,1{Xt4XXaoƦÂ}-sHU}]t])ŁLhWNnj7z'4-h52n7`X_I1>s^ZrY 0\L(AA/BYj⎱T& Fn-mIs˖1SԙZ[7o/+&HR[[,S~\O5Jz{jJYVz" pS ~uW h1j:.>}WՖ"ifWu)1 *_tj8vuM b15`p;Ծ6(q:$mr |QtKF5z76BLg!0Ћ W-8%dkr{f7͕ZXܙ^лMJem]37{}}P>#Sjsvt76=3'y;q@ wk{J Hʯ+:12LZ _W_j:}ghX\W9ˁ@V<#d"66(eƈ+ 9D2,g<ûeW{ YNxʹt@,c,@SӢ|V6N٤IEa7`;k% <2G.Ypxs{p>Æg&`xց?!qir@di0"{%wj#95A7hd_ʵBzfJ "7<pP4kQxɂzWݠFߵ>Z"HZ0W tf:χ%d4ī|p |.'ʲ=ׇ{uWo/ūWᷢ Cn\7[:t^n!'7Q3ҽ!j*A^mJ +,i[Ŗ:3,2$9X;7eK0aK@FiQI jB'r0sTݝ`˦^aːy-Cb[:ؖZ ThSL..ߚ_-KeD[<ŖOoKfim\& o'f5I6".Ɣl>FRh!+G1r,ڲmle%{Le.S[v5ݘxu-$وld~2*bb&:-5]\2+i endstream endobj 91 0 obj 4240 endobj 89 0 obj << /Type /Page /Parent 69 0 R /Resources 92 0 R /Contents 90 0 R /MediaBox [0 0 595 842] >> endobj 92 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 12 0 R >> /Font << /TT10 59 0 R /TT3 10 0 R /TT4 11 0 R /TT8 37 0 R /TT9 38 0 R /TT1 8 0 R /TT2 9 0 R >> >> endobj 94 0 obj << /Length 95 0 R /Filter /FlateDecode >> stream x\ku޿% 63A@vd~]CY2Uzs{+t}S廲a(}[?_T6%Vw\wk?m|ci }Ֆӡq<~z)\WS O8k#YSc5Xq*/_yMgGxYCg%dW8?Z>a5$~{!݇b^۳+9 A#M¾j~,v~Y[jeDFq_ui:CܺlZߝ7o{H̫p`ΐUW8X;{g_Ēe0VGua$&/7{]>G75ƣP;^KLЃW^W/=q}ȣ}(v5$M 2<:!ʇuݷ-UN|,'?ja̟qg.#-}hzW74U7սƀI}xQ>}9>ՖYD]qmϧx๻:^NAjX& ޡ[EJQ4}/w+n{+':Fl3B*Ӊ* 5o,>kz j%xp0vѼ# ?7z&z9RT*%sQADN ^vCtz;*MaNlǭbGD[I<M %]r>og"_ҎNK{^)-ъ$svB'W^/ 皊TP};2x[Ol Pz%@~UaKRr+⠯kcV/^OW`b,Z; rHіF~aIAeӷCoa=N>dlEC>^:iv0I$4MDw^bDJ̨);\E#!>RL#BGorˆy#'u(EEPDC\npOٯ.vhֹds! kĖY5k䂴  =(q<,$1qLedDEŴ%]Z2X+aU T?I€5w[q(WȜOD_)cH&V;Gk@H3OHj_ߜ~e#hBx&{=ZL2?Ңߜ>uJ[9ݩ$J@G+[P]WO3C]>_<<#`HZx0ic0a6&?bRGjpmVۆw{tCضA:Ξ Twʼx,}./ʪ@J0=eٹU='aq~A7vV㮚YLN SÞmKC!4M :^O/VYwxwj> ;n GLDT}.&lꫲ8|d * }?s3ڔpl_7M4x.m7@G]$M6G+CO:b =P5jf.u? ʿ5A;kPeM{D`,BŅWם@L CSXjFugbL>`a;!A<.HwKe 襙+"?=}Q.'YϊvG}כG58S?qb)7 K*4uWѮR إ:TkLj!TvLj|kJ mm ySt ^hv;Kϭ\aB*\X\z%:#cV " D9hQQ<#卵PLW\L>\n@BȔGbyL]ġȩ"s2FpcU}t|RpNcJ%5 K3`; {T^:{N@22+8|(ZW>iuͿ %zk]E">r,H `DY9χژi; |B( aH)gB%P;w6ZO\hD o.Kv 6{͂ dNNM4F@a:5sAyp9ݽh0Y,x{ѐLtbBalͬKMm -,:q؎d lӑ Wˆ Js%z{k˟:G${&wV+ݝ2GkȹVra٣{D^,;8XZ,G쉍\|S=r 0v)曏w^3e|~zgFo'tjVjA{"^ˉNǛXcVFF=sIM;!:PuVj!>~E+U~I~+126lLz_u8Ǧ< 8!p'?zwCM_ga B2.,H;6ߋŦ ]F7L{X\tO x{̺tg Oa܏fKEsҀ*WtXy^.Lm:f3mlk"s"lT͑V]z:C%̖Ȫ(k{=fDeXNE4؆Q5۹} Ϭr_)kv5/+4ҙD<һv[%Њ]ڴmL?ΒFZ9kϼD]:hœnyC~vZP[C$ц+l)Ԅme/ŧ'$A$f Ը+%P.+n4D"@ } ln搩Dg0aIW/cFKP6wqCϐ7p` +aolINO} BB_=L(8st8<6tc7>8_$[ʩ~&JyِN:es66s픻~!ݢln)Aϑ#n GȂ6 n9rd<\*tꍿoi<U d |JU.#**s t;i yaqgW13ͨ5S_ǖSYrlMl\liS dU)`C/6N!h+!ShipgUrP޵`/J4Mݬ\C|Z[C5_9S<rUGP"Sɭ&N!0c/ K] L0<xRO!bQР2qi@X] l0&k+g3>B/s9Ղ}ܻ߻63%dǫt s$2Fz%rr؇"(|GWJN6E1FW!E5rӢi9/Ze(]* >M'<<ҲuGhFzN;ƖyRR;BD'ho endstream endobj 95 0 obj 4828 endobj 93 0 obj << /Type /Page /Parent 69 0 R /Resources 96 0 R /Contents 94 0 R /MediaBox [0 0 595 842] >> endobj 96 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 12 0 R >> /Font << /TT7 36 0 R /TT3 10 0 R /TT4 11 0 R /TT1 8 0 R /TT2 9 0 R /TT8 37 0 R /TT9 38 0 R /TT10 59 0 R >> >> endobj 98 0 obj << /Length 99 0 R /Filter /FlateDecode >> stream x\[o~篘J6yhH("XRT+Żrb_o7sF.%;mj3~7C߉܋kJM܉(x;=w?Vx'51MU,iz1\Wcc߃ZP9T0r/~w!^|}q{q-!ʿŏW9/^XR\`mJ#0WW7vg> ]=^@J}[ Gvc3XMT8Xs_OZF[~u..~,4kg4j'-4Xt 2*B-ǺZB6F7Y~ŏFZe҅!-TMu'EAۏOWfFX9^W Z-B;Jo54TXdLd%,u}յm=psP—E-Ar9/p 7 n.f1#ntZܤ|, A=zRMDzNFe Ғ0Ú3⃅Ҟd9d4 ]9ݶF\xMcst|76rܺJ稦y?,SQ[Z/UG1 Qb b'hk+J-*Qnyb^COUY^0 |_Kn?I5Ό}\Dy䚶v9+`'2uJn0#+=h{O a$1q)Grƒ=K.H\'6!L Nf<3b[ae1|]>Bu<2^􄧵lauغbw/a+ʧr8D.`Ku1)) ] 1R0`DR9\5= ք1nr"gh].04ɨG2 [ דgf;(P5*:}Kў yV3JhS~.yw{u ssq{*εǵ0w)oVt?]J!wŭW8HdNev,'-tP(e3Iup*Eh@ZB6hD( "rit쪗cK}SQRB˞VFT5cr@-u:@ ҰSBtE4ZGH % `4qѣ),Ϫވ0a™<*$zJr%8i}wt yfQnwCF6E#i8洚$JE|J$:n'{Zsh-nQfD)/( VoD+PJqQ^o(D27 z )4yb8wȺ쬫x6 TJvDXj0&`L﬐Ĺ4 tSȦhbAJ}?Шo1p$3C4Ghc.J!./]F5J+~88vn=N|{k`..<{ #ѕuaxJd Jz`Gxƻ͗de\%H702D1Ɂ;RDۧDy $fyO+'<(".OfE-0232IlT ^TeOOi=+~,uKh<Y̖"]D(QQ֦BKaU'L*$Dlp J]w=Gb~퀖$jޓoΡmiɞ~'{٤&eAob <ν(I;U'L}Qte "HE]r(L?zwSMɏn7CHa<5^tv7xAa"V>9ꩄfYJF_ lpr. H'Bz-<6M QDTgnILrPNh'Xi1n~ lg)O̎ endstream endobj 99 0 obj 4446 endobj 97 0 obj << /Type /Page /Parent 69 0 R /Resources 100 0 R /Contents 98 0 R /MediaBox [0 0 595 842] >> endobj 100 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 12 0 R >> /Font << /TT10 59 0 R /TT3 10 0 R /TT4 11 0 R /TT8 37 0 R /TT9 38 0 R /TT1 8 0 R /TT2 9 0 R >> >> endobj 103 0 obj << /Length 104 0 R /Filter /FlateDecode >> stream x\n%q?O10Xz Ax޵yx(ei#JW}B"WuUu|_U_w>2 M?X5f;λ֮>-yjzn;ӲkwP)S}xs<~|j.䤿G~R )xi`9RJ?`L,V q֧G>p8!k%'O?R5 nJYHPn#!x/Y+&L&tAY(Ӿ=T+ aTdPFp#=V#aӆP@u,5(;Z\ Q( HdeqU k?5Q[WdϞ T5\|*'9SڑtPsE৅օuv/63[PJB)]:XG% %pi)L/mlg13-#  2Qh DuAb"4. QDB1n,\\}\g.#hV\ 5,}P!u-÷cZ#%HK̕fMCVtskeįt˲%J\T Mer_E($nw$na2LӮqR:frJoqyX_?!0ɿR]Aa90[|"^a@.Ӵ^r%>PLԹ 7oϮ#5^ijaDR)^ T'`o`EJNlʊXߙU y]Vb{T<͊ ;Fz v{h/=xFKBa}eJ~SY 5vj;`m]ݕ)!hfRI 19.f׆pf%w(J!.'5~/?lxR RE誙}?f+5`ՐD266VZa9CeZ例N{մN[ v3Tl̶HG YcDуbثzڥ!G7Ơm@cܞ`60  DD,#͚ĜG8`1(0& d)vM7`d8j ŶJ(J{N^3ɾdBѻh1łz:mWj?*x~wkSъ%ж%Me)zl ŭhEA,NkZ٬=I-|>R 7iAy"d8ږTI5? 8;<)t^¿9uVYE'OnG ,#ߚ`4Ab7 7q<~pXҍ*K ( `TkdM'z u2qONc(Slo)l7F0da@ۍI>MW_A,%>ݘ( Ҋ(c}J_d16z ļwzv6vء[4d=rډ'nE7syX߯IhQ2Z5'uzDŽ );5ưѹS;90ENZ:h,Y% JڨEX`njQ#{JQc+AB!T4P}=Wa qE4a}ʵD':a4 u)D>VarKrWSׁўb^lgWrQdN&6фZMԵBR|>-DemA|!U XhdӉ |QX?^΢fPGmQȷӣZ#SZnAdsLOx'200+ 3z b Mޗߨ'o]ll#oCLbL{l2Wf 95CziC/Yr@YWvR;`M{-r%K8Pu q݌wʏxa}IٿW#5.yTz\fc|™Hzc=+H `QR'{E2]U,lccwڀ159vMj>EEߒIK-O(Xʓ?PF*eko/{giHػQt'!j4;x8?Cn%u=B==~1K;^U X*|K[FBH zz܌ƱoZ`2d DHg^B`q[ZwS"CٕCzFoNe ^U1E\ S$޻J<G[w9nךQ݂#یx#pwܣ}LxU#0ܡgܻXpp/=$13*-Nypd9tލQ!=zAOdC9 luNy]ps #!y0E1}L[Z*e'?$uWC' K}O5&&rp'|IA A *wi3C/|oqӚo9od%RM޾d뎨K\I|KէET9V=* ް,Z,St S[a!J/NkEMff&3ܲOƶc~/M/.‰f1߭wͮK!(l-[_<]NFc'Xz ffTHY")"An,?H59f?54w~T=s4=u]a\@Q{AdE>zfE)ʜ4~=I4z \m ũqC}DmaOb+Ui6zX2/`g?tT;ˎT0os#Rr1Ngsgunavհ4Ɵl8Z&iՖjڗ$IOM6utrNhh5П`Jraގ0Hi{Ơl>k;ڡvm; $o1J>VY '}l,`dHY>~;JiuBSNT(xFQJ:"W j.8sJJXIGdXxq<,YN.;,lMS7wL 7&sHJ CE߶iC<.1X5T຿UdD3[)_Ȃ&ytWJf@[|]OŌ:1x-+fQ8GX}PMRIaHjxz j󺞚a,bnr^+b}!ͲXȏ/MVj |I(y%GtP 8 OQG&|PX 'Eiߪyw'r+a m^!>G^wϨ2w# rw`==D667&C(!0Xم|~31sF9BTjq5I&q~UA+8lA sRMebUȨDOc)M eJ߷mRi ;̦~"(8i;cY(dhU!q>FAn$X(ԟ\3 endstream endobj 104 0 obj 5485 endobj 101 0 obj << /Type /Page /Parent 102 0 R /Resources 105 0 R /Contents 103 0 R /MediaBox [0 0 595 842] >> endobj 105 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 12 0 R >> /Font << /TT3 10 0 R /TT4 11 0 R /TT1 8 0 R /TT2 9 0 R /TT8 37 0 R /TT9 38 0 R /TT10 59 0 R /TT11 106 0 R >> >> endobj 108 0 obj << /Length 109 0 R /Filter /FlateDecode >> stream x\ێu}WЎC 1`'$#rOIwtΌ2 WKV]U"ݒ0߫?ߗ <ߖ*_ӥ-o.ek`uWSۧow8]yZ橞RM}W-ǩ>Tt*o.[s 7?寮 ?տ_Ux݀W%hå q߮Jwr+ο4ڲȢF=EQUuywN|O'Nਜ਼$ 1X 2w0 Ls=.%MӀᛲ,?dQ?ރt9i]D:mC""gsakxpEz hB<ԥR rX1tX\X}ߜV|8=Ŗ  ٴ b) 3n <|n,u +-\9bh\2r.lh1 oBCFҩ/Zǵ2Ff1ԲeiK\ZFtLm2;-.{Oƺii$ga1QMs_o 5L@وƿ3o?pE@3 Y9mq6z@ߧ"J%r2†ybcpu3E!wDޟo%A*#w)K&c'-]20c1\dՎnc&zSWMs 9W}[PT8yGaݗ"`MM kd.w8'8{oB9ٛ ;Qn!)Um_K|T CX Q28Vq|&*#ÿں̀JJV nzD7EgAuV{&Xμɭ S5iV17 0DV䡪o]i !TV?r9^X?aZ\ o߱b:,z8ϐp1{{/V|!5fsLJ.iEᚴM袙PƇ8adUf?;j$UR:JH(6Yd'LC=͸)a'yn~lQ/o5r jF\ ٵ3vAKi`oGz(#nË:-Aсy@,fj`QP}Z!|հ/y^Hq *\3 {/ty߬p}?w|(u[YVtUКn?}wAP<H&cci}@KRPa8Jc8{{9&{WSe:67ǷnrФ~eDdoC(m l&:>n>(:N<ܛ;aB16Cwuw1“q6yY͟<{̇ )8I>ecL,N-gL*K=Ɯ()V)n;X9ps08̴Vo0%i:)W,:gaajA[p"3>Kp %EMz?z3J Yt}\U+ʯ6&4*ED";FQ滋 Z3r[psf^oJzU G>I՚DQS/ۙ_urdJC]53/'U;nՁX-Μ* f <}Jn궃Q;/ne_i<+.[XG.D6ޯ^a;\mWV{p3OVG5'*" fDP{Ds endstream endobj 109 0 obj 4711 endobj 107 0 obj << /Type /Page /Parent 102 0 R /Resources 110 0 R /Contents 108 0 R /MediaBox [0 0 595 842] >> endobj 110 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 12 0 R >> /Font << /TT3 10 0 R /TT4 11 0 R /TT1 8 0 R /TT2 9 0 R /TT8 37 0 R /TT9 38 0 R /TT10 59 0 R /TT11 106 0 R >> >> endobj 112 0 obj << /Length 113 0 R /Filter /FlateDecode >> stream x\[~_XHJ0%& HQ(B&_oIuwW5=g>>]][WK{j n[nܧ>4 5§]WY5U][s=?̞?sv7gnhSY&ʇgxQ/y|WDzv?kKWg;wWsRW\v]׳*\ z\%JFiˏE-V#TtcG*vetJ<uUuS_ڍDz3ۿ"ōF]DsEn1=yI#"d,Zq}ٴD)~ߎZ9łI 9 ii%RY+FK]7#}ǡ] cPVK%ߩ澟w1rGc(lv%Տ)x7Qj^K'J Xuգ(+}jJfwtUc3g%'߶-bo}3&w%wP=r¼H `BR)idG|d32.^<|u&FHzڒ'ĜEm WJ#cǵ-?hnbQ5W䢚¬!M?vg4r͖Ns55 7OLm H;#" z`SS;Jz0k4'DR}jrP~·BRڛXyI~Ur>MSRg\l t4%/1m HCDG^C=h| 6.ĕ~/AUC2v)8r^qEp~Acyl368 |.iV#h>2BH}g[-ȀrP%3^wP&zh ąA5Ԭ]|:(` Z-=>E\$$xZߓܖ{<"q@|y/06"B2d+$2@khĴs13s̔#w[q(aKVO cw G~|\A5 4z)LAGB x:{bmObzr潔`7PO:]8ư6n1l:ڷ#yU@f%' >kBڊmJHՌIEX2kK=p? 41Ǣۿ0L/J> d{ahizn.B׆YH4ft<Hr0T'W5( ƐCDʗbOaϨlJ8d3@灩|WN=K th6h1VmY4a.Rƃ<*1iNVHPY(QNBԀζ)M*9Ael%ejII>٢#(=E H`?Xlh Em@ej ['gS̅ BGD.Iê+}WY7i|{zƴ"z|WV('6fP`RҼDЄ?ѩBK` SH=SQj&b!N$3 x>XѼ h*f4y3XwPTa"8] UX~~\XZ13q_\70zB])#{i`(NiI u'{@7j3Ʊp0W©R4a TQm`Ez"a.pJ+o 3'(!Pb\mt9j U @S j70/@AP:}b2+,mR1@`Pf^RseMBu Ƣq iq$g`z#<ްT@ᎃdNbB#W .t79j7#| m@PݧWIⶃ71@pk|+:l8_G.Y%E͋Q%r%uks9] v@OgY߽".N+]n¨ "zHKe!#"2ȤlF?ŦC]2~J4)e$،^ޜ SjDli/LɆC g]uW6cBasllwW:W']w]^7%smu^-N(=Բ]6v>%9Q";-hjz@?7:r-ats=sM=ejr&'Lm!aaNN]Y|n!;0>JCx#skl99h*냊;#ڐd3 q܊@!|;I>|]'M,[&R}B=R8z JMarK9aZai1ONxS hD_ᦗlFy+_vaqD^$w ~-\U[O]J_aT!3i@.r&E.B!ǒ ;EY(f~t9 hB B%5 %s" %,r/`hDlKE6Q@SV[ٌB)L/!$@aGP7g~V=4?+, =1iQZ'$L.yEjTP#.T$LQotNeffl4yq4&(aNx"  tƟ8c,i7@hLyZFbFQw{BKm[[.x]P+'0|w_{sDZjsjXEh!z&]!E a$7TY`pjRUzkE"Rj*.+JFe&}TlK9*F2)Xj|ȇ3L tD)0Nf~vTcY'u0Q)LBoiQ6oW٣%;=*0_cy /[,}1#qREXB:d g,1  xPSZ⢹R&r{! Kxp^Ny񓧺x<\Kz /%ox('w\V_riPfm/$T}ͲEBk SЬD!/`?8@ɟJ40>8|ėG hcZ M“Q j'UaT@{DzbC]`%~Ln pkW%2ak$ʴC-9 kaM. 4WBo JPSD+mq }5(&!fYzS-[,^5EG.R~<=y%ʟo> endobj 114 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 12 0 R >> /Font << /TT8 37 0 R /TT9 38 0 R /TT3 10 0 R /TT4 11 0 R /TT1 8 0 R /TT2 9 0 R >> >> endobj 116 0 obj << /Length 117 0 R /Filter /FlateDecode >> stream x[ێܸ}WOfdݥ7;<X kt<ۗfcw۳v%E)Q`Z,尪X,jޛ_{Sݮ3c[Kyk\T(t747nMyxumQaWeL;E_er.kˡ&$'Vt}1Ͼ~0y7AhV+ Mʟ<ȮJR)raH7ze.H"ۅ#tU&? 2?dGy OiOX@軪}3 f4C3~,]c뮨v]9:3?03'Z0)j,vn$ %@eQe=/odyNo?47wo_e_5/D"Eڪ-{K2>]y.4k0E-łI,g6uc %5A[m;]je lMWMS3؊H}dq:'Pv*㕹@׃LƢ =zFywË\]~Z2['Ů*FJh#)\u.]%p&p `a#V xZݬ+*)uIzn'HWZ ߉3ZbHG2Sd90"s%}Q`%B;c(X.>$֩$D1PJ(I|2ZS"* &x4LHPJ= ̓md.s/N@oPj^ ]ܝ::lw ԭ#& P hbSPF_Ib}m |->Eάխh#)u6v,O~/+ +iA$:]`ce Z :yqR:4lY@DY8 ^rnZv!|S[t`P*IݎN2B- [f} "`NVhL%fBT vJ=sJ{%Ԓ\n hՁPF{@<:r*E)KW9c2 ! @4[ D@p~SN0.waZ*v$u+l&$]{18GmӠ5!^o++AzB/-6@o5iGv urpC{=$nn(!ҴSL}IDy&{p_W^cT͖=jJHQ;Zu=\Z$rP@m8Lq4P%!qğdܛC.7@mṯ}GM'_CR6J'4[ #1 ldn니1b<^-4s21L`%,ubM-uGmrQE*O(vͪ}Ü 9pٓ 8 :EQH@&v>Xr%)Kl @Th{2l|" X X0%N٫7b9z > JAݲ` x#B߱T(sfAc!x.!|maat ̰z8f#}ZMVUl5/dR&'bHSJsgҦt `š_Ld! %ׯ h niS-a])`` OP,OA\yQyoM /Y*Zs}&H`CQ[l.'w'\>}BNHwYQAo8Їzv͟e&zgA"Χd^[Bܖ<&o^zK(RdڦƐ~!][H?,fͱsrQ\3 ,ziƨ juu8?2#hq!2$ T?7y#*ity)s 4ٸo7V Zn@.=&x3#!Ɣ X> O3Ղj .[i;``U3ZX +辒+ 9R;iY.Gn9-f1!%0@, DicE0t@ߞRVʹzJ lh\}vvX%|d~]R~ _xB%vjZJ{5\KIO?~%f_wU~8`m$ @t ꉍFg|nX.,+ 12"P{baX"`Q(Amz]A2Aծ-ʊpP%^TG݀1] J􁛾zMv_W#fQ@xO~潑B~RWb)Xn8L6wfXG*RkXm[ ,_O0|?Nߨ/ endstream endobj 117 0 obj 3118 endobj 115 0 obj << /Type /Page /Parent 102 0 R /Resources 118 0 R /Contents 116 0 R /MediaBox [0 0 595 842] >> endobj 118 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 12 0 R >> /Font << /TT8 37 0 R /TT9 38 0 R /TT3 10 0 R /TT4 11 0 R /TT1 8 0 R /TT2 9 0 R >> >> endobj 120 0 obj << /Length 121 0 R /Filter /FlateDecode >> stream x\[o$G~_QhKq`6F)HB&cgg&M_o|uv$::V7ublkq؉{JlR4C1N=NnĵյE-.ʾD;E_e!еP)#o ]_ /ƾv/Aj/>^]bhhQOeI$//FazïX%#Ozc!7WHR]S])fCId,cbhƪbn^$$ЏE7@YeI oEUkY?Ũe~#Z :@c1-i)| ifsڼz0h7&C'}dn)m ~Ȉf/ߖ.|OL)ѺetE4lO"ږuԽb$Ӻ_MW3Kܥ*YVMȇ՝~A(#ot{}; X4ؔ=mђc#ͯ#POdYQI ij??wx:/~бmT}Q}t?UnA[ZӖz]'/zjyG| Vx(~#{aֶKTc@e"뮨*^ k0tCojƑ}b/MŽ</+P!rQSTV=b}[I,=(!B3BrlqJ$:?Lˉkixz]^YX]סGVp.0C1̡.z /<25hH, 'Hl(&HT en!=4Tn.Bq;A\}_my[I*D9lv}h)Q&m#K7]"]wRك2B/-֨cH$ 9FOj/Z-_5^QGEJqZi"quKvu$r,8*6fPi;l\Y[tPLsE%j0˿6 %Ocڎ #"dO. tbGCgTago-7 0"r*Z5U(0g ?8"- FeZ#b< !$ȖL+`HLb> kSJnBUrI U6 R fH.g>3Yq̤M~",'L9!`i&`d2Üa#P)"ɜlƎ=2t.Ci-]؍^`*~cNܘ*3XYlF$ 1K!f?e6ŜD P0I LBtU%:Ql.kgpYe$4cpgF9tϞG SK瀺(ƓL,&,|e0x/"8a2I +Vy䠗|6PCscU&Kb<@ޒ Tf0,⩈WITE V `'1%kUd@U9[V1' 5" *T)k! N FԉJ׌u6sЎ+iF }vKvfQE2ĵ=bf J܎CS,W<RDfZUU / VZUE C%ټ>Ub醂+%#hOCtpn?ElirW;:X=G9buH])}k{pEeVDο@G^8"(In/I`kF3R`ٲ`Oe'k-H EzOC̴B0+Ɋwe 㙾'b䪟9An>dE5}!>::l mHC#@S!XeBr6@¼0X&E)aє_q육cPCPKI饻.6W&T᮹X øe=}?۝x]N(R4Dv:3I2g5 Il ./kxHhD85uuC+y@!#(_l+Pɹ]ȃ,4HG&`oCJD=Jjz߃hmہ{"w[k%ak~G`nOg 9,Y:\j ?*N_X؋i?wb0wkjlL2ӉAxkҌڮ j\ 孔D}Zk0Ȕ<,],ږCRLf@\):Q3!ov/+6ХGYq :lBH"Q$, 3%zsj̳o:Cyҷ=a=MDDlV#qM T=o~Dۚ>[۪ffw>t!>O}[փi ͆$LGFI3W7;dRPPapyg~'ks:C5|,6T_G!O'Cg 'enhئ`A mV>0uIBQ>sc\' jߩsւ1J[}7(٦CNuN-IKʖ^0I^BK*H35 @ISKǀ0de5"Ʉ.qDlL W<;S%DlV})Pk܏:*hWh Y3BĐ#)V<xۇI1VjfD,$4]۫@lDpE-xE*nMOoǔ{ endstream endobj 121 0 obj 4447 endobj 119 0 obj << /Type /Page /Parent 102 0 R /Resources 122 0 R /Contents 120 0 R /MediaBox [0 0 595 842] >> endobj 122 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 12 0 R >> /Font << /TT7 36 0 R /TT3 10 0 R /TT4 11 0 R /TT8 37 0 R /TT9 38 0 R /TT1 8 0 R /TT2 9 0 R >> >> endobj 124 0 obj << /Length 125 0 R /Filter /FlateDecode >> stream x[KsϯCq8Mq)'SR˵^Q"#.)R2S*%G`G*ЏfӨ.pQ7cGU{Gwm>ڬN.sCRu2vڼ#*ݔruMw%1?%5֒ihY߶oC4hl|noUSU(},''d)q/r? cJɞsPO._w닧ëʰ%lTI/D]*k|c}grpVtMex9ꜹ%ڋ|YE^m%G=>RduU]c&yD  ТȻG$A-#iYՔ}Y6 ׹ELYib a[MYYO2nʍQL]|,N ¦mBo< W7/nPZFj=̼h,o(`#nt۬*o5eSPsܧ,7}NH!|'()aR#!:1[i)g-cbS4h)v3ʀe&מ+,eżizr skq`'k;dA38GܖvBrh]m1.%\|JmQsDl=rBӎmՐG3$FjWNS)fGݯ[J %^ IjӵNp?~x%%ͩPa㏨Wu.ޯ+W$qcpO wE!wid.$yOû=i7ܛ`Q)9# Y,JdAfcdጭ>0Qu7142PEֲ ~/ bczI dp@&iD$F-x(*e1,Hx9Uju>QX__?=dMN?n%иsm4F3[<9[6TOO On./n8wtaa&C˹0zk1&E=x;w^âC>TODVݛɞ f#3b0L NF! uHP倆r;^]Ud F A%&ƌHI/7O"]ՄxUfEavVmė= ضop~S&EevrAf$qs%ƛ4OUO zܠi!*H\09q6Gi!&BH 0si%$H#A%t;߲sGÏZ M.~eS+䪂GiaF5AP/m׋岠FL{S!Z çsgzDB^^,@!q.. Q"8V3 @弄8,ƐzrH:ȀGz{p2z TV,W#YjV~N? W9iW 00[h.Iv8{]{O%`%QEQ!&*,$fQmR]FE7Jz!9 契Շ)V"v.EVۍ'/1OfSa5CDh`3}b9bYXNA"O#ѫߒ^z(/4Rx{%@% CF' 痷WootҰqiP!zѓ]xƐ #G_HZ~0s vv$>+jӪ7\zghL5 \10q/%X%W;.O\eēגL$L 턦_FE!fA #' 2 f!f]G4 .MyS_i!_/W$E^^jdTKz!^P~2d@H?GV%j u)|ZgV_S/rNz6p- rHX Fَ<()|dx9oS ""ɿ ᱹ 3Dt1DI/fr?{2D5A_{? dO#}TR/k endstream endobj 125 0 obj 3504 endobj 123 0 obj << /Type /Page /Parent 102 0 R /Resources 126 0 R /Contents 124 0 R /MediaBox [0 0 595 842] >> endobj 126 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 12 0 R >> /Font << /TT3 10 0 R /TT4 11 0 R /TT1 8 0 R /TT2 9 0 R /TT8 37 0 R /TT9 38 0 R /TT7 36 0 R >> >> endobj 128 0 obj << /Length 129 0 R /Filter /FlateDecode >> stream x\[~篘b rz`/"*c+r H dYϓ,@B#@W2'\cR^ذ\@0]̇@bq@F&dfWfhDh2S<P`f# [N M궤rO l(dLYܗTO4D̖HuoBB 8FW'lXY%aɄ].0f9t~9;aGTVI(2IخJRle.s=wm}ҘuS_5c}}⻯=̂/q'KT!cy89n{J&Rd] +1GX {lGnZC3n6kS<ޯfMMtH<ݮ7ziBCJL#RxZq OaGmKY/gM}ܼ <[i $ޜ&TN!Z" {i?Hvim>֏E?Hд訏i"+~GȨ H5$ PoU?,swwfe|D&ɉM&??Оޛڬfu<4T^t)^2(Gx EE[eա!"FViqӘ6qC|v.],Ǵ9a$F6O_a#fG9 e5mݬO%lRΫF;fw2sK{%Ծ>32lׇ= &@oEM׌SqS8ؓtΆuVZ^-B .RPx7J6֌֮GG7t|v6KTR2 ݎĮt!ccaw{ ;l Ǽo?t ^'wJQGK%lԍ=fygeZ)oDqD>Bt;ݛ8c?dW#V! 3q7J[ Α6Zr0OZrF=B0 5;R?{܄sYj!4/\a,y2k֎@p·%{ÉE2<2\[$g;†Yp SFX);xtО$YF7u0hZigo׭~D$79SA:cĮ_Hu8 /< ɿo" ^2XR,]^F} ʬC>j:e\ Vl*#21.!x @@>XAn7>aad$ )^c!*GhLS;wfAF˔Ku0ыh6.M3m{ʴ>푼/'KJ-Iq%lfAwz)a8Ŧm='ٕ{K;/@꣈Y6<9$RHRUnNi[EiA Hbk L -V^B"/A-2J Q}DJuͨ.g H\-NCC")ʜ0_ɺzl@|xdDy8Thzz}$g2O5]6C]I,7B]J`Fzm2BAEEK,6/XL_0%9YAjefCHÓ+A@GL,@a^0Tc/A(#mVBI/yJo !A C:dP V6,9ҕ A[w3=}':\Ҟp*w{t"z) 'R0"_yd6oKQ 9QTB *xCX FNe4{(v**X{7=Q` !`voqA GoS@Qۤ|[hSsEm`$Kb)6nӹ8ҧR"lM&+ C[<&DE)|Ԉ$U:CmӒ.R؟u]M8FK*cO$@*],e+ q&ÅRXSIݞB߲ƥGER]{ݵ#>8%ڸU7YK)2AxBZ1iY!;/#/2kcM_h;_#}" X&t 鄃.= r2KF~7^v *yW@b~a>HOL]׉¼&a=^x9@xSxHmBxlQoruFr *p#d Aݔceu4^a>B -ӑL2zExXN0cZP{/kAᘟR)2hq$iLJtӷӔJXj ;*Ct+gt"G&:ca8Uؾu>C] *SgnvpNR4AO6.HG`҃1FNr"η f)2;:@ɓ,FF8 b"R)yI?wz2zN6OSGeɤNqKz%;};`CzTROҴew%X&u<ыɝs0~kFȖ9b#2RTLƋoxL#CZl.XF=[r4_ǻ]ԫ#7yhBG!^E[5_<nFd]XJMt$:R9() GϚ> (FtNp"8xJ8L{3(< }BaIvi?2 endstream endobj 129 0 obj 4388 endobj 127 0 obj << /Type /Page /Parent 102 0 R /Resources 130 0 R /Contents 128 0 R /MediaBox [0 0 595 842] >> endobj 130 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 12 0 R >> /Font << /TT12 131 0 R /TT3 10 0 R /TT4 11 0 R /TT8 37 0 R /TT9 38 0 R /TT1 8 0 R /TT2 9 0 R >> >> endobj 133 0 obj << /Length 134 0 R /Filter /FlateDecode >> stream x\nWVnfc@ %"? ,iԌ$0ߒS{gDb]UU]zUTݺSC[ݥSgWjW`rޭy*խY}]+kZuQZC_ PVcerU)w@)T+싡WjU8W 9ߪsMyV o;NK9Q 0O_ =V|/z!cw!?ݞ?CZ] 7.VB9de o_ժuEY:ߨjy8Q?YBV_UC1$ UeV^<$a,Z6˿~ӃyJj'CV^y7O2R:Ա \k.UBm_4UYUZwgnnC6/¶(km,)Q,RӪ77F2Ȋ 1,JhyH>qʱ|8YVf+8>-mg`1,?{Zqy0ّY! Ӫ\ yP޾wژ)lfju?MC`3ӨNj{p݉Q0Lp` ?xJ BJG 5y< 2@X~hpe ̭rr'L:ۘez$-)jCݶ}"{Nvr&6(".1> e r68NS#MQ éAp^8R¾ ˥}xϝƻT'˩HNiJ.d=˩|Qaӳ\,V1d|e@hNpd#6{}y7H,\vcd“ySs̈́hG!TK;>#f)H-"Fgx ]ʽ#т—N2gJ&F㾱rxhC{wޗ f|,_`4%$E |rHD!1T '<CࢉTmȞ2tQe:Dҗ "'}ܫJ{bs}>xTH i GUWu4IghWWp62tOw]Рrl94e: ~@)zT ' FQ6&|@.gWg?\ζFHwG}9?1fthY@g*g.uh[-,jS)fH󦁊}ӷLÅX Ĺhg9}x9cb 0mꏆ!$yA&zuT+ttWE>ӞQ_M22(4bw8e-N|HJ9&cԹ h26yO@ "Ij^_]/cT}XDq:sr.6{ %$ UDf l~-.L|Y8D-~P0L <}?wo[,35+ԑW|V/^ XDI/a\NH ۫x6?CV*Rۆ ]qG߽yszp~; bA0*)ݾ>.p nS?=)l L9?;'%)lam۴r?KŴ*C7;8,?lPXr."}uNjK䪺ssir[rp]8L0HɛdאH\)$CP ,B? 5VlQl 飀N=/^}@g74nʴm~RCǝ"膎mEXYz}V'bu'љXĦ/innX !*IZTE Nn B*Oi a㫓LTb)hpDsL ޾| 8 o>ꪛ}xQqЊw/Z}1:ki:b6Q^rp sMOUZc_y#y*[Qmg^fNXљ9gxd,o5~NT/KCL޼ n(p_K!Rc|t.wν`32`]Ix@ip{>( 2䍼qU^!FoC8aed?u#FliJV[#a6ad\Bn/zfYgNGfB/ ΅ľԑV569c`+hNhLNScIE#̈́"ǝ:”y~ =a+"dX4PBg;N9<*wuqg+ Tn}HeHЯ@s.Ure&}!]g%!jorrYC6M=.*ܟ-pfXrԦn.'(j(&β3೴thChtܽ6#41DȺwosd+O꽯>ec"#:r~U-u=M eRUST- l%6',s)0YxM;*?o2MD ||WX'~z*M ji GZ)Q'>xǠϊ9&Zj]ԩlR[xqש>SȊξDF5vp6 4ˉrOqX,T*B]vs'|>E"bG_<1rMHF-u ԓFU'pHekOXV/:.zR&pI ȹgk qz= TIve..18"rYEd!#8#$o:0Fv`P`8 ؆tӷSII Ʊ $"Ʃui?lH\LR' d $A*䉳J;l +bvoԔV35x(pΚ=qg*l P"V`T)ҷPh endstream endobj 134 0 obj 4112 endobj 132 0 obj << /Type /Page /Parent 102 0 R /Resources 135 0 R /Contents 133 0 R /MediaBox [0 0 595 842] >> endobj 135 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 12 0 R >> /Font << /TT8 37 0 R /TT9 38 0 R /TT10 59 0 R /TT11 106 0 R /TT5 30 0 R /TT6 31 0 R /TT3 10 0 R /TT4 11 0 R /TT1 8 0 R /TT2 9 0 R /TT13 136 0 R >> >> endobj 139 0 obj << /Length 140 0 R /Filter /FlateDecode >> stream x\o߿} ~puM(PRV;ٱPk?7{'GW|pfHjoz5u]wZmJ-}aFoݵ}յ}]QWVU7MUFuP HP9B>6iH0jQmoJ!tߨ+UL-M*_~V<":#gʍ/iČiU?];P ԏshVCP>h1VcNjl/eXp9˽z/v3u/G^]ͭ:lZrOh6j-b?Nu4@D9=8Z?]F!\4UuG#TSo/?Y|$ &T8x7}7}=Y? p`r;҄`Tꡊ9&{ga%[n|+Ydh{CcOإxNZjr.$gA6+Vϗ^++F"Uȟ;lbاK B 2zT _UḰ@L7@Ag1?by83ukTy[fk x.?Vs'uc14 *g+g}_OUB􃐮؆ z(}j?Q>Ћaw@W?1B?#4Ӕ>ްc:L ӌx,Yn2y>(*2{ iFi=ؑ='<xfY#"F(|QޤU(:U))$_yV ԲOTB"LI^6@ZoAq-Jeԍcn vQB !3OLHE q:>l &UxODpF`@0C@y kof>HoɢbrX2mFwH/{SIgaw@W$[[Vb;دIHFN}ѭI%n T@yM(`!B5Xa98$`[iM] Δ-/җϵ @u}vR9#Tf ╝cG ^5M[Ś L5#7q(&,Jsi͗GI!S "qU`qXR%pu!007f~ ]kM/TJ]~ܽ~ n{9IttM}M]|!!. ycu: NOUo|mV=\DE˩7U5'+SSQyl9t-f<5%a8o+54g8+M͉B=ʊ*4ѣl2ZW|F4]è=FtmFA:;EaYG,5I̍e`0 VYkݶvM#u$9riQDMiS@7:ma *^睢Ϝ)2X9r6 kݽBI ;[R^5N.wXT"7t" e{,#%S^Yzf VUn!ecqF'v R:.)a*r0hC 3&ho<(;c?7 (0nș,& rYby(c{ #k}x)X$0= _mMxL\˭6Ӫ.BNI2/ҫf#rܴ`yEHdZG:d` Hʙxr}\ڐ6 QrIΕ=RͪIYJ(d\w5"骍mjlCʶF9dc6B`~?0FD6IgDFk>'2"bĺI ȕ| "2`uQvL*B^`qS4vxzBA#I2$HƸ"eǘ:8CM0I[]Q0-!sb@:4罚(c,I&"z)¨>P%HŰn&C~WaZLu5-@y,ldΗĂHh}UǎNzas#79oT%ȫxPP"&䢄 1#I=KGw5튏U%B}$EoК)_TDnvrp}{AYXf\ZM=y;irA,~JuowCtꄠGꌜN=9O(9GAcP(cY>9v2Ik[:}w vF-׾7-8Wf;dX$_/mT-3 c7{4w8pHA &4hGnu#Ńa1M줪eY`[-nVp(IO#+:tbrLXrPB.XlJ㉳j1ks5V)\s:G,!1Kx.fWqׄJ  ,svWt )=WEyD1daY=AU ,YGJA(i!rH(q>t^GSr9 w[~EnvWP [麗ҏ4,2([G@ďx@$}FT(SU)6nv~\=]ݠ+jJ\2Z(J8pęG*f7}wa&QA}NK NB&whriCik˫~fɛզksu(sFڢ++x؏3% Dvֆ̪xv`Pg0nzLt!!QII <\P@ `hg[5kO-Ijd&T}uwkbX 5nH 8{LXc!uS+*+LJiZA@~a4[QC`U;^L4[ ;x/4[OVp>-)S14g=7oim@~m]isL<9 ]js/qo袊#菂@LIc>YV /ĝ+)W^UI}UtCWB J:PD6m’R wU]xaYwLR9K5n8m&s$ +kxK14q +c.t]~CHeͅLb %GWoV8o F}aJ# D9 aT|37]9pƞNP.N\in)Ӓ#I Y R2P|H2 J,eH P |> endobj 141 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 12 0 R >> /Font << /TT10 59 0 R /TT11 106 0 R /TT5 30 0 R /TT6 31 0 R /TT8 37 0 R /TT9 38 0 R /TT1 8 0 R /TT2 9 0 R >> >> endobj 143 0 obj << /Length 144 0 R /Filter /FlateDecode >> stream x\YF~pDxuD0YF:B5&0e$yo]6Έ Wٷ:UvhMSWeHKbfvuvTvy4}baM^PE iB.m(@m(+Ӷ{Mv;IK3I.srb=yfG?nLF[fL Y̽p${#_8u~-u޵eʻ /MWD"2v,D86y=p\9_! 8~dZ6owCނB񎜂?}&DA7f\JDg$!r o\Q9~9EbJ_b,3 Xbb-q@KTm嬪DVvCq5eo6l|VW3qJ>22$V۝|sEW<<څՙeM&F ZRoɬI ufO5AQu$g<*L\K,pt]^}CRi&VJU8 v+I -#b@e0}gR53HsF{N I&Il \-d(ݜN[9mxRE 1ct@`v74OSԽ^W:ë]|d*3r]CFpe (=`"6; ̇Kxq%lZ-a ʥ@kF4> endobj 145 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 12 0 R >> /Font << /TT8 37 0 R /TT9 38 0 R /TT5 30 0 R /TT6 31 0 R /TT1 8 0 R /TT2 9 0 R >> >> endobj 147 0 obj << /Length 148 0 R /Filter /FlateDecode >> stream xVn0+H2$ERRҢ-TEQ$9SrgGH=,'6 ,3=2h3ow";UطlF%[Me4W ksҙV@IȂFTL$S`ZYRz S(j ]R=4"f(E1(EL|ɭTs?ڜko8kk7`ѣ K˘@ mMA E~ ) 5: @j-6u!?(c5̏@΢b1ܘu4RWщڶbkmu661 ^@K ԕ5 5n۪tDZ@vւ-㿛[o=߶Z.x}X?fP,mz?} kUױcLQ ; o]!Cpy*UED惾8M7/}5 l8ТV uU5x l S {^0ӓVgOv 苽O<5Uu?+!kLCvGQ"Vי(osb5"]sUhݽ5N xٯ*}_KϳuKս7_ endstream endobj 148 0 obj 910 endobj 146 0 obj << /Type /Page /Parent 138 0 R /Resources 149 0 R /Contents 147 0 R /MediaBox [0 0 595 842] >> endobj 149 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 12 0 R >> /Font << /TT8 37 0 R /TT9 38 0 R /TT5 30 0 R /TT6 31 0 R /TT1 8 0 R /TT2 9 0 R >> >> endobj 3 0 obj << /Type /Pages /Parent 150 0 R /Count 8 /Kids [ 2 0 R 26 0 R 32 0 R 39 0 R 43 0 R 47 0 R 51 0 R 55 0 R ] >> endobj 69 0 obj << /Type /Pages /Parent 150 0 R /Count 8 /Kids [ 68 0 R 73 0 R 77 0 R 81 0 R 85 0 R 89 0 R 93 0 R 97 0 R ] >> endobj 102 0 obj << /Type /Pages /Parent 150 0 R /Count 8 /Kids [ 101 0 R 107 0 R 111 0 R 115 0 R 119 0 R 123 0 R 127 0 R 132 0 R ] >> endobj 138 0 obj << /Type /Pages /Parent 150 0 R /Count 3 /Kids [ 137 0 R 142 0 R 146 0 R ] >> endobj 150 0 obj << /Type /Pages /MediaBox [0 0 595 842] /Count 27 /Kids [ 3 0 R 69 0 R 102 0 R 138 0 R ] >> endobj 151 0 obj << /Type /Catalog /Pages 150 0 R /Version /1.4 >> endobj 16 0 obj << /A 152 0 R /Border [ 0 0 0 ] /Type /Annot /Subtype /Link /Rect [56.6875 410.625 209.3125 426.625] >> endobj 152 0 obj << /Type /Action /S /URI /URI 153 0 R >> endobj 153 0 obj (mailto:vmalvarez@virustotal.com) endobj 30 0 obj << /Type /Font /Subtype /TrueType /BaseFont /QNANFG+Helvetica-BoldOblique /FontDescriptor 154 0 R /Encoding /MacRomanEncoding /FirstChar 32 /LastChar 222 /Widths [ 278 0 474 0 0 0 0 0 0 0 0 0 0 333 278 0 556 556 556 556 556 556 556 556 556 556 0 0 0 0 0 0 0 722 0 722 0 667 611 0 722 278 0 0 0 833 0 0 667 0 722 667 611 722 0 944 0 0 0 0 0 0 0 0 0 556 611 556 611 556 333 611 611 278 0 0 278 889 611 611 611 0 389 556 333 611 556 778 556 556 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 611 ] >> endobj 154 0 obj << /Type /FontDescriptor /FontName /QNANFG+Helvetica-BoldOblique /Flags 96 /FontBBox [-1001 -481 1589 1175] /ItalicAngle -6 /Ascent 770 /Descent -230 /CapHeight 720 /StemV 149 /XHeight 540 /StemH 124 /AvgWidth -479 /MaxWidth 1500 /FontFile2 155 0 R >> endobj 155 0 obj << /Length 156 0 R /Length1 16252 /Filter /FlateDecode >> stream x{ xSU9wI}i4@)iiK,- mi Kp3 /@_pQAQ\Qu;6i=<<_sv۽Y~mćtT64'gl!BM8m^r2Ooi2!|ӢS176(I?ڜ6L(c: m;qk,Z:O= 7ݡOalXҴ->cѾtryH[[i# A-? ~i&e?}4ׯ{otBz'y+?J ޯxxF$%MqyWte?l*$}Ԥ$I$ "8!0=A2I"11v=Hڐ8 H%!^#C! >FJW//)$t,V<Ń Wi: J->ck˓ri_'/t,k߯_l7Bj1/6kl4G?]_?%M}[GoQQ>,c,j'*+IJ-Azy>O}r>|(F{<1\-FkfK8DL$Iч'gGν剹q6+K~oBy:@ 0Fk,Lm6E1(m.Py/BUx!D,!"ȧMȓ-%_Di!k h'4*뎟Ť'ZDHߝQXfN\֐7Y#II upDĊd#z @?|81T!SU\7L#ؠxBw ϡ%#pl&brف_j#1h#;ht-wcqgFPʃ3I[h;}4kv)ÙS9A!%SB t>>n5;]2V$+=uCX;,!:ps;&ǀzRp+N5t}9z~A/ Nϙ\[m^z._ί`apߏ4q8BS}PXJslu\BI(1$BP|\In%E҃o#-`u\%?Bb#5BOh% n{~`ً}ڇD#nw'#Ǜ7|_W:^8AEX%t ;'8q S_ī51Z^[OFݡ@>*ni dZKOC{H!L~S+2/ qxGdF";K-$M#B11G@bINJL3b}LȈА?_o/OV# PVbFC$- i'^V2i5.(FJJ&q+mjVΨ+-2Rtj/m4yXy5t𩧠r`J|UdVhj+Q[X)z?&C5]Й&uF=aUJ̵[ژ:dQcl /u4Ģ6QYM}6FJ ވ)L`9 RS1lDa2.Cפ.C *%-vՏêRSgZcptv\ӻqS#8idjQg,ZJt(:o}=[98g$xrDaQ'l8l%h2zl(!=7e8k88BgY8w{Ю@ۈuX76iƀ5#viù0TO\$#{)4ňn@ځ\C@ᑌ:8|O+}y~ AH ~HzUZ8@IHr Hƈ I!O@ 5FJoJ][>U>}C}~(Egb jRD(ZRh1h86'\FMIcqQjCӮLL`/00$v loGڄQs:Jlq$u6BFF!.DT)OlB`7}5 {ڟ@c7}@ ߹Pa9Rd䍯qcG* L;5M1 &ʂ[o3D^\|/Ett9Ή^>~zڏ]KBۈ?ױkEZi>ÈȌ 7jxM 7s܈ސ]*Y,]2u 8N5ҏ/=,Iћ*=ŰbX97hsƼtCpE:-{;(?(!z-fDؗ0L z@P!SѠ\̉Zֈ1+=wsϦgO$!F^$5}q6-vg׮̭ݯLJ?Ai}薥t,7/ߐ? 6Z IJM &F&ipgw$4 iHLM'M(e6Ӧ@Up^£6L*jG̥gtA9fge?é)if'ֻק=pۃ*Srɣύ#]?}J:^lہU :pB76ΗĺNè(F/Ȏh5Hs&bT[^>KiO+6^:7*ĖIЏ>9lH'3g kYVplYP>T&2r`9\]ƍa7~x8֯#DZȇsnU{[񎛗.[Rk]\ezmSSynqE(|'\ǸS AvӮ0lD(=~!~ #I1cv \0aC: [v?V3k;!Q0*'miJl텳Yt%ȚI #-+>zVV*uဥg2#3^D‡WmM<|=?xV,>_2jh]|&DFK<؄ ĵy# 7~K/<+t qނx_,Gue:P2dNZ $yPİv0n'r>B0Ǿb'd^p6bSMLLW)ЬjS*FNҲKZ!JF&dIi%~db?qY ڗӽ |x0r.Dg q;hh t0>3]utu89NK|w8da̷{?..2% ;&3=?P?yGRI`z]SS  9{5TQSIt+j ҅TxkxD҉vKnQie˚ţJ}L>,j'H6)[%cq@YIP ^Ji0#؅6c ao0'(‚Ƙ% $ff>',TOCh #mLœ6E}裊ӓi DB-7߾+00aO\"VBD:hͺ!<}ĄӨq?#x޼ q^;)}O_0~XkXW~ [+b&A1':5g@!O}R4O<*MQK>}8+ۧưTwڧ&EPw(5r̗h !1[mY==i0.;lqy7߬ fc8leE@w!jo w@&7 sg>?;Iqh hR,v ->(>n6<Ϸ'JgE]]tw ~~?gHq煓lİUjv`̘D8f=l&TL rQֆlPlPlP9V`"?wRB_ ]9qI`)0n(H gb oL?aUUq޾U ¥+ [i;L#(B'pڶ>fLyq.0 ?,jRѢzENΊ'&ylgIߏѐr|&"{â UNsD2&1`e X#PZ8pF` 7j-EIs&b`˒KxaҲɳn[z$7G#bf޽In$*7Gצ$fI'+˧lRqf[A)t),s,DFV! AU¯p@ZN`{ޠ𖕇`[ $j(o~.7-ŶnNrs5-~QIco<,]wLڰv^$4.}q^| 2uR7,RC 'N>/Gً2Rp@"`SrfLQ? G',J2,",Ki Bj^.^Z~Xv-}Տ*WxqMutw4ZfIޯ׎:y xЈ:\XZP ,06/H s( >'R`EFf4qfL̦X L?nۑ!YuŦXj2,}g)s?w-Ί-2Z4Ftf/% ?,Lj\=҇0#08 {/jC6]6oZV42f3YaH<}zSzJ>_ܤ+Q)⩯x~PF7^*n!tX,ŞAe+PuNLgSDM~"HMjIH0 %Bx?kBu8 '1+o#CzY͸Tklf>4,W,=Gp2Ls zظd۬ZM4Ґs7>%=4 _sr//wކ''柯yzKŒsGS=;7v MѲ2SM>G-.N>ޟ7%:vf6QWT6' =e=Ajn`TrTA usP`[Y-] vކmqm˙}G^;c7J6x-X9IK;1ql)swsgp 4dؔ:}zZ]<1lͮlLKSu6!mePMOs*7㊷hX BcΪP Gs|;L~Ib'_y{,6fUQw3sd r"^$u$"pW<!_0X81`P#Nٙbm%>իog/OegDʖvqݻwHsoNgQ'C}nPGPkN3]rf=ʃRH0+tD@DTC.!ȿuF"d$jjirL|#鑉5U6DMuCה'Ƭh@qK~oݴ;^f{ҟz]d..^}jb$ %멄z4`;zJ'suN sY2'À^%}TUt@;dWX"]'y 9kP pXh!at1,P`"?֋@a$dh߀@˕R逅LLx/OK GhχI[ܠS%"M~qDgO1geeDDK/-s c$d%ΨZ>'7~qnsJA1͘_mX!=+Ӣ EC˲_po$uf#[g!CE4;{o,h ą/>E33G&)}ON͜=!J,Cm0RS3$%ze""%{/j ĤH-r Cnлl#+|722qPl_:gdue7՝bVPAꋍI,=^{=abn`׳P$x,V'%O({U(g<_zd}/J'`kZ[YMoa^יf ɶI;V{,@yC*hܯ}_ % xE{P'*n >sEVس VVzΣ c:s}O$IzvIp8-_C'JPi !yu!'* zA,bgF>#C3,^bui1t?c8E­xsCF<#8=P#'!.Qhcvl=nΥL~y+bo;IW%nASjwT8kg*uN`lfE8J5,!xœ|_5,f*}0O827<=7!C2GS8I/& w#GcH(<=X^Y)!kwI!8%BТ`8P%(ԙx닽 d4KA8dV-M'kN}j,I4'9䈼8gD&3M+R޺uyMiKLo^Öt.@ U4`{Z &f(@ XXxp."%f(@ XXxp."P?>Ǻ/!移dt蹬'2vhq8m6w'Kr_InnJq۸m\66Fnyn]v&qxxxۘ=AuՏnvnennnwWWW endstream endobj 156 0 obj 9235 endobj 31 0 obj << /Type /Font /Subtype /TrueType /BaseFont /CEOPPQ+Helvetica-BoldOblique /FontDescriptor 157 0 R /ToUnicode 158 0 R /FirstChar 33 /LastChar 33 /Widths [ 278 ] >> endobj 158 0 obj << /Length 159 0 R /Filter /FlateDecode >> stream x]j0D= gc():EAk࿯zAz3gHJ` X gux%mU&*a[@mWF$\h '} kwD:rċAO>S/[F8<*Dc!'it4&U$j~O=?c endstream endobj 159 0 obj 207 endobj 157 0 obj << /Type /FontDescriptor /FontName /CEOPPQ+Helvetica-BoldOblique /Flags 68 /FontBBox [-1001 -481 1589 1175] /ItalicAngle -6 /Ascent 770 /Descent -230 /CapHeight 720 /StemV 149 /XHeight 540 /StemH 124 /AvgWidth -479 /MaxWidth 1500 /FontFile2 160 0 R >> endobj 160 0 obj << /Length 161 0 R /Length1 5260 /Filter /FlateDecode >> stream xX pU_s 09gr 2!N209:d0afY0r2+)wJ 3A`))UW(WZeYv-UHz3 eQZ~^>/X4:WvitF^]bT՝wuDuc@X=hom 84 \֎z u1S:çkh|*?sݽ]1=eN=X<p^ hezl%aY ?`ԏx9<$͞K8r9;.ǨS$KKo߬Ч& 7 Ag   Ns. GϜNbhOx"::T:$ 'f?v1+;^OM74ػg wPr%w_jRzDtu ojn2TzK9-:U]'aۿBur[ |wU͘\⹪ܿMNx7C9g9|Z?rV}Oa:37\:J!؈D30$| # |{vxn82&< j'b9<л^}SQ-=I!f2CX)~KЋc' ~C| $,>S1clCTB$s;&p Kn5~P1ۗe;#3lL-f, &Mf3< pErr?7㎩<_ ~RJI5r2vs F> x>4r Vo'%dYO"sUs~VeS?TB7C,IJ}lA6~x ўĒ@Ydi@n~Ezc&ow.g1&f 3&b7C;[ a99.>SW~SݡL`\|ܔt [p&!gO/B%@!/,\bu2xH-"l'!{AD2#r I#dnG6{1DNggXͭB.i._7AmoYo=ۣ;@gҏ#xWNdglV\gu?<tpV_߲<ʔ/Fᢺ ybvRߒtsGj +?eJ-p93#=4mԔIn8!hxe8R_T %UU9.e+"*("@טH#W_)G#x$IݒwIb4z;3Z{ޡ'bbJewkw9dPFī t`*p߅ V%[I>(ZەaT4KM H${;΋6e{D&?mVz6S?͑lWI.eo6^iT[e Tdv$~A^a>B"8 B_#*F\j #tw4Mq:MXAgƨvsǾ@Y]b͘@)8B><| T( .%֦>#ꊁ[ ҵGV8$3+XK fْu/!ՆOVJ[j%{uHs⻨:FG}n3]0<F@1(QWz^W"|H:.!Wa8RDL߹g!yxzq_(DǬJe(ѻ.9f GH,ɂ|9, |6÷qcD{pubxx.H01ϧ 8a q#Hіj ]'pŸvőa؍]1 W]qVDXc:1d< /5qc^k(Þpp}7l@˯+mbG:abR  އ{vo̷"|k4<A -sX}|BD:3;rz3 > endobj 162 0 obj << /Type /FontDescriptor /FontName /XKIKGG+Helvetica-Bold /Flags 32 /FontBBox [-1018 -481 1436 1159] /ItalicAngle 0 /Ascent 770 /Descent -230 /CapHeight 720 /StemV 149 /XHeight 532 /StemH 124 /AvgWidth 479 /MaxWidth 1500 /FontFile2 163 0 R >> endobj 163 0 obj << /Length 164 0 R /Length1 17372 /Filter /FlateDecode >> stream x| tTEp[_5Kw!GȆ!$&AbM"3"c|; 80Q(  9~Ru[U/҂4Ѩɿ{bjfon͉;c+RfS״0?RVAHyK޷!8yv>i~\q.޶oBzbނYͿB}~Pv<%|17}͋# ]߾ey\ }0\-@ːC D!=!j#b. ]Ƞ{ܟI2G۔R~܀w$) !5U !wɯ5#rSv)ėz/*A*'^39E)g*rZ2iW#'.C^9->#{HFD JHTxK ,F;yogo=xhA(|'mo/EM { ;{pǹk${ p>Zx<[zH(*ƆȋwFrC vM{g:{3E,yo9yT/8k{cGUi(?R{W8;lw31BJaTZZ!( N((RD&I$rf伞"y8QXAP/tۊ# qj/6\ٮdSl86pդغ`6Ʉc뮺m)&.=q٩e-&OY @Sp]G-9uv) M3g%R<)u(7Tr{tZ6vTg8\Zr5ml_UF*$m ik]CGGڪkRRL*Ad`4v#eJP,BT=p(GvN^QyģmqG;yPFX>A:h2 4ͷ8Gw?G fooC%<6>؂b553 X4-Y'? •Zv{p2>|3\28Z;qN[t_3|-MA@VL&5C ݇oЏtp }l <@{MQLUx sx~BPtigܦ512z}>GgQBFx9#w*jVRPQY Ϭcb sJFaO@VtݎVcmDЫIt X3pF= | v&Iy ڻZK=GP>@/W/_3$.b*~t2^|EI( Pq>Z \ 4ۊg_P _tx}Gc1pq6.5x`8ǷMN܏"SJ*j±m>飦t"FWѓ?ѻS,d3&Q6Ncvv}b.n;W&^  Ht;h4^ \E:ƱH 7z*BP ;h%2_Oy=n3.6&aY-(Ѡi5jTFe&W0)$x*+H tk {p'ExuȓbIqIwTWPS<[WOeb c9 pLّZ*꺻Ij=n2"e^."p/w!e=n@4Y)77.QP8(AzV@Z i`| @` 8AyJ: ϖ <h[KR3f`GC/$@>}9)^- T% AZ2 Ewo!g68/;V+'P#EK& %Bg,rP.ʃ@ hD >}= S9dqWȽ}[?*㕭^aJQ/R4i^׊n+/tw>ҧ _ -aJ[? Dy4Rt\,g K#ebir(9>#B=WCEUCE(TD +360O^:0x/_znsڱ8,E(1´G>蜌=s3CRfx\GhJ#ju ~v=^VƯ?Ѥ3/+Tg?QCͧHݢP͇多S3(*0 jd uP 8DNn'/oШ:tN!H'DvH"YXGj tBsTWjod~ufM:PpSܛ:Z!ZYJ4hUZ*(=3j}Զ`ѨsQ|6Nqvq>}*+E "d6<N]AotYo}oϜ<)Ξdjn,t3M ȧBa@h/<"GuOT} .L0.ckf> 3|#ڱ֊ xV!ޞkϋab =V0mى), z7nww׻snB@@gPqsƬƅhes<ǻfQ IƖ]$2Q> w&ثtM8+ĢTkϧeRSMbˈ/pXfYWYIO333ṃ2슬+32d91ai qՒOvrVۂ8'=l<.];yhmAI0nOU᱙1÷i97ϻ?30eOy)9Y[5^۷n|ЕLo _,Ӫ+Օ'ԬSkeZ~3gYMf# c`EZBhZq<AsxUӻx[́4>_t*Td pWz RN- ې6`&c- 3Ke\( /uPB< xE=f4MARZcSM1ĭr^E ]n82OU {0́}@!#"L 4-H)r{xarFLJQ+ =[Y%I nlٰpfm(^MZ-eœ :mXMC*S0Dʬm8ALb]Ԛ+SO3Gio\8Tu贾 0/˾!Q#<͘)D4"iȽ,V<Wԏ)No\7ܥλEk=oݿQP<ɥ[(&]88}t/0z->H*`fCj:j}8 sm4 &7S(1SD1w'1{<4XhhisbVHHpQ0[4묤^f'M'︃~lJZO7Q& \kn0k-f~^M `Tg'K_TD1v` nLegq%H=3B_JP/zI)pa$1d4?f߃%DŤiCC z.6YײD0/ 3o>G}n;Mo*P(QN6r(;ܺ8˽ԈMo!<=KEv0ۻ;hH70 p3xp\'w<ǧd8qV2-ܻZL{ooMz~n`I?U2%pb v/pz0d n@^HJSV5GKP.y &,F]y k{*.|2(dD)\vhOiT8f{n@5L8!2D,H[[s( -eH!0 = ;%)<%V8$QVg~~0W$9:qF0ʪ@+jx቎Nv߾ҫue0Z`\+-4(wM8'EV,s?=Uzj=쬫X#kRlS[_6s/흓Ra<~ՇG2ϥBybL,E VJCv{@W"D="@|lYwCyʾ0z0tCz%{!) -0j6RY%y.71Fb6x.eu kKQ1z% %k($W(dc(RRta-۰=l؁2+~Uư AiQؔ otjGِa e}ʽ7Z(Ag4(mxZk@VA+C)N&B+H'NBE|S hr惝,fBM/)[C,%}`5qb)$_La>L~$R4{RB'`< c6!u0eű0dH! $?<>f!2f8Kg ]/}M3qsoBc^3e!"X+&<637%$cXMNXWsizG*)8n(fd3h? E9p+$K\( #㣸-.{e]:ENrjLQHb[5漓Y-@/+n䨵N":3V L*t'nkBE3't*IdNt$ oOO=k:kt[N xgU*Ɩ~,v,fTF͌JQf0X+Ntd9 P~=3K/O}D L4Ibe` M^.L`$X-N ۅ0^M;Q\Lob^K+O;o^j~%z[18OO_w;<#G300nݠJPTc.ŵ=ZQA瀛J$~QMt;\#UHoKeA˰{B[?$Dd9b̍2(-Pqبj"d'$!<";@1h\H2k8-B/Y#!ݱv 5=xcSKgW;, `8%"ЛYgK6= =ņ3ɰU3`@| p&1^(0^anEI)}.i,%j1G G#+(0,Ts2Rbk4]2 vFvUA4Pϳ`֦4*UeS/2lax~þEżξ}J|~}K˜apZNsVkST+ڢApZup^YA(;yHٍ@XPȠ  f2 bb+hi-E E<>hq^r=yT(Bj2mIlPVej)+#92.DpI{ pM[>q f%ny59)\|Zk8 5KH|9{S@ODZW %P ű^JzmU#+(,0Q0JWCE# ÀN|e@K?2CW{&(沺l:"LvdOF$(6ζ>Mۨ;4)df@ 2~8'q83_{v)ׇIHOHO&hU|%uOT٪ajT>,/ydQγ/+>AZD2>=`D}#'B !(-a0d ;9N~$JtI))f\eu(:&FzCë?_Ly2J8fԼt9پWT&s+L$Ĵgy>ˌɦgᯘ`K >K5kU˪̫)G|Spj*;~f\ SӐc ix&cd2O>16?2,nLϒԓYM̾c[|+ v |'7e-;,TW c5o{o4+lľxE+/Q8}Ή㬱"jwܕ ~@+G SySetC.Df*O 8eŴ^lYsJ&-&+6pƖMUrnf;X䅽rߊA[zx15xXJO#WsBWPi9i?p:58&weـ_`'SV+rXDw{A2[dP˶ u.b񋷵%KiՔ₸XhoN}/8̀X0+=+)WtEměJӳ*\?u7Kh m5YLJXXGZ83~:_kUz bx -Fsx7o5F,4O[5;!RN8 ,D8>՗!ǑO_ĴF0#=` \h8Gk~~k>M**dᚇO-bKGy:^b[ζYuُb5Ѱ-~lDc߃U;Fe@#qW Q 4ՂlVXi"zQZ& "wŢ+ƕjeRNL59cVG)SYWlD 0BGH8E< ^/Hlka#%\cNrĹ=&bs2_8_>Kn|RƔ5_GuӋ)7/ػlQ'\EGteDc)?Um2QV#R{n vwt#AJrؗ:~OEI/E:cF>QL/qǃNjcm؍zؗCgT(NcX܀`;.&dۙcL(ɋEby(vJ'A piW쮃'":`±!L='U sdXמ e͐n}_nXA5 uhZca(`d VaXoP5\t0~`܀=P_ Y(s0t"Sdjhˬdfy"){=t@I'Z;ҬҗQ9˒@ds^Ƥ+G 'c  &P{G&;&Zۜ:~|Z] rjҠDaYUb >\kUm* MV6ߪv=\#0m5d˾c@.MY]s]GBƩ铗j }%d~9z+ܲwD+55zڪZ54E*Ve)|á7^ܱ{PG/ÀE"`j@%ȳ-Յ̘:{+WvuҥJ_OӫG>xg]oiSKO+IM Hubդb;8kRٵ Mwsho6<3.A W^d:ЋoKVb:|Ԍ4 6XE=zn}:w3o{- ~XE 3!LC4M4'VvԂʤD6?R˲~L?U7^ :P 0-smYs):YnKj:aɛj/^:ϔ2?q4J=`JƭRU cTRWeǴ"6ޥK cqy&5Q3 XKuUT^ D 8ـ5:Qу'[/v7#E?ApV)a L$z_`9B̛c׮iXmewBF!WgRyLAÒl)L[x h5 C#6#1W42.1h<ձbg$cs,㲌^9LIhAcƤq5+[lSQ_S1%$sܓ ]TZF-0\^؍6.!@01T8V "u_ S\<3l N+&%R,~Ŕ\|)tXF'&baaD@Hh!% -BVG.92MڐWLTv?'I>'}B;iWhǥ30ō PϘi/% L@(cS:aYKS7d^/@,_ӥ\ڤUqQQjr~#8r*~X$Y`V ƂTɩEVRb ҬЇ`vWE^q"!,z-g@xI,3d\`]1Q`K'.oX=トy|aYtxTz{(0 ";t%M0:qآ$0IJ;eUʇGۙg{WJ1 !'Zau/(1:Xa'Y4,!,[4DpP:`yOIJ2RP[n3$y>.M26 j9Q|~pA`S^wI,{-2qpe&$& K*oP9|?XǹUx@'h|8M P=mǝ$ddGڪ1U)-:Zϙ՜V`l)Ȝ\`@&P `@Q# 2D&vN ! 4t8po@w!= @ c))ɾ֫ߗ]ꃶ5=3 { y?oHYC{U{DƧpHvE_sԐ!!!!!eټ !k')OR<> endobj 166 0 obj << /Length 167 0 R /Filter /FlateDecode >> stream x]j0D= gc():EAk࿯zAz3gHJ` X gux%mU&*a[@mWF$\h '} kwD:rċAO>S/[F8<*Dc!'it4&U$j~O=?c endstream endobj 167 0 obj 207 endobj 165 0 obj << /Type /FontDescriptor /FontName /HSLYKB+Helvetica-Bold /Flags 4 /FontBBox [-1018 -481 1436 1159] /ItalicAngle 0 /Ascent 770 /Descent -230 /CapHeight 720 /StemV 149 /XHeight 532 /StemH 124 /AvgWidth 479 /MaxWidth 1500 /FontFile2 168 0 R >> endobj 168 0 obj << /Length 169 0 R /Length1 5464 /Filter /FlateDecode >> stream xX pT@cjfS+(5)/NH_yN1$@A?_i_W)'yKԼe/Ҍ5P" H.=1sRc- Jb.qH%M咸 ,?Ǥ.8*;vD%cқqDu %R)K[I∴魺]sı'&=i/Ϳkx<1psBtl;sGvGDQIV:ڤҒ8:cb6숴(TR$%81DZ㘔0E+%cd]O\;ʂ8>{ԗW*9= ќ> wȗOqgLB/O+CܭԊ95q26|cnɘeL7M2~fog2 &ę>S NJ72aUӅ[!nm7tUX*&ͭ%CnꮚzTgf /H_~ވ բv7lg3MsBMͭL#z9Q[o>*R殗=Ի$лTxbJW{^_\ۓ|eX.>\gjYZ˯\ U C ` }H#&0Nx:p*k.a:p6щ.@303h#2a &e.lp(c.׾$0bƝ" s0 ?nl5B3vxpPj)4j[:t % =qHBybŁ؂xx+\=CG!/kp>30 o {7[m>3OC&={|@) `-V4nW )80p.%Q܏/7 &t9"ms i|'?/SB?S[4djuC:Z Tn(GXlۉ'`?<C b% 9bT8a#}Du283san=Ý< ڿ|/ 6QaWooM/Yjxаpph261TbC'i;Hw|Jޢ;K3h!fC/ n*gy3.\iU)q:vt5;+3r S'OJK SƙMF(+WljNHrdt9LCHztjcP䪫"DT[]6lSOxd[zߩ'Pn6cS1d]QovaBqn(&Va~x#0ExLU3d꓏wz-.dAKr r:px8G>@ݮ*[qB^PpPB,GZzQoKꕞNsV#jU ҙbZajl4--Pqc t쉻H<&56,Wɭ5!XC X+nWeSHsW+,[6%߷$3it35I^LLI :]"s <DՄgV❪\Va[=xbLTP4u- ŧʶy19'+.t#"җta =骉E|$Gm[<>zwABV{(). #Ք []UZiK N]# a Jv#> endobj 170 0 obj << /Type /FontDescriptor /FontName /IXHUCY+Helvetica /Flags 32 /FontBBox [-951 -481 1445 1122] /ItalicAngle 0 /Ascent 770 /Descent -230 /CapHeight 717 /StemV 98 /XHeight 523 /StemH 85 /AvgWidth -441 /MaxWidth 1500 /FontFile2 171 0 R >> endobj 171 0 obj << /Length 172 0 R /Length1 27708 /Filter /FlateDecode >> stream x xT?~]}&3d!  U)aU(*,E\P *)j.hA[\Z+Zm9wNx==~.͋$Fdi g4̌:Bht]&euaBtٷuk̜֔>O.c_1uZ}֜u[+- ftw8i˻O>A=igoB{H633M!%7pĂ]8W?\5r;G_>ϙoq@}=krB ;^9އMSFj值!d.l \)=Qz!ANLW qoȣӇ>hB|qz1zS!#'qJ2dӝsn MũgBn)}PFIڋ{$C/~WB&~Z:|,+SspKgdѝB(y0[ĭ/l 5Glk U>TQ χ m2E=?8"[N( 70KZCPoJ#$>r(6,29UmddŐm9CXDoJkR'eKq)"%l-I6:Y6ڐ=@je,qP8FS>wDdN&7xh /iԒ>w8}dH`%A=aXl Ge #-6 YZZ멵V6S3ۼm66BgrOw7/Yqxy͌40垥s<-k/[N[3- 3ZE/,Uqz;4Z5h\ 3-M.Vxxœy+Z<߼k{b}=55k2{t]pk330'V! d }AަYi\L^%[ Ā{'nΕ'QNv>IHYOjt5(Mr zOM83pN.kpWwVG~"'ĤF>w,V&2D I!zb O`P:utK/-pNY97rӹ,0~"oK(P/ % # b?q8^\#ngjVk6ki+it/FhgBK ZGmtjw_ Ivd~5_^!ZwUd#?%|J\C HP܎ѹ99ىx,+ >r:6h봲נ!2$գp`Ub*[_{MK7 2+g22yJj א^Ap;upx}E-jyZ~@-QDpCxgN]N jtΦAS{ѣICߋ1$ѳVA-hݠoec5aP?i1Ӏwۂv{ MѦ{ڒdTV6Meϲ浸u-_zv{.6xM[SrYu*Mcx,jk<57-bS[9MrɘCOe-dt!oҫV{A}"J{Vc 2 D-Khl̬"fTO5Rts.316tZ˚͘Snyu^*4,1R ozjOuD|MI6WhN./e2^D])QϠPi 7^ۈvt nnlH](tT)8݋:^8AWx0(|Aj wS8 ٥ٯ^ FIҊTQ.#1s5\u1 xk/R8`_ғ :7kq~)߈onנmlpʸg;r,Emv6ي{7F17ǐt DC_B=L>d +<OE%:vxL _v8`ߺp!^#~ؚA2 +*DaH$pE6,\Gz|΅aº*'8_ -KH K_$a $udZCpa6Hgשvض`q'Hiorl/Jaa/O kf o \ Vv aŤ$~ SV*V]O;Q^ۮ3*tw'9?o7~f43]6G0ٲr:m킽[Gn8iWkk;g5-x#ܙaXFhOW#f6eF`gefd5gݛI,+6.R/FA}ʅmDȖ6BNXe~B^]{O/*.F asߊǿ&/t+tpG^ȑVWۨ#;>LښTMq7%cEhwpEHw0BDʦ ElKMFtQɣ}Ȫ(/KVr[M,/ufPw4ΎH-JKQw[ h9o9|] ZS7<+2k7]ṩ/ޤ|:9o/]U㙩1^ezoʙ_=Mfa?ǫڏ|vc"9sp@9i!H3E1CU { o>2|cFil66[ϊݙeLg^%̦rۗ(K-+,oYO( oͬ֌*lfs{qC7G~%lSW%G f 8[<7kw 6R\ҿ+Ctf*01hԆG35Nv9rq<>X1+n` !8ȵ;ܹsVpÊ帔{'}KvcO%U^ט3]X7 .~ʠx=j ϮTkG0DD#i4nxXa]x.頻$-cL]:sE//lU>S0 x5Y4nL8)FҦ zg\iju k*m(hDr< oZ0!9́ ׵dFJ&"i,^s-tƃR5vVwO SUh2!F_pIQ2:+ݒ[JHDz.܆w_=bAO_{ >W TX 8g+~ȅeJΈ6jV 0[InNnR+Eڒ3bZ'UqQS%t 9']$j5:LDdy4jR9$V\P'e" H̔ԥnϕҹ: 3n8*>`>`Nvf~G{}<|'o1{*KуAny|K%p⸀ Xz@;N`Ja22+! EIf1P.mUO>>T3)-JeokPLlj[6(Y4( lj*`ÄwR%.E"DZVi*e\4:ܮR>y *깵Ki=˟{|K_|SϿ9F\q'ldhal̜Krkp9OsoFIC_%JF϶D 'f]U.Op%Wa@W ӕTTyD+ƃ̸D"# e_̓M*]dDY+Tռ;dS5Ғ.G*Ϡ%W-chL f0|Rח?1d>wb@53[CP5x3AoShR8υyO,|kǔC/yGQr6wd$ZN'1_ivk(Ɉ/K:n^ o_ی6pX4כT ~ eZb c &fqZ# c~wSr/ޘZtJ M*OQʟg!ar,7vw6 O϶ eQ"h%6f2mv:w9h2m͂P>4Z*RάGv vGm }^խT[)~cϔlOj8 RbsBlc#{sL`ɓ}<&Iitp̬Dʶ*9GL^Wk>w!xߒs_KJAY}2޾}CZ^YG~XfO<^n9&' d[+˺H"Rn29R_LcpwdTYu\.؝S"&U}1Wz&l*r,]D#lwf%McD6 ڰasB4= r2 \{tD3բM!KtJ O)_EGq=O|۵7MT~\1?)H9пLwGfM}> z޶' ډF{<׾,jͻ48vkKnoH]pw^.c&.V/Z{B nSU΂Bʏ򋎪²ҫ#==Y[\ѕ&n'\a=lsSy<կ\?0?ʷ_GOU)I\%`"Z"mIM巧0. 0Ax?!r.EE\Zmxtu2Hfh[\F1Z*,h|jѼ W (6TvٳG疈[7Y) tvϱN%(@ahAiAY0Tf "Q*p"t6YC|w~Xq`R!'lY6aLS:i@xrK )VexD>*I' wF >œ"L~W00Ca~طO{}%94syYxzLIW/):LY/5'SA乫{fF/B4trsm/ܥ˃KJe+G*psu"[<~ɮd}m (50pql1:zi3ꅰeso4f.hkÞ*/3TF2d 6Tfr0CO?`"21P-SM#-V9'O*/}cکՇn^ao2Kr~ߤyuqx.yr>pa(?v/a`AUX/Hk5Ê.|O >qצتk;δwXԤ l-'g‘0?%r6WDP֡JU HuW@*D0ΡGJ*!*|>vo؞?HMoT33|oZ'lYg6UFDԳO3Ќe&*;?Pߺi^nHd|^iݯrz֛{- #'?'.PgǕ~Ɖer&ѽ85Rt.9zms(&va]MɆ$i4ZltD\ġ`S(ƠQ^:TQ^1EFE%mFf݊t^qw)Q=#S)byHrvwdT#V)K^jO^3rQՌug-hyozw(uIq=lYPs"g|!/nD>mNAhNm勹>b/-zCݑyi>45pڴ d)T$&8.m 1:,%-R5%JنӔ,Pۘ޲w|M/̄v7a)L=պf8*d2뫑Jo־:|Iٗi}r={늢/Zck4QDb-b0]cVž /o.o*\2`b:WGJh5yX+]L}z:}7҅J̞F.ͽ*<`b[D~~z4$/Ťl.2ߵř]V>bͰlNw&}(EPF'-P쾘8ÛkG-L7S&yuG]M^1ba8 ~(<%l>h,!ڐTBEZwJ?b>4C#p̥Ĉ>׳~¬I*JnMQw\;oB "oU~{rw?_73t1]t4nJ;Ɉ̀)PN'ɂӈ>#p`OD2X楹 ۩޸B`2Zwԩp M Ww 7[2Ȇ<2WXTDOpORrrF y -wmH+f9}o9QXl0ACh-i :k|6hWzng.o(W!jXDF>0Q&XUExdY+h3]roS{QYI? qoZ.o>9K> g'~r(>r18d5Xo3"FMh6 Ȯ܅?AjxvhcaNzhޡ& ?ؠ>p=rt*]-XQ6 LoY207#I.5)R#/ىfZx{< UㅪL"F"CoGL 7=p:y"x";(ȭ$94HЧ︠L~]("}7z٥O.? < ,IG%pd[Q1M:^s/tG:- ]I4cAш p`94lPGN_z= ~|Fy;ϊX47@6%{m@2I|J(;{yoIex`/{+[eX%Ǽ]>.)a>.a>%ycx*Uu˛T/y\~sξүhO 498xU^}>^J6>qr,BN‰Fv@{O6YNV֛sIm)T3="15 Fa!y$=LJ;>nILCV 2Jh\RT)PJP{k1))-li *iܽOEWCʄ[w7?sŠ+~sIHd]oYo:rKUx ?705s,'8AN$P:Dl \ɱ\]ǰK4SmlK-#8H!mY =pb\/G:k *q !v&2CR%>R}AC8! )O{Zw;7O%^o+,%TRs,| vOIW]q9{(6'S; ߀_|?%9%ǜH}|z|iYfcrǸFL^gꝙㅀg0/ E$[2CEEVO=TeJB1P+<ץE‹q`oUF#ǂT)ȡ4.Źx~L 9N̅ɣ^6ϣ1=-@Y&I6*WXT.0˪qHUTe1x+\K C`t\IiT6㻅 ׮с7k9w^??ύVz(%^哎륵>9n݂\ԍo ]ܫܻn(7P<~yO<7q'=|CuQ3_"#V=rt\.lax{xDA }L6+PҮA@iaL"!ӈoW7I&/ZX˱1R7ݿN]EA!Kda;)4ɭ.Vh7XOsua<@Qޠ{;pǛzC~4G[ϯ6mJ;p{Kf:Y] F/ :_l1 z@y= A$pyI61wYyᢎ^\'tk4B R}V JiZLWB4VF;c8L ,2SfEUZlU6]~B'!HPP'Ȗ*Xĕ)3 dAuCjv--?b$R>%A+)W`Hn0&~ Lf"'?I.̦R~0-,wc }%W)VsDXLe & 1XZc6^flDYKH."fG1g)|]mp8P]#=QoKUtyKSPwvi/nS_9b.4sM.W*KI۬7 ?{@ c`D,AxV z/`WR8Ql>yxuS[hf,3tIU]\$2FX6@/s/`F}Ykq^ޒjFQ#=$x_9re"$[:Xg5ܒNFcbwfk3l"k?}[<时) 82.BP:d̮ӑw c#kY,>R3f.TӃj%fYkmIǚjbh:,! U, >Rx,]$-ܣc97ӐEsN~sB@t'AQ !1IyQJ5\jFv IWB=1"@nM軹my<ˑ;s&,t00J#, Zq9'cCg+n!&r2(bgeAK,mb r)ɍ,(@ I` kCݗ 3'}n0=J8٥~OwK2b 5dWT:3qh9B<pݸŽdJ.B|Aw+l4d!2PYїz&/+YAv,9>q|%Zbcsit.#Nm:l;Nڌ8뀡  Eg4J Kyz~sn帒=ܬﶣWWSyҡ\T>ёW]x^z@(ud^/'d#wh>GCݖ" noPG ӣ:RT N]b~ֻqz4qǎ?6S?baKfN.p,^찢Zx`_} Z>q׾Od㲳үP HU9'A,YRi7M01M]z^`ɱ|!}ІWw?uk huR} `C\rTGciZuJyh{V 4sO>_>7]_;WY1 ~o!X KԐ\]ooMYt8M6ӑ4$r׿ğo'0$,NW0Z#IH0 .}L89 \fDY:dEZ0!YR'D*ϤZ*|NJ`?!8jmapϊ0 iFPD4ũEpHFD3&毨Ln^E_2[匤F4#T53Y͵~XUa\9^+7aY{~KCaݾOQeؓO>σ%d7O0tn_G&`Q2jl:/dhq$2q{92{uRۙQlڈA2`d4N,w>zhVq@${7'}>JH]v$91Tmw >ؓwԯ12!RMNЫu@ Wd0%≀ rQ@א]\0WDh/Co͊YьxdM1`f&98ƺI]^&O5"L", [wq c}Jiʩd:bLdرy^uO-z]/}a@ K^zI<41(OiXHeЏXOE2 })85͑x=%+dfKY{?!҇q52V϶ XD%7([v:M{Q .vnED P(B'hUkxm1:N[&D' /]\{:ukoԓɦF9f8[\Y.msȤN1xn-0&U#d/ ?F̷a@cG BȲ!z."ӏRWZSbT50/C%1Ethb@- j 9W,WʡAe<@O* Rӹ&j6,/'9IPNW>8EYt*7c XǺ.L[v愜7Dc:_0q; F u`P|h%! bDv5^M-E1`t.Tf!tS1̀mwky .Z%+ə{~tėpVpuY}kkT%wћ/{UZ;)#N84 RM$: cF4']l%^?TkdZ9fb󪮰y #ѽV'sU[^ʘ'<&k@XtNGU$Kw,?rX';e4mtHZS4Cvdm;?Kަe:Ů:Χo=ArC` G+Wxs/ j}ZJCfcsG&;+ g'gMHʚ_aXa\aZmj5defB~wwdsɨqLNȳ{,ؙ/& 'H/qy~q)+6~$Q-*>tE7fYnTmAu.?ݝv\ m\Px#а93B"&Eh<wCɰ"ӟƯZN ⩪ u_ҿӲ/rn_ӎ[ؿy _ѬG-{u_}=BGO,0AY*2sޱ''[R?*98k-䖻/V.8Ec dLpUyIg1iC]v!zseCo.dƖyUH2mwX!^T}/8w3|PݒTeGPmVc6:Gt~F ${9tpZڽl2#(D4鰺]'G{$n.Ǡhkݚߕ X|&Tm[cWtObh-_gE1eSM|3]z~4f#KS< zɂu8g9~fpd|%$  œ›<4lHQM8:H /zo w%34Ц&>6c6 2e MW!tV-A:?RJ2OƸ5đsUȉ;Ǖ(YVH}PA^Wn9,Af~Υ!oq7JNk1t4T$ӽŵoH7tYsX_9œ֋-VJ,ѻǭʩc~qL9Pʏ|>k@h~3K+oUha e|ǥ$wXvܮۏtW* P@WKC8|u*CU[}69V 5fKeҽdùݵݽsYz)P'!r=dn1+[8.ONML sANA.bgҳ:{TG k2Y؃;x9|tͷX&A6l'cd/bq8ZA2buYZE%V,b4x>r2~dZJ -b?6BlAO+Z5FM#?%p# rzR3}NЀ[ٚe3\f:ӆrհ]PNI>?%*` cj6C'WR9)˓,nKRM6dfP*b#d/.NۡaFcoDn{Ž,6&d3$# #áwcD}ek5Q?k+ԎLY-utx|̀IGD,ˇǥ/֘(-d]D7|Z^?wWbv.&Kίվ'Ŧ5o_m6$>Hfy3+;~Yz%0gyqQf9sn1>,p"bےᄉϾt=nI; bx(V /17]4ewz/AFtOVt #Ϛ֕T2! Ť Hg?+geknٚ/qEkvI\(;'8t[mMe8vɰ" Le3.P$XO[9]ǿ 9ۻ󤿟qEx,||000   qrEK7҂T_̕}VMիNv\/^ Ǒ0_ſ)N\Hz3:OFrad$c90 Pd+mPC]KS:|$Bg60lX8HTthtaKoWVM ylة0L1HN-;fJc~$,I!w&2P&5zKjzXX^ YwXR5UepIfe$?;VfZ6cJWϷRDO~(5Ԍe&xM3~ [ZYӝw`CW N9ld>?}iZ|1"x?#t8AdvW䊚!ŎX̉9k;짎{ ,WsVkz퓗>TiYҐ,WFT{"er 8e Bӻ[L5SWWe]Ӄ_]r'ᅳ}לvʲ[ya7G{ymfZ]c$W1,ڌ8mTc_+J:;V}^Q?2i]ZX,WM.H;ǏG=lӣ>G}\ ={'7j>_>{ԧ_~au^}G]QW=oVЅNy=7ң>GEݮn=zڣܣG}i=goQG}Ukj|]S{_=ܵ}?5e endstream endobj 172 0 obj 18894 endobj 9 0 obj << /Type /Font /Subtype /TrueType /BaseFont /QHKQKI+Helvetica /FontDescriptor 173 0 R /ToUnicode 174 0 R /FirstChar 33 /LastChar 34 /Widths [ 278 0 ] >> endobj 174 0 obj << /Length 175 0 R /Filter /FlateDecode >> stream x]Mn b"!U"y0-/|M ͂#ݥ >h{0EpAZpV5;$$d0FPJ/FL^]h|}ү)!C##{3αvd%NFK2Ʉ jW-0'kql[J5|jSG$qJ1knBp endstream endobj 175 0 obj 223 endobj 173 0 obj << /Type /FontDescriptor /FontName /QHKQKI+Helvetica /Flags 4 /FontBBox [-951 -481 1445 1122] /ItalicAngle 0 /Ascent 770 /Descent -230 /CapHeight 717 /StemV 98 /XHeight 523 /StemH 85 /AvgWidth -441 /MaxWidth 1500 /FontFile2 176 0 R >> endobj 176 0 obj << /Length 177 0 R /Length1 5080 /Filter /FlateDecode >> stream xX{pE)a٫ʒ/xi9#e$K[P! 3ϥݗXp j*6u. eӽzmJI=.9'zf itbLMS^7#O,YO)RcQj%erGbhGS$v\TX\9oHNZt=o_ UkWk[rU1Vl-jwXxmw4Uދݩ;TIm\pg#y姩@R4"mwZf~"@CJ,4H>:B6zzLKtbSZTOfKi7qhM<^ʹ M u'3.et&&OD^3#I%TE nS#c*azӳ̎fy<\jBȎ.a("][eGz.[ cVy7ࡐ so}.8tW|޼Qfg>_ĜN2+cY`BL?>+R\!?hK:o4_0ߤ䢛h-mN/}D}.0N$ .pZxEw9 ?y5mzŬ4Ϛ_u+SEi51~YF9U{!˥sX ɲte1;r? !d!Whn!*)DH\((%^/H4A$-ji-Ey\zBK39by;5-&N[8k;:/a>%@?ncʹ)_=T`7 2St'v^Hĕx҅.\: hx "7kKj\Sc1Zmf "<7v81O"įKw(bϦc%lѥ )7Xm!4wn XA#; gxF7ZhgX W\!gYcb2tó39{yI9hUWca7&If?gxp(k/$nڅWEcax1t |#gcx(.$n\K-_!:cb8D: ߔd؛pc"$g0 h\uq$f/ϗM@8$: 3܆.)BG'Њhy $C_Gv_M~a]f.up|g)jk-tEz;ZVHeI=1oml endstream endobj 177 0 obj 2712 endobj 37 0 obj << /Type /Font /Subtype /TrueType /BaseFont /PKBCFO+Courier /FontDescriptor 178 0 R /Encoding /MacRomanEncoding /FirstChar 32 /LastChar 213 /Widths [ 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 0 0 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 0 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 600 0 600 ] >> endobj 178 0 obj << /Type /FontDescriptor /FontName /PKBCFO+Courier /Flags 32 /FontBBox [-655 -409 764 1089] /ItalicAngle 0 /Ascent 754 /Descent -246 /CapHeight 595 /StemV 76 /XHeight 462 /StemH 67 /MaxWidth 823 /FontFile2 179 0 R >> endobj 179 0 obj << /Length 180 0 R /Length1 29816 /Filter /FlateDecode >> stream xսwU7>sιuoumlR"mnATTDF"bX"bA̢QDD#%c\.gޅe}Xi3θeIYED2ykoTBf_S*n#6RYs\T݁K\^~޴i/?{^^*JeZ{EKo(+[n7)QEo(>eU/_4zRYkө#3}DEn$2")#F/K-F<_GlxeWrޟ5NqWrh=%LDZ Z\"C C^5u!\ky} ϓy*~M02Y85Qz4>s~^"&H]d#hg<'~#XPC0cy|[>5I+!/JsF>3O$]Rwxoo\ˋmkξEyױH0L']BW aSl~U?k9UKr*|6I^!PZD\lFQZD\\+{ɣ u/ >{xS F$. yn Xv /X1E:āmJs,3s~6n-)F*'n&O0~;/ˋqcQ*dje*Gxyzp&{qr?oq]Er]r7YG}7J 6kN~]C@oYEr;o 'n#NƯ"1o"xd%dJ,/{O\GᅫX^$y*~]D$zeA ˋuW"_$d3Jcy\Jp]@s\uiYKb22EY2ܫPby\ft®"Q~  þijS9d/">/mS_Xq!c"bٳz>_y y~ : x9LnV(WpgE(G9ˋc)%,h?=\EnkrD-dE%ϐ>D>/t }ΣkxxE{uI)P tQHѲ$DjCTM_ZET-޷F|T܋\#9ɷb(ol{Q('駴%v>Gd~zzY¯Z!w?SG \&a"Io)DΙpT҃~¿LYS&O\i;ebDS>?J< :rT[fǪsڪeA w THo! J= w铸~T"B»X=y.oCHJOqoG󶙸~k,R#)4}g3=HP$4 eߏS(ߎľa{WV#Cڊ eHӑ7odȞgߖ@Gb Q`zv'D:^d`^La 2H3*H T@F}fH+R B 3^T? @ AFPO3 1$ IE 3$KrkXjB@FCi%#HQ@9n<$D2K&@q@L!B;$_GkR)n&IKeIL~-z]z9QMfvWt&/Pm5N60tnDW8]bK4>ΦZZzՑG5B4(Lf(yee+Ěy^Rc(P;OxX4s_ |<\xeDq`{bqo0+~O} ڬAG=nvVTKyrʵ<ݞbG{J:%݅YC -cjsIT0LZ^A%tV7&=zb6k+[&q*)DsϤ3Գ5H~Eyg3IGOoYr7lUOSmۅ]od,sLNOQ(FeZZI' FQ˵۫%{Tnz}T<}40i԰֖t4z6^TPbCcFlk e]\b=%jYcݟtw3^UVw]cl%\O3@a11\wfT$FE+ EfV'PA]GRJ .k(N_,Hz^Tj2*RhǏk4JeFj.VlE/KOk,@BhЫ [;yG[mhwlJbz?/N4S(`8Xgc ;`U:T|0VUed ^Op5jz]8_UJɨtjԉL yal0ʀ̄g`Zh=QoP6j*AqKoJIQɀka5]$QRO3 "iD ǎcP\dnC^3]]aWs'O}+^KA%R}QF08䢋]h+L7g9s]_Gd beY`j rK@ FIBq\\&\㌺I̕'kO; xאՅa9| +-ID<sF Ok'd|9跘vw(v(wvH:t*D^V,̝IdP2e0jE@z01Pfz ovpݘ;7pqHhJJjIX-T~Yme|j{< t/ +"a\ܭz}[QQ#Uպ\64L ѮU_SD_>.5pa)XC(=V}VaUk^T>_707_mBo}9x( n9~|g^]I9rǣvgF{c r L6EI{ٸKn,w^~]^!dCat㮴ZGZoHIHte49UU1nb",~" {U*>$ Ji`ъzWV.:Z}jiܗS}#Rbf!ctPreUL/u2pM'{IMU1bR5Ee*WS}6--V9HLz^5Q *.O{'k|p`;*S'Pj\ʐצ+mh8\π R/0%+w%zǦ*HajJB M{[7"VETx֮ Y^M1-~AǥtUNɬ ~aKWoŷ9|8'?{ϚD =櫋͢aNjZӕ7===D xbH>dvaZUb5zaD YBvar4Og[\!-nrak Wx&*L;b8?^I?K򄏉qV7{I^L}]7)zŦ=TFcXA*o{0AlReP]#q_rjVQQٮM^vjv[h5^eW9L!6q]e_U]Dn4f#Rt \nL3XH%1 (UCz\jš3zTj4ub*b4yXr_aIء^EU;NjWnT(-S/nݦZZZZigSjo}bc}xSfs}h}dKhK癟;F:ݝhء5)!"UB1rg!-s?.u g,9Kܯ3<Lw\ .K/q`?=Y_={NUW\vJ;G+ͺs6{&X{g `4+˲_yD%Za;UNW#F] <ϼBBR 5ҝMMjOڀOa 9>ß,X.$B779Yh֮ş1s? u~4w*a樶?ožhAT8?!0ƒΈf !QIfp&J`Y,md4EgVZc1k.LěOY8GtK34oof AhLR1FE]4&||/|t$\Q/M ˋYްZOP1%.=[ZZ ^$ ;?m֒4InQddܓS٥-@۷g,BHDQ"0wSIav +;U|j&a~t>R)1~aO/v {BiK\|2R y蒔ӧ% Et` j*R '܄>1e2~xڳX8KJYwR jg}%/bb6lѺ~Zu\y}cy1Hνōr\i\xc^X_o_zltvx[V ?Pl(cNj1'V;դguw&]q[Vvy}6]YeT)0 K, N6HzxCH_V!3zF:h1'M^g]߼S3 s\j4 vc} W䪫/^1i-վD(c^u匇naN:g|u ʴJa\h\a\k|ȵTvkwe銥1/%~];'XY.u,MlzJeI.U9fwLP9lP\e1C `6U2>7EIu8JB2;juŗw\}U:k[\95nK'@@726jAPZAsOZbmvZIevzŮty+\JRfeʗ%J6S+5.Sm*63sӓ-F@e:_4bƇ{˗'39UHdhR/o\N?{aAdHZVwO4F7b\C]L*Y & J =7CwNUW2*j.w$Fh,7Z*$ef CbWvanFܱh2rbwq(APevoʙP ,YQJ~ *X2p,>|B*C`{stC)pup( E"gX`TyN>,sXZ|!b(p+iP,~;>U Up(=_!'*%I.x7I&Nߦ̑F&;4Νyk,`5Tԥm`{=ƌ1Τs2Tk&ni X=01sXpC]Z@Ŗ^;'ޒo'cpe&5YX)u ԧ> 뙖͑[qN@=a4[b+-189l.  Ҝ_E(Ù]拞ig=zՂj?As**؃v᲏u-@භB#*~Ք̏IYԧɴmS ky ɠKu׆@w'Ny$^% 0nO4ËHIQi ` iH4PXY7224u&ՠl7l#+b#LmlDsmT Jъ. .F JYkҚH3ʠFz1W/uZG;=\Jl)5S>%Ƹꈓ%GW6J5j]uw\koh *}FMS->zȸSKJopBZ%T=9lOSZ{9cnS&hZ!ϲEc $,i|"(LX6n-ߥսٓ۶p~S: B;Oj) JOu݅6] j0v,/8`uT]h0!.T,W(VJffJ)DrlicD6AP{ ϙ\rGXbnf0Nٻ˘߫/?c}كŷ YMG߉>/٥˖,[3 +/.Ԍ1*Ip6U+Zhz*7 W@wƮ7gk.1 9--)01S:8\ 5x2qřie"K ҰrћǰKzGFkZb:C@P#|?TnJK,(i VCZ߽kݝk>lk&;xu 7Dnxvu?L X\+ϛӒnw,_i>.㋆"c Mc{N} Nc$ypoiLOh\ox4x9rO>Ac2Zlv8V_7oLZk"_vi oW7qy}wieՆZnVgY[[p6sx*w+F+m@BmJ24 F$Nq&r A)k{ ._)߃4! ǒ HVz[~:z 7NtPu.pӹ^ts;O?PU()p%Y%*I+O?؝,Zgj0s1=_؞'ozZ~t9)#t{nTi6I7$+FBD'=_h%w tITȴhcEYWSmҙA}s$ɴ$"b.WsXb<23lw`LOwl"+DfinUK'y><>mSW}wܤNoP,=i>f/A?҆d"NՌíBg $| Y8 #v/1G+B ZqކHq~Ggt׊".CiA/{p߃3" u7w!a8a&̄=Z |;طC@u7V]fJQowaɷL['V ,hTЯ/b]sk_x!ۮxjGfKhuܖ{틻Eq'!?-Vzp &+ 3Wo=ߤ`ڒ~Y/bZpgJDt՚y'4kwz^xDJ~fk7۶GEŕ: xl [CAZ+]OqydZ4i ZF\@nhsgL{ob.~FA%|"_ ~qDκܧmԂ >nc&1rP3v6+kz\ݘ# VnBiA@(vnގ`>qޥ^c/fv+k1_ qZ° ;4 <:M jXF=awC9s&@@l*p謭X-/^SK4]Tr騿o5wza_@+~.53DP 0lҺ/Bӱ je$i ގmG(3pzd"݃wG ֆ'ۑBnnl{Pއ>8xu^@RXOE )$܏wDE)K! ;xK-ݛ! jއi-s|a~{>vssTqSj:Ez}w@m`#Zg>rGcjlBoPw GorG;`F?ePbv-4CM 0Rca#] )܆K a L%._ _ϙD*;y-ؒJݗ,ϡst0O¸snTw\rU#Ac .Y]\,4&gMbϏSS$7 Sȿ>nZp !89U$S#g#h3Q鿇)a nގ;0+p߇ o"&0y8Ϗ2'oYS+Wn9Yuײ/cF'Z-P܏~l$oŀqZpGfkQl|L?$hSG4xQ x.ZF+R26k'4E|>ch{>zM#M`pogf@bb]/e' gE8 ~Y$jzm`3g3t<^.H4PK2)~e֕D\lnk}eka8KXeT6X@sx8RVD%B-z$} 0-$y%C>y(b2as%Da6ISx'k!)V[p.#=f) [*/^XڇWr!RGB;xfb61%RT6ksSRAw:?+ْ4dͷŮ +=No@ՉN8qi>@UNS^֔hQѡ?Jc;FX 3?:J;FΉ 21;q^S4̜aYu!0DN u.l !EHL F"v._=Ҵ ;iS@{ȼ$<lBB#-Cl; ⷪ k<8Ph,(`#&5י9d.3~ ZP/:fmMfر7gC/O`Lľp+#L Zb!:F.,F0p(5`gei=t}5]dV|mU]d0 ɴYLk y [1\o ǣBպ)b#-M 4[H@3F6s[0I4O 㤗MF=6qNFj{6Eflx μi@D1a׎ ܟx+!xT' KW1mI >AW \e(| J=pp]ǐT[Wߙ(L1x ;h45Q58$mO_6՝"o]֯ݵ;w> +YG.=x8~;^عΝ {RK>ojs)@Y/#y98s̈́ik#(m({OW_FbI/fIh39 bVrx%&әi.S2RKi3}g+͑"[`WH!Gڂ$/R^$A<>gu->u&ʽj #jLV0WDވ?=)t`+K2w`(y|rs3vҢOs->WL^x錢5ylԲ'bdőX:( f,rqO gǏ ͚磓|T"? NcqZC#Z>2(s*QEÁfkx+&l-ĩÒW52/^7@wVh~Dhvn vd9@g h/1 ^uQL(U^f>pvNԀGGh~dJ42>HSq3Ie">,a\.܎-E>:k}jI3ݖf$1qcoǢ˼>i'`F̚уEkЛW5ق5`-ʗj/Si `51vi`7!:%P05akWK\1w%Mk)]Yt? :;v 'r/Ba f1a-x<7EĢTSUgncQp-|X8}";}1GHI'+!C~ᤙU1dgO٭d$6m=U4Y#%z;6Ա1{w- @/Ȏ <N tґxHH83( 0l'AVS?փKPGUb5@E !Պ{HD$ 9\]6|y˲epI5? %#pQ^Fǃ+0ZbO@bSF!dć"j}/J1'#PX砰wlo(14Ye>@֓+xVf\C!z*bwsz:̎.M[ qo$u>n|B1G}XA{0~:KښХd>>̇؉`9^9fPdfЫt4lWw 9?x ;gt01&:^CɈ?>O[K9Egrer ˷@{Z2Fֹ1HB棼Q! yn@~L܎|i}[H& 6P NݘAg1@֌avK WГa&=` b(Ws$_iAV 8fm1 qDHgp8 5*r: %1=Tt ֎8Ԑ&gRDTd8cc 8 {*@YM9lm,މzNUR!RUAqlqeJ79TZ~[b[ջ޵=Q5ըLm]h(jG۾^lM_]ՎXpFW>Қ(*'TP .Y.TSc ]֚R[YbRy݀ 5v&SSjh =eXv0 Has9`cem@`>IR {BeC@vJɮ@9k®祇TTNI&;RSLyg8A7rIrA mXA+ыozWķG YUoCCY $@}̏ޗ,Kϰ'X{6]ZD;B8;[+`N![ $X)o(qةI'JRH[AiрpGA-S B [V> U2*xտJj99.l9 O2Z +pb0>a,ÄTt 38σ:'F0]AZ9t1D*!gC􎩲~U>ţua|Nm&P bŒZ aQ+ȕ :JzP)6WTPт%Z S +cleqr!ɡ[J#Vabgii{ )DV.6_L\j|enF)ȊU^-׊ C.Alu3 4v)ӽk-ez#\:{yX8sw$ EXӘ ua?0 8b2yMzٵϿº-EZt/f$8$~ -I0G"&#BiҽHv"GzQ@$)T@4 UH"mFډ=#HGQd@#e Hf!] ^H;#t(3 H~,Ri2,kV!݋i'~ eD2 HHAZt/fHC:t> P AРrxP92T*ȵìсe> ^؎سՃL'?;͌jTf+AW7̬ 842> endobj 182 0 obj << /Length 183 0 R /Filter /FlateDecode >> stream x]n D|C[%TCn?B}KґO 9VNĹmOUBfߖsGcȒxó vciץJx)A#c73#Ȋ:}S[Dȍ2qd%lhBFU $ځaܓmU}_勏JvemjR>VC,r&p endstream endobj 183 0 obj 224 endobj 181 0 obj << /Type /FontDescriptor /FontName /ZFELBF+Courier /Flags 4 /FontBBox [-655 -409 764 1089] /ItalicAngle 0 /Ascent 754 /Descent -246 /CapHeight 595 /StemV 76 /XHeight 462 /StemH 67 /MaxWidth 823 /FontFile2 184 0 R >> endobj 184 0 obj << /Length 185 0 R /Length1 4120 /Filter /FlateDecode >> stream xWwUsn.!)! I$FH uV I4Z^1ޕ"(Z!Ed iB[ V)&9ٳgfj !1jQ-8f캪E!?m˗ƒ|kt9uI>q9>?|ܚَKAw#[te6m١>|je8>4؂|2b.Yj,2d[hqMh*g(׌.*xD)R|i~_eE ?;{k?rHd#f D;hIi?ojNo+C_4m N0H+&eH|[ 0pC5%%&)6,r&+­hcV-71/f21|PovJt FZ^.m`('m6~w>Y.22N3j VRENRKz ؖ}`vqbYFn-t<@SZ'iaۍSZp ݉W6Ps4Wc\AejʮFp{ͧd:1Zp a]qJ .]Pvd/fqJ G{J3;5l5oQwo{óE6g)-i~e؍2z?m)7k7mt'M/p%?7/mF0qLǍSZ:.`+-8LQtDOiPN]U#S*׃8Fu eJy0r?3o/y'Ǥ{:ߠv%aivY /aŠ^c؉VA5BNch 1Z\qח+b7!f n zN yL#nw*-x<3;i6bf[U2}3=(XgO!~N\?aM&(zu=SZk2Mx h= vHw!_At`(ܹzf>ҸzB߁ПRBˁZ$XPZ}a6||bϷOTFj+R7Pۑk-n))#⢁cs'nAN**,*q}]#~`X=B缔e +6c?<|,YS*O2de,53㯨3|H.f Ew endstream endobj 185 0 obj 2203 endobj 36 0 obj << /Type /Font /Subtype /TrueType /BaseFont /NBOBQR+Helvetica-Oblique /FontDescriptor 186 0 R /Encoding /MacRomanEncoding /FirstChar 32 /LastChar 222 /Widths [ 278 0 0 556 0 0 0 0 0 0 0 0 0 0 278 278 0 556 556 0 0 0 0 0 0 0 278 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 556 556 500 556 556 278 0 556 222 0 0 222 833 556 556 556 0 333 500 278 556 0 722 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 ] >> endobj 186 0 obj << /Type /FontDescriptor /FontName /NBOBQR+Helvetica-Oblique /Flags 96 /FontBBox [-933 -481 1571 1138] /ItalicAngle -6 /Ascent 770 /Descent -230 /CapHeight 717 /StemV 98 /XHeight 523 /StemH 85 /AvgWidth -441 /MaxWidth 1500 /FontFile2 187 0 R >> endobj 187 0 obj << /Length 188 0 R /Length1 12216 /Filter /FlateDecode >> stream xZy|U~Ϸ$iM4-(m-jS(e-[[Rb)tȢ8 RP*M[YdpQpq׹s;Whr%iӢ{7_ߜ;=ϻa@M$ҔZR>누[Wֻˡ#b;6~bwٯ?nUOETsu9up-H7tC/ZZi߈ŕ+=(T.AOz)ݠ)?~Y?Ct/1i') 3HRy:RF)1!%cGg?'ŒQeQŁSO.կ%ޯ(5;Ji4 N4O:(R ɎDѶfATR44:&>5 H  H=R{UX;*aZ0=,5` E]bPOXtϞ`yd`ϐq4=z$yMQ= $*ߌ=e8"1H;jKfLZ QN=n87pn:G -2lwG[  lu'Q䝆yJ0 3ZCN04!#ɡa(M0dѐ͈A-`>na8lIA]C)lOeY,HQrNȸA[m7hg$K%0) gԷǨԩADIӄh4_ѨUkVXJ#; A`F҄9\)Zڠ9Rr*;%U$!Hy|h<كh5:dT‚PZߩ?bqJY<+vf~4mXUGj̶ Ta.Te4^Xv15zsM}xQy_s-on4Zõ֚Fk\YPv*ٜ>smkY̕[R7\窲V)sL˿i-(6MM-/+ l* ')H>F&2@zt r.v82$8G C^e aڳ.xLM0{MיujioS,pnajW:ד@y+:F0ZKh3 P +sZλ&QMA::,%W|p%\sOQam+c@b` NOaCxN2b6v'k`*'IHg7pHxR:4}-DAbk?IKX%_I 5ـg TlMakl"JJ8I-$-ʛ*[Wq;-X):GLXzfa#X>:^!La'9]f_k,p!Uh -) qC|DHV% ^3Eggs 'j$*z~UsR;MЫs+P bXgj8s\;`!R ӄ*a$#4b8^,9+^$Y ¥RmK'Z7a(y#LQk_w׿uQkO0OZ fWM5W'|f3.[*MӼlXXQe_4B [l毾[SQY%ݣ+vV7ԂUE|lT̡<ðO)5ٍe@V )R`*@-1i\`~PbBnp3r]165 uP&ɢhi.JMnjֲ؞lMYp+\zF@TetӐ4bҩX RRj? -+CN12=[c뇛]l)!/ m4!wAيeFǗ#] ZHױ3 mRu Z&_~'Pny[Ø;qyE*ٌtS#(D(C}?cI)(P/q 0q{zE&'ֳq8i~HIʶ6bxZZ)'ʫ嫪 -7ԣoi~ߓ~M>H:3HjZp9΁x9D JȩvqA,#;= RAQe$1^exUFnHfv)8 /mq\T>mi#g.f<ř;ߟWT0>(^+(Cfvv3 ,PFBy; = #Up0 @KO==zqh1xZdfsCEf1dUȂd~~pi"{/~Ύ !6N+mV;x_Krks$D_K҇db>Z'y'V|`,n.)t w$I6xʸHJbx=;spC}DX!7c핶oQf) rshVșBS2|Ӕ"]j]&؞z^6-g%+ ד3O#v훋w5s~Lɜ@ 6r_K&FAjAw{H2]ގ3]ni}+=գP^1Wp{:͘X*MJƂfV6v΀#d9 %H>La/@LQf$."q  7I:JFn~t4`JQpU{!ܜ,夊`}ĘUY9f˓DF$[dΉ–~8%vzXm~UEgKKO^wǮ8{W g̟T.iҢgO2{ƍݽK?PTf븅/nt([CmvxWn7X$^A AjyVp2 /ȵ<;U8 s =/ ` = $!`H2JPzgHF4cmKWŐӶC / ^/TӰ*<՘[\.nO,'8a*Զڥkc+Xm˜"{y'^伩.0yc>[G W*!J,߉3;;$Q.~Jĕ/[Q$#yQ)63nk[SG4&!|wӣwu=Q>qay]Ñl2vONutBiMҝ+|~- ]ӭ{Yi/f7DSc /A!ȫA!z= yTvd8cEWݕ1?֚60/;b_ܒzjy"޵M\I0۫ZzW p5;X'8B7m9@gAj:r\Kl_޼,$֖+,|^Glu~ b3pv)}q^L\Md= nk8o:q'T &ߺ! CDofQEqlkpSLεow?s(VTwS/n|tؔԆ6!iy;kߟ 0?E:q-7 ]zt^{}[|gσ-jI2r=>WGA<. uV|EiT_]-P.SyE7N1vWESH%TH%h>hhhYP; #R "FPD;.ܮC^8"eR.Vtə/:¾2*Z6>E~99 xxs^pnU/a゜XwZ[ڇmx~g p}o~WpPCp3}٨0}MV~Vߚ͠0R*ǯN*1O ?WӤSKR,jiXP]>jтkJdcàA&~}E6 2 J*M5ց= j @aq'ϰm-++j~f~ʕU_ۯ_yA2}ߴ_~e8Y+__~N)?Vb endstream endobj 188 0 obj 6643 endobj 59 0 obj << /Type /Font /Subtype /TrueType /BaseFont /JPHNDE+Courier-Oblique /FontDescriptor 189 0 R /Encoding /MacRomanEncoding /FirstChar 32 /LastChar 120 /Widths [ 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 0 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 0 600 600 600 600 600 600 600 600 600 0 0 600 0 600 600 600 0 600 600 600 600 600 0 600 ] >> endobj 189 0 obj << /Type /FontDescriptor /FontName /JPHNDE+Courier-Oblique /Flags 96 /FontBBox [-709 -409 918 1089] /ItalicAngle -6 /Ascent 754 /Descent -246 /CapHeight 595 /StemV 0 /XHeight 462 /MaxWidth 823 /FontFile2 190 0 R >> endobj 190 0 obj << /Length 191 0 R /Length1 7980 /Filter /FlateDecode >> stream xYy|ձ;dnr,,dGʦDBKS>)xQBT)q΢MQ>]³bQ\ӳuOJ6@㒥cz७MkcCۛZ XtJlx@b@R #2}(+1Wݒ2fV;=?975l#W 1#l8ۏ'qD1| hw1NRQ"(^˰F_MV1S'1A)fJB  P9>e):04՗cm"fcq/^-,xJE'`^:O3LE՗" Ƌ8aR/̌8Iaw ɀg=0#70ct$C=*h8ƒZ ӏ,P󓁩DNb4[o( kv5sjMq$]B9.@'/%`Vc/K,}ɴ?xS}I_s:U~J'3標>'?TQFsK  ߧ ѯ#瘦~ŜL9CGi a=FcFrT$9o3|,&bMo2^0΀^%J0MAIT$s^&TN֯83UK"/ԗ8/ 44ő*/@4ő*"xlǩsc,YFyO "f0pbGlxző =5))WqL`?ac1<Sjң4OUTU}I}3CAIJ ],o2t?w} JW]Na bvޕ/ V6P;kP}I[C͜w& %E¯x~@@u<-]3V*5c/3l%)TKhWF_bZZfS4՗*[hUhkm9<0n 4%DiYmKv}broYJD(bس7̻_q=Ӕ-QWsgQkc3Y Ol2BU1שs&q"ׄ \3eW1ci-Ǝau\u<t Gҵ GZ5 V٘_ŞiP4}I#XV.eX°g#3[ yLLb9yԨ1D@sIѐc6xQRnˣwҬ)m7!θ -(60d&v|c= u`K-hSzV<ѦF@B{$Z+h'жc2 m5I9AF=Q `|l~ك' R'䭝uH9Ul Pe )LFRql(Q+ң =>kunN-,7z}Qw9z%3g^obN_:>3'+7) I,|n 5SL2M}eo.]8B /*LÝ){ڷ/;g2I%ү(683{z w}F-՟pRjU^ͤ<1Cu9bI֎V4G-O+o:ⷭ߾;|bKa:Hg|1zEhA%*s>7` ʑh)(屠ۄ_M%wu&sidO5%+=iw$[ni/r{=n>n6߇^ӏ;ٷ^cȇӕǕMWKD a'FÈ݉v6@h}^Z7m u{yۗ7ƛu[[mpLςAQr|ږ)mOi2WO7<؆ E*<Ju~ӟWLp~a+Nȫj,tűy5L$`q6uYsM۳*?CW!k9T힛3ccYs#=8(i6ׇ.+=R[?ZlU뷵DCNa~Hޗrd9\Ŕ)LՍ S簋1~).M狒 ZTn.%!|Qdh={NuR;9/RϞ)6p((p/;gʰE}uA(2Qźf|G @bȘuGxE6[x۶6[y<~DOv̦ "{OELОTO/_D r`Pl!Zt̽%> endobj 193 0 obj << /Length 194 0 R /Filter /FlateDecode >> stream x]j0D= gc():EAk࿯zAz3gHJ` X gux%mU&*a[@mWF$\h '} kwD:rċAO>S/[F8<*Dc!'it4&U$j~O=?c endstream endobj 194 0 obj 207 endobj 192 0 obj << /Type /FontDescriptor /FontName /ZMDVEQ+Courier-Oblique /Flags 68 /FontBBox [-709 -409 918 1089] /ItalicAngle -6 /Ascent 754 /Descent -246 /CapHeight 595 /StemV 0 /XHeight 462 /MaxWidth 823 /FontFile2 195 0 R >> endobj 195 0 obj << /Length 196 0 R /Length1 4096 /Filter /FlateDecode >> stream xWwe<^, a|b"y*ۀb^;d^qAY4Dqhȇ `% %AfI!X}lŲu̬\Z{bS8ri9 mtxO,]PSe[?KVWV%vB k|ZK #kq|ރա} ¥KypޕOQ&tWC:$ LOQ#bڄ+.#j]w~mʣ/;bO$NHmUǏWs%qH!ކvDqXHcF)8qɇ|(j"?l@|B$dj)Es}З~y&SZ\oup5f 4:0Ni_Л>v.QO1Z'HV+u^ѿ70iN3i3'8i7 ¢}sk7Nixv[^i1dWu㧺C ^6+(PCgp[#x b#K8F:ueΥJq0r?h/q'ߤ;`yaiZc^s؃A5BNsh Ǥ1Z\ K94; YݧmO {z*-x|[']JCAY|4ybfۤ m&`_iJ.#;JQXN ,)O"1NZ;[7ֹbnЧ+gj3 ެvZ ƥY<]dۥ`>W6q4"4M9Jz^b/͈w29Vc/bLhCi,yE;JWyY^vU%ɴkI/_$1aky۽r)FU+Y?{)HiAk01m-8"fۀ%vXcժt :w%hK$UeYTV1X|4uZrMV=ݷ ̩7Hs"18/+xVyksׂ-]vt,s-A)?gtSJðeRxO9{]Yi3[Qß> G?_})Pk<ْUGEǐN܊S'N-#? ?#ǍsxR"h߄UCq<5OOaTY:l֠)KV.[Ts/ JWGz" endstream endobj 196 0 obj 2193 endobj 136 0 obj << /Type /Font /Subtype /TrueType /BaseFont /LZRCQR+Courier-Bold /FontDescriptor 197 0 R /Encoding /MacRomanEncoding /FirstChar 45 /LastChar 121 /Widths [ 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 0 0 0 0 0 0 600 0 0 0 0 0 600 600 600 0 600 0 600 0 0 0 0 600 ] >> endobj 197 0 obj << /Type /FontDescriptor /FontName /LZRCQR+Courier-Bold /Flags 32 /FontBBox [-656 -403 784 1119] /ItalicAngle 0 /Ascent 754 /Descent -246 /CapHeight 595 /StemV 126 /XHeight 462 /StemH 108 /MaxWidth 823 /FontFile2 198 0 R >> endobj 198 0 obj << /Length 199 0 R /Length1 6740 /Filter /FlateDecode >> stream xY{|Uv?wȳ$2y'If&H  @@@uYcVS루-REJeY֢5QTQ\֥fubm{Ό,c={=sϽwsrIIS%kW='O}Wm-Kk\ml*v}m-$`acGa6# e&9V,5@1lzZ(5gҿav,L͠/6*oqZTzV0E/)4Ve˖@/C<9fVX&| TS(|HY*I$k9IaP*2KV#SC)P 4[j؇4-JèAfPkZ- 3y%Jҿ(b\LxW}B }ZS}8lT oN# qF8kP7pȔ^',^~6ݦ=Wd]ԭU;i@F-zb J[u/@: z xɜIq42c\("  $5#8^^xNUbW=Hjez&g!#8=b0 j2ULRi:fz5fF$0/t5s@yK^߇sLd\u>U[|cZ@-gB=xכ#m@O ǖl{/V5ʤ>2-R=wWz=tVںœ+>5^܂wvp-|q%9SՠnQZ0;]e.4=~4L^V+iGgg^tLz?]^]V#栿BLGn>><>̰f~Nx}nqu{sSLmM`ΚltT0{wJ|kg_6=V}e"@E,t2CURNՏɠ] k?< Nla&UzTΜ:sr+LZ3~eOi5+Dژ=ې422Mur9L3: B~Orחmޜ&>6iɞ4cBgkJNV֔ḽ⌰:-)IPYۓUU gӅCvGG;y뼔iT-$W?/JUp# }L9!c۸#o]40b'ܼ鉷#ErP$yň*ڽ!Lc2GEwAqwB玡~gRNqR+=sv//*%g4?b3y.P0UXeQnmMPsdn3&%5S*!k3~le˾}QbM8 k@ؗ<Uތ|Rf|Gu>X݄X}7%-Y-%& _Pe!δD3E0M!gn@ϙSHS}G7vk N}x|7{'.Cqq"+}d3Vao^3 TN2uLOt&yz|HOlv9 ;4, q`s5bxUUs(ycҬgÑ>2EMEI=LO,hTE5pfD :/<7yIs]R8W}HQ#9 wcdafH[a߻=3R19̈76y!%k^!W;"v`˅`]Y^6B(r22otGա@PfZsҸ}VH~9E iy~HE9Ŀ pO3g,i\;&Yh *kVw߉ uz o@Ay\r| & endstream endobj 199 0 obj 4002 endobj 131 0 obj << /Type /Font /Subtype /TrueType /BaseFont /YLMMVZ+.LucidaGrandeUI /FontDescriptor 200 0 R /Encoding /MacRomanEncoding /FirstChar 32 /LastChar 32 /Widths [ 316 ] >> endobj 200 0 obj << /Type /FontDescriptor /FontName /YLMMVZ+.LucidaGrandeUI /Flags 32 /FontBBox [-1067 -737 1641 1162] /ItalicAngle 0 /Ascent 967 /Descent -211 /CapHeight 723 /StemV 103 /XHeight 530 /StemH 77 /AvgWidth -490 /MaxWidth 1640 /FontFile2 201 0 R >> endobj 201 0 obj << /Length 202 0 R /Length1 9488 /Filter /FlateDecode >> stream xZ tTEUI:?4<?$B! n`9(zfwG}ĵbxdwA׿Y]Ϯ8xf\zzuČ=:{޺uV{ӶyK#eR$#|`ٞ,^M6Y J}s]=LͷnK7nj 9} .NlvўXLuZS>q!کwӻhZ6#z{sٟ2M(l4:Rf=2]RO靼:GHv$ӯ+ko#әt/x1[f:!=K)*ک~)@iXʅx/iͥ$9kfHnVh52&V SV֒1iٹ.F1thZ ĩs R2wk: ~-.q]=*b]dqu–4qr53ݽ9[0fo^Qbz; -(n݄▍;nl\ܶ%>f֣hlwxty[qQk"6J 04 Nn*::/> UFJO[=ZJL.@K_0WcݞB+g*QeJ~^mtVY2ͬ82ȬdTx!ܫVyyA Pt HBz|6PJ`.p&!ͧX4>#:Dr yaTR3e%1;B3sا" 1> ׫ǁh+}BĎúMut4_LNH[NU 6tt9&WJh: ,,)_8!4BGϊ~4qH {d_D">!1ez E. [0UVR*뭨ERu&/ăV~ ݜ ͘ ,nH D3FWGUщ^u>_+2/@Y$t>@wYOfNMvOXnrԢ=gxbsRg$aOG'9;שׁ.fճߚ6{K7{S&{٥u/:s}h'J){UaQ}߈V^?ٱ nvPHpLѰhK,$%N BXet~`0ܣ!ӟ-E;"1bgbm[)/ZӞ̮^oo7;{lOJ>ԢFAPy3CB=Jz3Mݳۢs,{sk i8*tnNh%aZ.p?:Sսwfw[:ÝUgHˤʒDB%˥"ʖXiYl&R 2%' p<2p2$'h<YşO|?ʏQ&iy&tA{((NQnṰɳx6q% ,Ή8s!}qQP? ('w&u$*aoOyi< J1rg/~͢${iL'< @B zmddkZ*蘒:@Xk` 6R+EXA@l*eIl22ve)LEYȊey(6e KEə[X_ U.ijW ۯ^nϞeδϰNKvf49lr5\͞dMTǗd%ٶkzhk4dI"Vy Iy%ْؒ,:_KY88nkϼ]S\eI .5p\W+ݕ\bZn=7hy F$y6Sҽ+}݌W]1F ++VbH;}bZ}n7ui2&wlkW{Q:N գ[x_)*S6{PjW`pQ]6ɣMrO"[U 8.x1ƕ!Dal`+.3|fz1i'&-DW+lJkL/K۶!0p" BUCAv!bJZJp8hA6m V~U 5IP0- `1.{bl 0 ln׀; 4` 2.pWr.1`s pPm@1`?an"Kk굴 JXA4DêaP";Q{~Lksxm_mV6wQVM ï#"/$^`:JFF&(E t^=!mf#h*%țkmƏ#?nfE?ZCQxnd'Zоq,+Q$!r\\ ,fͽ/+~u@EC ɻ(S"щM1}L-Ve8!Ax$XP!%ѧIA8MRA[]duz!O4EJCƀHP Kw8rT-?rHOzY4#v *NIP8\xcbeӳq~H_4#f L3bӬ_9:Xh!,(hSi G4S=O *K Ed?- I NV H#\ ཈ p77CeVs7@ `DwoX;PI *ݟ2M#R-_9K}:k}ל+tCO 6+DH9$!Y/1IGc#jʣ_zq yHd"ϋ"XX!F&/mb,q}PZ rYÀh,/cˑ"}_|Ed!LKG# 2Kqjn#Ymg T=⇅fPgU7:qRMp؆ub cUbb"X@Ұ\ Ä?6y$`f3&#FBX ]x""P7"S ?N~wW%jxJppR""6ZƑ#I!u!uuCBzw)(Z6@!RBz%tC!!7n9I2$·}w7'v([.%[/)·'=;""}Hw|wۓ~ɝ](%Exw!wMF؍ǥox9K?I|砐+~4{fįX o omoW(Tn!A^?3;s9(տqKo)gr[įbĻ.!7V1L8X@_h+i ] hspcq|e`$Lq endstream endobj 202 0 obj 4922 endobj 203 0 obj (YARA manual) endobj 204 0 obj (Mac OS X 10.9.1 Quartz PDFContext) endobj 205 0 obj (Pages) endobj 206 0 obj (D:20131224160428Z00'00') endobj 1 0 obj << /Title 203 0 R /Producer 204 0 R /Creator 205 0 R /CreationDate 206 0 R /ModDate 206 0 R >> endobj xref 0 207 0000000000 65535 f 0000253718 00000 n 0000000834 00000 n 0000148591 00000 n 0000000022 00000 n 0000000815 00000 n 0000000953 00000 n 0000009965 00000 n 0000179600 00000 n 0000199630 00000 n 0000163483 00000 n 0000175964 00000 n 0000016216 00000 n 0000001175 00000 n 0000005323 00000 n 0000001148 00000 n 0000149247 00000 n 0000012737 00000 n 0000005344 00000 n 0000007208 00000 n 0000007229 00000 n 0000009944 00000 n 0000010001 00000 n 0000012716 00000 n 0000012774 00000 n 0000016195 00000 n 0000019043 00000 n 0000016253 00000 n 0000019022 00000 n 0000019150 00000 n 0000149476 00000 n 0000159764 00000 n 0000023829 00000 n 0000019307 00000 n 0000023808 00000 n 0000023936 00000 n 0000227131 00000 n 0000203198 00000 n 0000224091 00000 n 0000029014 00000 n 0000024117 00000 n 0000028993 00000 n 0000029121 00000 n 0000033406 00000 n 0000029266 00000 n 0000033385 00000 n 0000033513 00000 n 0000036651 00000 n 0000033682 00000 n 0000036630 00000 n 0000036758 00000 n 0000040441 00000 n 0000036903 00000 n 0000040420 00000 n 0000040548 00000 n 0000044254 00000 n 0000040717 00000 n 0000044233 00000 n 0000044361 00000 n 0000234768 00000 n 0000044635 00000 n 0000061249 00000 n 0000062912 00000 n 0000061949 00000 n 0000061271 00000 n 0000061929 00000 n 0000061997 00000 n 0000062892 00000 n 0000067160 00000 n 0000148715 00000 n 0000062949 00000 n 0000067139 00000 n 0000067268 00000 n 0000071123 00000 n 0000067437 00000 n 0000071102 00000 n 0000071231 00000 n 0000075407 00000 n 0000071376 00000 n 0000075386 00000 n 0000075515 00000 n 0000079835 00000 n 0000075684 00000 n 0000079814 00000 n 0000079943 00000 n 0000085738 00000 n 0000080112 00000 n 0000085717 00000 n 0000085846 00000 n 0000090352 00000 n 0000086015 00000 n 0000090331 00000 n 0000090460 00000 n 0000095567 00000 n 0000090642 00000 n 0000095546 00000 n 0000095675 00000 n 0000100412 00000 n 0000095869 00000 n 0000100391 00000 n 0000100521 00000 n 0000106289 00000 n 0000148841 00000 n 0000100704 00000 n 0000106267 00000 n 0000106401 00000 n 0000240361 00000 n 0000111409 00000 n 0000106598 00000 n 0000111387 00000 n 0000111521 00000 n 0000115820 00000 n 0000111718 00000 n 0000115798 00000 n 0000115932 00000 n 0000119320 00000 n 0000116102 00000 n 0000119298 00000 n 0000119432 00000 n 0000124149 00000 n 0000119602 00000 n 0000124127 00000 n 0000124261 00000 n 0000128047 00000 n 0000124443 00000 n 0000128025 00000 n 0000128159 00000 n 0000132829 00000 n 0000128341 00000 n 0000132807 00000 n 0000132941 00000 n 0000248086 00000 n 0000137337 00000 n 0000133125 00000 n 0000137315 00000 n 0000137449 00000 n 0000243380 00000 n 0000142275 00000 n 0000148976 00000 n 0000137684 00000 n 0000142253 00000 n 0000142387 00000 n 0000147018 00000 n 0000142584 00000 n 0000146996 00000 n 0000147130 00000 n 0000148309 00000 n 0000147300 00000 n 0000148288 00000 n 0000148421 00000 n 0000149071 00000 n 0000149180 00000 n 0000149367 00000 n 0000149425 00000 n 0000150145 00000 n 0000150414 00000 n 0000159742 00000 n 0000160249 00000 n 0000159943 00000 n 0000160228 00000 n 0000160518 00000 n 0000163461 00000 n 0000163951 00000 n 0000164211 00000 n 0000175941 00000 n 0000176442 00000 n 0000176136 00000 n 0000176421 00000 n 0000176701 00000 n 0000179578 00000 n 0000180367 00000 n 0000180620 00000 n 0000199607 00000 n 0000200120 00000 n 0000199798 00000 n 0000200099 00000 n 0000200372 00000 n 0000203176 00000 n 0000203913 00000 n 0000204147 00000 n 0000224068 00000 n 0000224581 00000 n 0000224258 00000 n 0000224560 00000 n 0000224814 00000 n 0000227109 00000 n 0000227748 00000 n 0000228010 00000 n 0000234746 00000 n 0000235171 00000 n 0000235403 00000 n 0000240339 00000 n 0000240841 00000 n 0000240535 00000 n 0000240820 00000 n 0000241073 00000 n 0000243358 00000 n 0000243729 00000 n 0000243970 00000 n 0000248064 00000 n 0000248269 00000 n 0000248530 00000 n 0000253544 00000 n 0000253566 00000 n 0000253597 00000 n 0000253650 00000 n 0000253675 00000 n trailer << /Size 207 /Root 151 0 R /Info 1 0 R /ID [ ] >> startxref 253828 %%EOF yara-2.0.0/extra/000077500000000000000000000000001225703323600135735ustar00rootroot00000000000000yara-2.0.0/extra/TextMate-bundle.zip000066400000000000000000000073061225703323600173270ustar00rootroot00000000000000PK cv>YARA.tmbundle/UX 녈MMPKcv>YARA.tmbundle/info.plistUX MM]N0E+$J2#U te[`=:swע/=Nf8#t k xևJ"ۚɡjTnmD-PUj#}9<.T NPգ;^FAOi >i ɍ';WN\ɨ\“"'H3JBJ(!升/V,PK4,PK dv>YARA.tmbundle/Snippets/UX MMPKdv>%YARA.tmbundle/Snippets/rule.tmSnippetUX MMKo0p- <$p.q"izoF˖_ U˲X,/6,='?}IB\8ٮ㍏ XUU.4IyNaw9@۶ⲳp1֐Jc1*>BB3 F2U=N\roRկ9i!s usM)vWĭO^S%{no};*;҇,hp<h6A ߟPKMyPK ev> __MACOSX/UX MMPK ev>__MACOSX/YARA.tmbundle/UX MMPK ev> __MACOSX/YARA.tmbundle/Snippets/UX MMPKdv>0__MACOSX/YARA.tmbundle/Snippets/._rule.tmSnippetUX MMc`cg`b`MLVVP'q;!!A:fFhr~^nbrQ~nbIj^rbQj CŜςs k4+sլ 39dPKnPK bv>YARA.tmbundle/Syntaxes/UX 녈M녈MPK;cv>&YARA.tmbundle/Syntaxes/YARA.tmLanguageUX MBMWio@`*ٛBզR*J ƞnvMg\T$űg̼7;{ָ(ͤxm" giЯzZuv|PL9Ӧx|w",z>!4@~kx|Uޅ1B~@3T^Xa0$EքŦV] aZtdhJ<~b2uFHDцFzcFEo;g}Bۢ=Xğ56q)5XP/؆.TaVL16jZ`#De:4;̽0+"6 laUtKFȼɲ,粘y6$ir)4ۊU;i%#Rr&`9unf4Gv"OwkFQdDy^Ӑ"K#L&Tmnk7].eu(RŮMS끡9%tT$N*'qNp Ʃ+duprbt:uy_Y1sd8s= ecs;{>~bG&;1s!@g eBuݻ򇊿KN?\z^A PlXa{X|gbhwGvs|:WT1M⬨;oEFa_BoyNP}@$fK6Sv{OxH v=#چt9e-!xZ,T*~Wmn[Ρn q&jdOPKgA PK ev> __MACOSX/YARA.tmbundle/Syntaxes/UX MMPK;cv>1__MACOSX/YARA.tmbundle/Syntaxes/._YARA.tmLanguageUX MBMc`cg`b`MLVVP'q'!!A:f2Fhr~^nbrQ~nbIj^rbQj C59y F`̼T ȚPK@;jPKcv>__MACOSX/._YARA.tmbundleUX 녈MMc`cg`b`MLVVP'A @+PK%!(RPK cv> @AYARA.tmbundle/UX녈MMPKcv>4, @<YARA.tmbundle/info.plistUXMMPK dv> @AoYARA.tmbundle/Snippets/UXMMPKdv>My% @YARA.tmbundle/Snippets/rule.tmSnippetUXMMPK ev> @A4__MACOSX/UXMMPK ev> @Ak__MACOSX/YARA.tmbundle/UXMMPK ev> @A__MACOSX/YARA.tmbundle/Snippets/UXMMPKdv>n0 @__MACOSX/YARA.tmbundle/Snippets/._rule.tmSnippetUXMMPK bv> @AYARA.tmbundle/Syntaxes/UX녈M녈MPK;cv>gA & @YARA.tmbundle/Syntaxes/YARA.tmLanguageUXMBMPK ev> @A__MACOSX/YARA.tmbundle/Syntaxes/UXMMPK;cv>@;j1 @__MACOSX/YARA.tmbundle/Syntaxes/._YARA.tmLanguageUXMBMPKcv>%!(R @ __MACOSX/._YARA.tmbundleUX녈MMPK jF yara-2.0.0/extra/UltraEdit-wordfile.txt000066400000000000000000000012361225703323600200440ustar00rootroot00000000000000/L20"YARA rules" YARA_LANG Line Comment = // Block Comment On = /* Block Comment Off = */ Escape Char = \ String Chars = " File Extensions = YAR /Marker Characters = "//" /Delimiters = ~!@%^&*()-+=|\/{}[]<>:;"' , .? /Function String = "rule [a-zA-Z0-9_]*" /Indent Strings = "{" /Unindent Strings = "}" /Open Brace Strings = "{" "(" "[" /Close Brace Strings = "}" ")" "]" /C1"YARA Keywords" and at any all ascii condition contains entrypoint for false filesize fullword global is in include int8 int16 int32 meta matches nocase not or of private rule rva section strings them true uint8 uint16 uint32 wide /C4"YARA Strings" " // / yara-2.0.0/extra/logo-small.psd000066400000000000000000011535601225703323600163640ustar00rootroot000000000000008BPS`t8BIMZ%GZ%GZ%G8BIM%ɟK=(H5j+8BIM$ Adobe Photoshop CS5 Macintosh 2008-05-13T13:58:36+02:00 2013-11-25T00:30:05+01:00 2013-11-25T00:30:05+01:00 application/vnd.adobe.photoshop xmp.iid:85CB93200B206811871FB2CADA4019E9 xmp.did:0A801174072068118F62D40F263793E9 xmp.did:01801174072068118F62D40F263793E9 created xmp.iid:01801174072068118F62D40F263793E9 2008-05-13T14:35:59+02:00 Adobe Photoshop CS4 (11.0x20080609 [20080609.m.379 2008/06/09:02:00:00 cutoff; m branch]) Macintosh derived converted from image/tiff to application/vnd.adobe.photoshop saved xmp.iid:0A801174072068118F62D40F263793E9 2008-05-13T15:04:28+02:00 Adobe Photoshop CS4 (11.0x20080609 [20080609.m.379 2008/06/09:02:00:00 cutoff; m branch]) Macintosh /metadata saved xmp.iid:0180117407206811A72C818E65597EE5 2013-11-23T21:41:35+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0280117407206811A72C818E65597EE5 2013-11-23T21:41:35+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0380117407206811A72C818E65597EE5 2013-11-23T21:41:49+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0480117407206811A72C818E65597EE5 2013-11-23T21:41:49+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0580117407206811A72C818E65597EE5 2013-11-23T22:08:29+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0680117407206811A72C818E65597EE5 2013-11-23T22:10:52+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:7282099C0C206811A72C818E65597EE5 2013-11-24T02:17:21+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:7382099C0C206811A72C818E65597EE5 2013-11-24T02:17:21+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:7482099C0C206811A72C818E65597EE5 2013-11-24T02:17:58+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4A33FDE52E206811A72C818E65597EE5 2013-11-24T02:23:56+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4C33FDE52E206811A72C818E65597EE5 2013-11-24T02:26:05+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4D33FDE52E206811A72C818E65597EE5 2013-11-24T02:26:24+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4E33FDE52E206811A72C818E65597EE5 2013-11-24T02:26:39+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4F33FDE52E206811A72C818E65597EE5 2013-11-24T02:26:52+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:5033FDE52E206811A72C818E65597EE5 2013-11-24T02:27:01+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:5333FDE52E206811A72C818E65597EE5 2013-11-24T02:27:46+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:5433FDE52E206811A72C818E65597EE5 2013-11-24T02:28:06+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:04CAFD842F206811A72C818E65597EE5 2013-11-24T02:28:22+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:05CAFD842F206811A72C818E65597EE5 2013-11-24T02:28:40+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:06CAFD842F206811A72C818E65597EE5 2013-11-24T02:28:47+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:07CAFD842F206811A72C818E65597EE5 2013-11-24T02:32:28+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:08CAFD842F206811A72C818E65597EE5 2013-11-24T02:33:09+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:09CAFD842F206811A72C818E65597EE5 2013-11-24T02:33:23+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0ACAFD842F206811A72C818E65597EE5 2013-11-24T02:34:17+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0BCAFD842F206811A72C818E65597EE5 2013-11-24T02:34:38+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0CCAFD842F206811A72C818E65597EE5 2013-11-24T02:34:46+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0DCAFD842F206811A72C818E65597EE5 2013-11-24T02:35:23+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0ECAFD842F206811A72C818E65597EE5 2013-11-24T02:36:11+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:3831C7B030206811A72C818E65597EE5 2013-11-24T02:36:45+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:3931C7B030206811A72C818E65597EE5 2013-11-24T02:37:06+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:3A31C7B030206811A72C818E65597EE5 2013-11-24T02:37:13+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:3B31C7B030206811A72C818E65597EE5 2013-11-24T02:37:26+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:3C31C7B030206811A72C818E65597EE5 2013-11-24T02:37:50+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:3D31C7B030206811A72C818E65597EE5 2013-11-24T02:38:16+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:3E31C7B030206811A72C818E65597EE5 2013-11-24T02:38:51+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:3F31C7B030206811A72C818E65597EE5 2013-11-24T02:38:59+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4131C7B030206811A72C818E65597EE5 2013-11-24T02:41:35+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4231C7B030206811A72C818E65597EE5 2013-11-24T02:42:22+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2573D17C31206811A72C818E65597EE5 2013-11-24T02:43:12+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2673D17C31206811A72C818E65597EE5 2013-11-24T02:44:26+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2773D17C31206811A72C818E65597EE5 2013-11-24T02:44:51+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2873D17C31206811A72C818E65597EE5 2013-11-24T02:46:09+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2973D17C31206811A72C818E65597EE5 2013-11-24T02:46:14+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2A73D17C31206811A72C818E65597EE5 2013-11-24T02:47:54+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2B73D17C31206811A72C818E65597EE5 2013-11-24T02:48:05+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2C73D17C31206811A72C818E65597EE5 2013-11-24T02:48:34+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2D73D17C31206811A72C818E65597EE5 2013-11-24T02:49:34+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2E73D17C31206811A72C818E65597EE5 2013-11-24T02:50:14+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4894AFA332206811A72C818E65597EE5 2013-11-24T02:50:42+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4994AFA332206811A72C818E65597EE5 2013-11-24T02:51:02+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4A94AFA332206811A72C818E65597EE5 2013-11-24T02:51:41+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4B94AFA332206811A72C818E65597EE5 2013-11-24T02:51:50+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4C94AFA332206811A72C818E65597EE5 2013-11-24T02:52:47+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4F94AFA332206811A72C818E65597EE5 2013-11-24T02:55:31+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:5094AFA332206811A72C818E65597EE5 2013-11-24T02:56:46+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:5194AFA332206811A72C818E65597EE5 2013-11-24T02:56:57+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:F97F117407206811871FB2CADA4019E9 2013-11-24T18:09:50+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:FA7F117407206811871FB2CADA4019E9 2013-11-24T18:09:59+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:FB7F117407206811871FB2CADA4019E9 2013-11-24T18:10:22+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:FD7F117407206811871FB2CADA4019E9 2013-11-24T18:11+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0080117407206811871FB2CADA4019E9 2013-11-24T18:13:28+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:1E39369F08206811871FB2CADA4019E9 2013-11-24T18:15:26+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2139369F08206811871FB2CADA4019E9 2013-11-24T18:18:32+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2239369F08206811871FB2CADA4019E9 2013-11-24T18:20:41+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2339369F08206811871FB2CADA4019E9 2013-11-24T18:27:06+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2439369F08206811871FB2CADA4019E9 2013-11-24T18:27:27+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2539369F08206811871FB2CADA4019E9 2013-11-24T18:27:36+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2639369F08206811871FB2CADA4019E9 2013-11-24T18:29:21+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2739369F08206811871FB2CADA4019E9 2013-11-24T18:32:11+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:84CB93200B206811871FB2CADA4019E9 2013-11-24T18:34:28+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:85CB93200B206811871FB2CADA4019E9 2013-11-25T00:30:05+01:00 Adobe Photoshop CS5 Macintosh / xmp.iid:01801174072068118F62D40F263793E9 xmp.did:01801174072068118F62D40F263793E9 xmp.did:01801174072068118F62D40F263793E9 3 sRGB IEC61966-2.1 yara yara False 8BIM: printOutputPstSboolInteenumInteClrmprintSixteenBitbool printerNameTEXT PDFwriter8BIM;printOutputOptionsCptnboolClbrboolRgsMboolCrnCboolCntCboolLblsboolNgtvboolEmlDboolIntrboolBckgObjcRGBCRd doub@oGrn doub@oBl doub@oBrdTUntF#RltBld UntF#RltRsltUntF#Pxl@r vectorDataboolPgPsenumPgPsPgPCLeftUntF#RltTop UntF#RltScl UntF#Prc@Y8BIM,,8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM5d8BIM8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM08BIM- 8BIM@@ 8BIM6nullVrsnlongenabbool numBeforelongnumAfterlongSpcnlong minOpacitylong maxOpacitylong2BlnMlong8BIM3null Vrsnlong frameStepObjcnull numeratorlong denominatorlongX frameRatedoub@>timeObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlongp denominatorlongX workInTimeObjcnull numeratorlong denominatorlongX workOutTimeObjcnull numeratorlongp denominatorlongXLCntlongglobalTrackListVlLs hasMotionbool8BIM4FnullVrsnlongsheetTimelineOptionsVlLs8BIM8BIMnullbaseNameTEXTUserboundsObjcRct1Top longLeftlongBtomlong`RghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong`RghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM H HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km8BIM8BIM S6e@7 Adobe_CMAdobed            6" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?n>!"Aѣڶ~\2zKpix1 u{[1nWK!Ẕ;R 5WDqrQ1JBxϮKk]?׈,A`w?;X=^g[O8?Ř N?qԒNA -L\cLʣ={rKctnɲK N{==O_X1tuLjMV9 7{.jˣI;)XYi{q}kbHcM\=}'~__I@,]zޭSsjLz'WQ%ND?/Ҋh*6װ_})XW Iȥ۩Wmnkxsk~7z?O9X`;o;k$ \6wx+5[^eߑw=Ѻ/ǧt~=},>X-sÀ.s1$\'z{4?/҉?/҈XO \'m#/ z{Z?yoU܌ka;OǢ?l'5f1X0clei>enw~o%cY:^%y}x%zm^{rk2 }vNZ3+I1a\p>oK1{r:,7.wZ'g}UmrpkS9ikik,_cZ'g}HF>kfX*F2+^)|rizf?uşԿ/~=K _޾jϒ'1|t,o"Εc6I[ Wa}pIa\r-cX[^J[c=5lϨlu q-A'8U汻H#UO-f]~WUnN6K F{N+}{oWǭEשS_lﳜ=9ށz@Z:=.:\̆'W"?+?X+.u*?Wc;*?'+g_կ;r}Mհ0zv@۹Ktz#rﲎZll}fߺ+ ?q}w>tGfvU89cgk~$;[ ,èe:u5cnqbٹ߹]kKSǭ۷D츉X}{㾬aoc]},o'n~{:oH.k9Mi'Kkutc~jGQ?X8cg'/ ⬺,Ʊic~~n q0$K>BpFWO_NwSNkjnۨmu@1:|w ff=[k{@k;vvߡ/]kOY~&C c!w=c3;1[bZ!=0dwviv߳7vN%]sӒmq[Ybmt1$5F㣥[ӺLs}J\5 }/AǾW~}U˓gK2 c48`jѷ޾^U,湮^ǵױ\OaImVICVFbǽJ?+}W)~% a}lzEFݻI7Ɠo+%E _W\TƮ?O*:/q'}\ɷ+2s='ﰼm;AQU323r+ݕk\l~֏rU(LqW!eqq/k{Tu忝=COcѺFEQ;{|.+"AЂˣoͿWGA[[n9tWd!u/վ;c]=Q_꺜a3.]# {[$!ލmej4S_o9 !yN>sN%ga}t᭏h۷b'\)oU+Ɠo+- Zn_ax;%Zڌbת_ӮɗW?Y1w`"b]%-nCu~?\?龹~[f^n>85co\*ٚqmwyU=v2q6T.ԣ>;6mxJ^O9J~ﮝF,lw;КnI{b^W7/-wFF]"`zz}1_՛Ժ%fcm5G=5)$7~TU$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$8BIM!UAdobe PhotoshopAdobe Photoshop CS58BIM"MM*X(12i, -'-'Adobe Photoshop CS5 Macintosh2013:11:25 00:30:05`z(HH8BIMmopt4TargetSettingsMttCObjc NativeQuadBl longGrn longRd longTrnsbool fileFormatenum FileFormatPNG24 interlacedbool noMatteColorbooltransparencyDitherAlgorithmenumDitherAlgorithmNonetransparencyDitherAmountlong8BIMmsetnullHTMLBackgroundSettingsObjcnullBackgroundColorBluelongBackgroundColorGreenlongBackgroundColorRedlongBackgroundColorStatelongBackgroundImagePathTEXTUseImageAsBackgroundbool HTMLSettingsObjcnullAlwaysAddAltAttributebool AttributeCaselong CloseAllTagsboolEncodinglongFileSavingSettingsObjcnull CopyBackgroundboolDuplicateFileNameBehaviorlongHtmlFileNameComponentsVlLslonglonglonglonglonglongImageSubfolderNameTEXTimagesNameCompatibilityObjcnull NameCompatMacboolNameCompatUNIXboolNameCompatWindowsboolOutputMultipleFilesboolSavingFileNameComponentsVlLs longlonglonglonglonglonglonglonglongSliceFileNameComponentsVlLslonglonglonglonglonglongUseImageSubfolderboolUseLongExtensionsboolGoLiveCompatibleboolImageMapLocationlong ImageMapTypelongIncludeCommentsboolIncludeZeroMarginsboolIndentlong LineEndingslong OutputXHTMLboolQuoteAllAttributesboolSpacersEmptyCellslongSpacersHorizontallongSpacersVerticallong StylesFormatlong TDWidthHeightlongTagCaselongUseCSSboolUseLongHTMLExtensionboolMetadataOutputSettingsObjcnull AddCustomIRboolAddEXIFboolAddXMPboolAddXMPSourceFileURIbool ColorPolicylongMetadataPolicylongWriteMinimalXMPboolWriteXMPToSidecarFilesboolVersionlong8BIMms4w8BIMmaniIRFR8BIMAnDsnullAFStlongFrInVlLsObjcnullFrIDlong{JFrDllongFStsVlLsObjcnullFsIDlongAFrmlongFsFrVlLslong{JLCntlong8BIMRoll8BIMmfri8BIMMt168BIMLr168;_;;8BIMnorm)(yara8BIMTySh(?8O ?zHp@KX@R? *2TxLrTxt TEXTyara textGriddingenum textGriddingNoneOrntenumOrntHrznAntAenumAnntAnSm TextIndexlong EngineDatatdta& << /EngineDict << /Editor << /Text (yara ) >> /ParagraphRun << /DefaultRunData << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> /RunArray [ << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> ] /RunLengthArray [ 5 ] /IsJoinable 1 >> /StyleRun << /DefaultRunData << /StyleSheet << /StyleSheetData << >> >> >> /RunArray [ << /StyleSheet << /StyleSheetData << /Font 1 /FontSize 203.31874 /FauxBold false /FauxItalic false /AutoLeading true /Leading 90.0 /HorizontalScale 1.07 /VerticalScale 1.0 /Tracking 0 /AutoKerning false /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 14 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 .13154 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 .67908 .67908 .67908 ] >> /FillFlag true /StrokeFlag false /FillFirst false /YUnderline 1 /OutlineWidth .47982 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> >> << /StyleSheet << /StyleSheetData << /Font 1 /FontSize 203.31874 /FauxBold false /FauxItalic false /AutoLeading true /Leading 90.0 /HorizontalScale 1.07 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 14 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 .13154 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 .67908 .67908 .67908 ] >> /FillFlag true /StrokeFlag false /FillFirst false /YUnderline 1 /OutlineWidth .47982 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> >> ] /RunLengthArray [ 1 4 ] /IsJoinable 2 >> /GridInfo << /GridIsOn false /ShowGrid false /GridSize 18.0 /GridLeading 22.0 /GridColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /GridLeadingFillColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /AlignLineHeightToGridFlags false >> /AntiAlias 3 /UseFractionalGlyphWidths true /Rendered << /Version 1 /Shapes << /WritingDirection 0 /Children [ << /ShapeType 0 /Procession 0 /Lines << /WritingDirection 0 /Children [ ] >> /Cookie << /Photoshop << /ShapeType 0 /PointBase [ 0.0 0.0 ] /Base << /ShapeType 0 /TransformPoint0 [ 1.0 0.0 ] /TransformPoint1 [ 0.0 1.0 ] /TransformPoint2 [ 0.0 0.0 ] >> >> >> >> ] >> >> >> /ResourceDict << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 2 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> ] /FontSet [ << /Name (Bomr) /Script 0 /FontType 1 /Synthetic 2 >> << /Name (Longview) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (MyriadPro-Regular) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> /DocumentResources << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 2 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> ] /FontSet [ << /Name (Bomr) /Script 0 /FontType 1 /Synthetic 2 >> << /Name (Longview) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (MyriadPro-Regular) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> >>warp warpStyleenum warpStylewarpNone warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrzn8BIMluni yara8BIMlnsrrend8BIMlyid 8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAԤ0K@8BIMfxrp0(VCצ@XL<8BIMnorm(Shape 18BIMSoCopnullClr ObjcRGBCRd doub@hpGrn doub@7pdBl doub@71`8BIMvmsk    . . ....8BIMluniShape 18BIMlnsrshap8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAԤ0L8BIMfxrpIE4A4ht_/;;;8BIMnorm,({8BIMluni{8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAԤ0O8BIMfxrp@:Ix @8. H엍u0(BG t:8w`w`w:8:%N̏V s ( HZ ;e?Ǒdب.q'櫂j8X\ DI^ToYT 2 PF%f7Q/<ȤpRm $kdwސHNBI:z)Ӓ`4d׌<5iv9!vcIi-U]}vaS'QJ]c=6؍;+s&-Qvߓl]_;r}% ;ó+vة}G38In{Mv$٥[8 oxLhyퟣF^/$-ċ`B1NaWw$;IvJ |t)ffiLzfOl %3M&v955g,ɺٳX*;Ox$[c:sc@odu36#cǟdIrxL2d,]bSK v.p#nvIqUN-<打t>\qNN>_v2;;IOb#Ov*;?I|3OPAkڊ$>5ak(&jqQs;?I}bl.TvJ>JB ٰۘ׈Ҩ57;_IvXQZ3+H$oWɆ]8僝$)|5~neIb0zuB띯$ݎ2sWQk|n9,s“ ҤJ+{Fj(-RxJR5$1:=3hyG$^kUߎ]!c;9W$Qro3kF$nc畇$_;~qeo+v>|׿s)1fH">d'|>b_5rV23';$s8;Z|tvn&;⮉]W\SJ2u%/uacW8]}P-fEbwSo~”hO]׋7[Qk  ^WǮ^얪>U`Th-Q1Η9; .XCT $SQ{Cw@9ڹ9ֹ ":lNmIq\iaqkp,:bc):pt;ArˮyueФrfWEZ[`DAf'OXH  ߐ`;؛;Vw\ݹsu՝;Ww\ݹsu՝;Ww\ݹsu՝;Ww\ݹsu՝;Ww\ݹsu՝;Ww\ݹsu՝;Ww\ݹsu՝;Ww\ݹsu՝;Ww\ݹsu՝; 0C;CH1 Om ? 0XH1 Om ? 0XH?H[Qƿ 2d!C 28tppPhBuT0` :TPPA*`B  T0ЀB=,m~9w=;^Q0LFUJ⩟ƀubQd9YA{bF^քT #cDyI &FI̸@C#~ΎC%4ç_~h[u/C#Ka,U܊U޸Uc+_nǂyiW7{t O~V>awl%qrj2^y_C&Z~РrؽMMG;5c (w\K0hܱt;Pę)&ڦ3nxSDdnċ^%f08oY:kz3vuʮ"M,ɠFi<9)P^U-SY [3j9MUwMCњd1DVɣ]+3$އGޱ:M:5M7aMrvO(9n#!kU)us6#NOXb-Kﱢ4>aK#d >B/fi+E<|H9 ۄKl|6lja5մ4e[\AhзSx^ֿީQCʐcf)Fd3jHWzmU"yeۍ^Slm,boDaMvp:2!6K5 9!ŴM|F4Hԡjށ2l3PRd /uSIj6te,JG54LguhJmF/.xwF_Aiv|L/06{׌2L|>|>|'_TH1 0'hLppS|>|>|>|'_TH1 0'hLppS|>|>|>|'_T8BIMLMsk28BIMPat28BIMTxt2Z /DocumentResources << /FontSet << /Resources [ << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (Bomr) /Type 1 /Synthetic 2 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (Longview) /Type 1 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (TimesNewRomanPSMT) /Type 1 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (MyriadPro-Regular) /Type 0 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (AdobeInvisFont) /Type 0 >> >> >> ] /DisplayList [ << /Resource 2 >> ] >> /MojiKumiCodeToClassSet << /Resources [ << /Resource << /Name () >> >> ] /DisplayList [ << /Resource 0 >> ] >> /MojiKumiTableSet << /Resources [ << /Resource << /Name (Photoshop6MojiKumiSet4) /Members << /CodeToClass 0 /PredefinedTag 2 >> >> >> << /Resource << /Name (Photoshop6MojiKumiSet3) /Members << /CodeToClass 0 /PredefinedTag 4 >> >> >> << /Resource << /Name (Photoshop6MojiKumiSet2) /Members << /CodeToClass 0 /PredefinedTag 3 >> >> >> << /Resource << /Name (Photoshop6MojiKumiSet1) /Members << /CodeToClass 0 /PredefinedTag 1 >> >> >> << /Resource << /Name (YakumonoHankaku) /Members << /CodeToClass 0 /PredefinedTag 1 >> >> >> << /Resource << /Name (GyomatsuYakumonoHankaku) /Members << /CodeToClass 0 /PredefinedTag 3 >> >> >> << /Resource << /Name (GyomatsuYakumonoZenkaku) /Members << /CodeToClass 0 /PredefinedTag 4 >> >> >> << /Resource << /Name (YakumonoZenkaku) /Members << /CodeToClass 0 /PredefinedTag 2 >> >> >> ] /DisplayList [ << /Resource 0 >> << /Resource 1 >> << /Resource 2 >> << /Resource 3 >> << /Resource 4 >> << /Resource 5 >> << /Resource 6 >> << /Resource 7 >> ] >> /KinsokuSet << /Resources [ << /Resource << /Name (None) /Data << /NoStart () /NoEnd () /Keep () /Hanging () /PredefinedTag 0 >> >> >> << /Resource << /Name (PhotoshopKinsokuHard) /Data << /NoStart (!\),.:;?]}    0!! 0000 0 0 0000A0C0E0G0I0c000000000000000000000000 =]) /NoEnd (\([{  00 0 0000 ;[) /Keep (  % &) /Hanging (00 ) /PredefinedTag 1 >> >> >> << /Resource << /Name (PhotoshopKinsokuSoft) /Data << /NoStart (  0000 0 0 00000000 =]) /NoEnd (  00 0 000;[) /Keep (  % &) /Hanging (00 ) /PredefinedTag 2 >> >> >> << /Resource << /Name (Hard) /Data << /NoStart (!\),.:;?]}    0!! 0000 0 0 0000A0C0E0G0I0c000000000000000000000000 =]) /NoEnd (\([{  00 0 0000 ;[) /Keep (  % &) /Hanging (00 ) /PredefinedTag 1 >> >> >> << /Resource << /Name (Soft) /Data << /NoStart (  0000 0 0 00000000 =]) /NoEnd (  00 0 000;[) /Keep (  % &) /Hanging (00 ) /PredefinedTag 2 >> >> >> ] /DisplayList [ << /Resource 0 >> << /Resource 1 >> << /Resource 2 >> << /Resource 3 >> << /Resource 4 >> ] >> /StyleSheetSet << /Resources [ << /Resource << /Name (Normal RGB) /Features << /Font 3 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true /FillBackgroundColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 1.0 1.0 0.0 ] >> >> /FillBackgroundFlag false /UnderlineStyle 0 /DashedUnderlineGapLength 3.0 /DashedUnderlineDashLength 3.0 /SlashedZero false /StylisticSets 0 /CustomFeature << /StreamTag /SimpleCustomFeature >> >> >> >> ] /DisplayList [ << /Resource 0 >> ] >> /ParagraphSheetSet << /Resources [ << /Resource << /Name (Normal RGB) /Features << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 0 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 0 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /Kinsoku /nil /KurikaeshiMojiShori false /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << >> /ParagraphDirection 0 /JustificationMethod 0 /ComposerEngine 0 /ListStyle /nil /ListTier 0 /ListSkip false /ListOffset 0 >> >> >> ] /DisplayList [ << /Resource 0 >> ] >> /TextFrameSet << /Resources [ << /Resource << /Bezier << /Points [ 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ] >> /Data << /Type 0 /LineOrientation 0 /TextOnPathTRange [ -1.0 -1.0 ] /RowGutter 0.0 /ColumnGutter 0.0 /FirstBaselineAlignment << /Flag 1 /Min 0.0 >> /PathData << /Spacing -1 >> >> >> >> ] >> /ListStyleSet << /Resources [ << /Resource << /Name (kPredefinedNumericListStyleTag) /PredefinedTag 1 >> >> << /Resource << /Name (kPredefinedUppercaseAlphaListStyleTag) /PredefinedTag 2 >> >> << /Resource << /Name (kPredefinedLowercaseAlphaListStyleTag) /PredefinedTag 3 >> >> << /Resource << /Name (kPredefinedUppercaseRomanNumListStyleTag) /PredefinedTag 4 >> >> << /Resource << /Name (kPredefinedLowercaseRomanNumListStyleTag) /PredefinedTag 5 >> >> << /Resource << /Name (kPredefinedBulletListStyleTag) /PredefinedTag 6 >> >> ] /DisplayList [ << /Resource 5 >> << /Resource 4 >> << /Resource 3 >> << /Resource 2 >> << /Resource 1 >> << /Resource 0 >> ] >> >> /DocumentObjects << /DocumentSettings << /HiddenGlyphFont << /AlternateGlyphFont 4 /WhitespaceCharacterMapping [ << /WhitespaceCharacter ( ) /AlternateCharacter (1) >> << /WhitespaceCharacter ( ) /AlternateCharacter (6) >> << /WhitespaceCharacter ( ) /AlternateCharacter (0) >> << /WhitespaceCharacter ( \)) /AlternateCharacter (5) >> << /WhitespaceCharacter () /AlternateCharacter (5) >> << /WhitespaceCharacter (0) /AlternateCharacter (1) >> << /WhitespaceCharacter () /AlternateCharacter (3) >> ] >> /NormalStyleSheet 0 /NormalParagraphSheet 0 /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 /UseSmartQuotes true /SmartQuoteSets [ << /Language 0 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 1 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 2 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 3 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 4 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 5 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 6 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( 9) /CloseSingleQuote ( :) >> << /Language 7 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 8 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 9 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 10 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 11 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 12 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 13 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 14 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 15 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 16 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 17 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 18 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 19 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 20 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 21 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 22 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 23 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 24 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 25 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( 9) /CloseSingleQuote ( :) >> << /Language 26 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 27 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 28 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 29 /OpenDoubleQuote (0) /CloseDoubleQuote (0) >> << /Language 30 /OpenDoubleQuote (0 ) /CloseDoubleQuote (0 ) >> << /Language 31 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 32 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 33 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 34 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 35 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 36 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 37 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 38 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 39 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote (<) /CloseSingleQuote (>) >> << /Language 40 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 41 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote (<) /CloseSingleQuote (>) >> << /Language 42 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 43 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 44 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( 9) /CloseSingleQuote ( :) >> << /Language 45 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> ] >> /TextObjects [ << /Model << /Text (yara ) /ParagraphRun << /RunArray [ << /RunData << /ParagraphSheet << /Name () /Features << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 0 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 1 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /Kinsoku /nil /KurikaeshiMojiShori false /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << /Font 0 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true /FillBackgroundColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 1.0 1.0 0.0 ] >> >> /FillBackgroundFlag false /UnderlineStyle 0 /DashedUnderlineGapLength 3.0 /DashedUnderlineDashLength 3.0 >> /ParagraphDirection 0 /JustificationMethod 0 /ComposerEngine 0 /ListStyle /nil /ListTier 0 /ListSkip false /ListOffset 0 >> /Parent 0 >> >> /Length 5 >> ] >> /StyleRun << /RunArray [ << /RunData << /StyleSheet << /Name () /Parent 0 /Features << /Font 1 /FontSize 203.31874 /FauxBold false /FauxItalic false /AutoLeading true /Leading 90.0 /HorizontalScale 1.07 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 0 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures true /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms true /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 14 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 .13154 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 .67908 .67908 .67908 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst false /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth .47982 /MiterLimit 1.91928 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true /FillBackgroundColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 1.0 1.0 0.0 ] >> >> /FillBackgroundFlag false /UnderlineStyle 0 /DashedUnderlineGapLength 3.0 /DashedUnderlineDashLength 3.0 /SlashedZero false /StylisticSets 0 /CustomFeature << /StreamTag /SimpleCustomFeature >> >> >> >> /Length 5 >> ] >> /KernRun << /RunArray [ << /RunData << >> /Length 5 >> ] >> /AlternateGlyphRun << /RunArray [ << /RunData << >> /Length 5 >> ] >> /FirstKern 0 >> /View << /Frames [ << /Resource 0 >> ] /RenderedData << /RunArray [ << /RunData << /LineCount 1 >> /Length 5 >> ] >> /Strikes [ << /StreamTag /PathSelectGroupCharacter /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 0 /Children [ << /StreamTag /FrameStrike /Frame 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /LineStrike /Baseline 0.0 /Leading 243.9825 /EMHeight 203.31874 /DHeight 146.5914 /SelectionAscent -174.95352 /SelectionDescent 50.42327 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -174.95352 0.0 50.42327 ] /ChildProcession 1 /Children [ << /StreamTag /Segment /Mapping << /CharacterCount 5 /GlyphCount 0 /WRValid false >> /FirstCharacterIndexInSegment 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /GlyphStrike /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -174.95352 457.50253 50.42327 ] /Glyphs [ 86 62 79 62 3 ] /GlyphAdjustments << /Data [ << >> ] /RunLengths [ 5 ] >> /VisualBounds [ 0.0 -174.95352 457.50253 50.42327 ] /RenderedBounds [ 0.0 -174.95352 457.50253 50.42327 ] /Invalidation [ 0.0 -174.95352 561.92609 50.42327 ] /ShadowStylesRun << /Data [ << /Index 0 /Font 1 /Scale [ 1.07 1.0 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 0 /EmbeddingLevel 0 /ComplementaryFontIndex 0 >> << /Index 1 /Font 1 /Scale [ 1.07 1.0 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 0 /EmbeddingLevel 0 /ComplementaryFontIndex 0 >> ] /RunLengths [ 1 4 ] >> /EndsInCR true /SelectionAscent -174.95352 /SelectionDescent 50.42327 /MainDir 0 >> ] >> ] >> ] >> ] >> ] >> ] >> ] >> /OpticalAlignment false >> ] /OriginalNormalStyleFeatures << /Font 3 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true /FillBackgroundColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 1.0 1.0 0.0 ] >> >> /FillBackgroundFlag false /UnderlineStyle 0 /DashedUnderlineGapLength 3.0 /DashedUnderlineDashLength 3.0 /SlashedZero false /StylisticSets 0 /CustomFeature << /StreamTag /SimpleCustomFeature >> >> /OriginalNormalParagraphFeatures << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 0 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 0 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /Kinsoku /nil /KurikaeshiMojiShori false /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << >> /ParagraphDirection 0 /JustificationMethod 0 /ComposerEngine 0 /ListStyle /nil /ListTier 0 /ListSkip false /ListOffset 0 >> >>8BIMFMsk 2#9KKKKKKKKKKKKKKKKKKKKKKKK˳KKKKQKKKKKKKKKKKKKKKKKKKKKKKKKKQKKKKKKKKKKKKKKKKKKKKKKKKKQKKKKKKKKKKKKKKKKKKKK7{KKKKQKKKKKKKKKKKKKKKKKKKKKKKQKKKKKKKKKKKKKKKKKKةKKKKQKKKKKKKKKKKKKKKKK˳gKKKKQKKKKKKKKKKKKKKKKK/UKKKKQKKKKKKKKKKKKKKKK͍KKKKQKKKKKKKKKKKKKKKKKKKKQKKKKKKKKKKKKKKKK7%UKKKKQKKKKKKKKKKKKKKK%KKKKKKKKKKKKKQKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKQKKKKKKKKKKKKKKKڃ KKKKKKKKKKKKKKKKQKKKKKKKKKKKKKKKةKKKKKKKKKKKKKKKKQKKKKKKKKKKKKKKK͍KKKKKKKKKKKKKKKKQKKKKKKKKKKKKKKK˳KKKKKKKKKKKKKKKKQKKKKKKKKKKKKKKKڃ˳KKKKKKKKKKKKKKKKQKKKKKKKKKKKKKKK gKKKKKKKKKKKKKKKKQiՐՐՐլiKKKKKKKKKKKKKKK˳KKKKKKKKKKKKKKKKQiՐՐՐՐՐՐՐՐՐՐՐՐՐՐiiՐՐՐՐՐՐՐՐՐՐՐՐՐՐ5ՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐiOՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐg&!!!!!!!!!ՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐiOKKKKKKKKKKKKKKKK%KKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iY@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!g&!!!!!!!!!!!!!!!!OK\!!!!!!!!!!!Y@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!g&KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iY@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!u 5!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Y@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!u 5KKKKKKKKKKKKKKKK%KKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iY@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Y@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!KKKKKKKKKKKKKKKK˳KKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iY@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!K\O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Y@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!K\OKKKKKKKKKKKKKKKKڃKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iY@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/!!!!!!!!!!!!!!!!5/!!!!!!!!!!!!!!!Y@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/KKKKKKKKKKKKKKKKKAKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iY@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!g&!!!!!!!!!!!!!!!!Y@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!KKKKKKKKKKKKKKKKK9KKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iY@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Y@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iKKKKKKKKKKKKKKKKKA KKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iY@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Y@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iY@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Y@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!KKKKKKKKKKKKKKKKKK{9KKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iY@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!5!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Y@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!5KKKKKKKKKKKKKKKKKK KKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iY@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Y@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!KKKKKKKKKKKKKKKKKK9AKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iOiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiig&/!!!!!!!!!!!!!!!!!!=v!!!!!!!!!!!!!!!!ՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐOiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiig&/!!!!!!!!!!!!!!!!!!/KKKKKKKKKKKKKKKKKKKAKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i/!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!/!!!!!!!!!!!!!!!!!OKKKKKKKKKKKKKKKKKKKٗٗKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i5K\!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!5K\!!!!!!!!!!!!!!!!KKKKKKKKKKKKKKKKKKK KKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i/!!!!!!!!!!!!!!!g&!!!!!!!!!!!!!!!!/!!!!!!!!!!!!!!!g&KKKKKKKKKKKKKKKKKKKKqKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!K\!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!K\KKKKKKKKKKKKKKKKKKK9KKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!KKKKKKKKKKKKKKKKKٗqKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iY@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Y@!!!!!!!!!!!!!!!KKKKKKKKKKKKKKٗ KKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iY@!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!Y@!!!!!!!!!!!!!!!iKKKKKKKKKKK%/{KKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iY@!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!Y@!!!!!!!!!!!!!!!iKKKKKKKKK{KKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iY@!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!Y@!!!!!!!!!!!!!!!iKKKKKKKKKg79KKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i5Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@/!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!5Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@/!!!!!!!!!!!!!!!iKKKKKKKK9͍KKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iK\!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!K\!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iKKKKKKKK{ ڃKKKKKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i=v!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!=v!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iKKKKKKKK׽g%KKKKKKKKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iu !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!u !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iK\!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!K\!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iKKKKKKKKAg/KKKKKKKKKKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ig&!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!g&!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iKKKKKKKK/KKKKKKKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iKKKKKKKK/KKKKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ii!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iKKKKKKKKUKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iY@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!Y@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iKKKKKKKKq]̡KKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ii!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iKKKKKKKKKKqKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iu !!!!!!!!!!!!!!!!!!!K\ՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐ=v!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!u !!!!!!!!!!!!!!!!!!!K\ՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐ=v!!!!!!!!!!!!!!!iKKKKKKKKKKKKU{%KKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i=v!!!!!!!!!!!!!!!!!K\iY@!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!=v!!!!!!!!!!!!!!!!!K\iY@!!!!!!!!!!!!!!!iKKKKKKKKKKKKKK%ڃKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!u !!!!!!!!!!!!!!!i5!!!!!!!!!!!!!!!!!u Y@!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!5!!!!!!!!!!!!!!!!!u Y@!!!!!!!!!!!!!!!iKKKKKKKKKKKKKKKK9K7KKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!Y@!!!!!!!!!!!!!!!ii!!!!!!!!!!!!!!!!=vY@!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!=vY@!!!!!!!!!!!!!!!iKKKKKKKKKKKKKKKK̡%KKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!/!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!Y@!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Y@!!!!!!!!!!!!!!!iKKKKKKKKKKKKKKK9ةKKKKKKKKKKKKKKKQi!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!iY@!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iY@!!!!!!!!!!!!!!!iKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKQO!!!!!!!!!!!!!!!!K\!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!Y@!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Y@!!!!!!!!!!!!!!!iKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!u !!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!/Y@!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/Y@!!!!!!!!!!!!!!!iKKKKKKKKKKKKK͍ٗKKKKKKKKKKKKKKKKKQg&!!!!!!!!!!!!!!!!!Y@i!!!!!!!!!!!!!!!ii!!!!!!!!!!!!!!!!!=viY@!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!!=viY@!!!!!!!!!!!!!!!iKKKKKKKKKKKKK/KKKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!=viiiiiiiiiiiiiiiu !!!!!!!!!!!!!!!i5!!!!!!!!!!!!!!!!!!!K\iiiiiiiiiiiiiiiiiiiiiK\!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!5!!!!!!!!!!!!!!!!!!!K\iiiiiiiiiiiiiiiiiiiiiK\!!!!!!!!!!!!!!!iKKKKKKKKKKKK %KKKKKKKKKKKKKKKKKKQ/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i=v!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!=v!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iKKKKKKKKKKK/KKKKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iKKKKKKKKKKUKKKKKKKKKKKKKKKKKKKKQ/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i5!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!5!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iKKKKKKKKK%9KKKKKKKKKKKKKKKKKKKKQi!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iKKKKKKKKKgKKKKKKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i=v!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!=v!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iKKKKKKKK ةKKKKKKKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iO/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!O/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iKKKKKKK%7KKKKKKKKKKKKKKKKKKKKKKKQO/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iO/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!O/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iKKKKKKK7KKKKKKKKKKKKKKKKKKKKKKKQ5K\!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iO/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!O/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iKKKKKK%7KKKKKKKKKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iY@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!Y@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iKKKKKKKK9KKKKKKKKKKKKKKKKKKKKKKKKQOY@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i=v!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!=v!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iKKKKKK]KKKKKKKKKKKKKKKKKKKKKKKKKQ5Y@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iiu =v!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i!!!!!!!!!!!!!!!!iu =v!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iKKKKKAKKKKKKKKKKKKKKKKKKKKKKKKKKKQ5iiՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐY@!!!!!!!!!!!!!!!iiՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐ5ՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐiՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐՐ5KKKKK7KKKKKKKKKKKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!iKKKKKq˳KKKKKKKKKKKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!iKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!iKKKK]KKKKKKKKKKKKKKKKKKKKKKKKKKQ=v!!!!!!!!!!!!!!!iKKKK KKKKKKKKKKKKKKKKKKKKKKKKKKQu !!!!!!!!!!!!!!!!iKKKK KKKKKKKKKKKKKKKKKKKKKKKKKKQu !!!!!!!!!!!!!!!!!KKKK{KKKKKKKKKKKKKKKKKKKKKKKKQO=v!!!!!!!!!!!!!!!!!=vKKKKUUUKKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!u KKKK˳KKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iKKKKgKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!K\KKKKK%KKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!iKKKKKKKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!KKKKK͍qKKKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!KKKKKKAqKKKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Y@5KKKKKK˳KKKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!=vKKKKKKK͍7KKKKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/KKKKKKKK˳{KKKKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/KKKKKKKKK9]%ةKKKKKKKKKKKKKKKKKKKQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/g&-----------ܻ-yG-------------------cY@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Y@Ր՞i5Aݢݢݢݢݢݢݢݢݢݢݢݢݢݢݢݢݢݢݢݢݢݢݢݢݢݥ7◢ݢݢݢݭ[,,,,,,,,,,,,,,,,,,,,,,,,48Ae,,,,2[,,,,,,,,,,,,,,,,,,,,,,%u,,,,2[,,,,,,,,,,,,,,,,,,,,,X#,,,,2[,,,,,,,,,,,,,,,,,,,,|%,,,,2[,,,,,,,,,,,,,,,,,,,],,,,2[,,,,,,,,,,,,,,,,,,g],,,,2[,,,,,,,,,,,,,,,,,48,,,,2[,,,,,,,,,,,,,,,,,i,,,,2[,,,,,,,,,,,,,,,,;|,,,,2[,,,,,,,,,,,,,,,,AM,,,,2[,,,,,,,,,,,,,,,,Aw]i0,,,,2[,,,,,,,,,,,,,,,,p,,,,,,,,,,,,,2[,,,,,,,,,,,,,,,X\*,,,,,,,,,,,,,,,2[,,,,,,,,,,,,,,,nP,,,,,,,,,,,,,,,,2[,,,,,,,,,,,,,,,]g,,,,,,,,,,,,,,,,2[,,,,,,,,,,,,,,,];|,,,,,,,,,,,,,,,,2[,,,,,,,,,,,,,,,48,,,,,,,,,,,,,,,,2[,,,,,,,,,,,,,,,nP48,,,,,,,,,,,,,,,,2[,,,,,,,,,,,,,,,TB,,,,,,,,,,,,,,,,2[,,,,,,,,,,,,,,,48_,,,,,,,,,,,,,,,,2P[,,,,,,,,,,,,,,,,w,,,,,,,,,,,,,,,,2@P0@P[,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,2@`@`[,,,,,,,,,,,,,,,,A,,,,,,,,,,,,,,,,2@@[,,,,,,,,,,,,,,,,_48,,,,,,,,,,,,,,,2@0@0[,,,,,,,,,,,,,,,,%nP,,,,,,,,,,,,,,,2@@[,,,,,,,,,,,,,,,,,̷ ,,,,,,,,,,,,,,,2@P@[,,,,,,,,,,,,,,,,,]e,,,,,,,,,,,,,,2@@[,,,,,,,,,,,,,,,,,JT,,,,,,,,,,,,,,2@@[,,,,,,,,,,,,,,,,,,#,,,,,,,,,,,,,,2@p@p[,,,,,,,,,,,,,,,,,,%,,,,,,,,,,,,,2@@[,,,,,,,,,,,,,,,,,,TT,,,,,,,,,,,,,2@p@p[,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,2P P[,,,,,,,,,,,,,,,,,,, ",,,,,,,,,,,,2[,,,,,,,,,,,,,,,,,,,jj,,,,,,,,,,,,200[,,,,,,,,,,,,,,,,,,,%,,,,,,,,,,,,2PP[,,,,,,,,,,,,,,,,,,,,I",,,,,,,,,,,200[,,,,,,,,,,,,,,,,,,,_,,,,,,,,,,,2[,,,,,,,,,,,,,,,,,"j],,,,,,,,,,,2@@[,,,,,,,,,,,,,,"jI,,,,,,,,,,,2@@[,,,,,,,,,,,p_ʯI?,,,,,,,,,,,2@@[,,,,,,,,,"%_,,,,,,,,,,,,2@@[,,,,,,,,,ߙQD,,,,,,,,,,,,,2p@@@@@@@@@@@@@@@@@@@@@@@@@@@@@p@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[,,,,,,,,I;|,,,,,,,,,,,,,,,,,200[,,,,,,,,?nP)T,,,,,,,,,,,,,,,,,,,,2 [,,,,,,,,cl#Xp,,,,,,,,,,,,,,,,,,,,,,,2``[,,,,,,,,X,,,,,,,,,,,,,,,,,,,,,,,,,,,200[,,,,,,,, eM,,,,,,,,,,,,,,,,,,,,,,,,,2PP[,,,,,,,,Y#M,,,,,,,,,,,,,,,,,,,,,,2[,,,,,,,,#M,,,,,,,,,,,,,,,,,,,2[,,,,,,,,#F`,,,,,,,,,,,,,,,,2@@[,,,,,,,,qIם7,,,,,,,,,,,,,,2[,,,,,,,,,%y6M,,,,,,,,,,,,,,2`0p `0p [,,,,,,,,,,,,F`%,,,,,,,,,,,,,,2 0@ 0@[,,,,,,,,,,,,,,pnP̷Y,,,,,,,,,,,,,,2``@`@[,,,,,,,,,,,,,,,,=|,,,,,,,,,,,,,,2@ @ @[,,,,,,,,,,,,,,,,7I#p,,,,,,,,,,,,,,2@@[,,,,,,,,,,,,,,,g,,,,,,,,,,,,,,,2@@[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,20@@[,,,,,,,,,,,,,,\*0,,,,,,,,,,,,,,,,2`@@[,,,,,,,,,,,,,;|j,,,,,,,,,,,,,,,,,2P@ @ @[,,,,,,,,,,,,"=,,,,,,,,,,,,,,,,,,2 p`0000[,,,,,,,,,,,,%,,,,,,,,,,,,,,,,,,2 [,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,,2pp[,,,,,,,,,,F`],,,,,,,,,,,,,,,,,,,,2[,,,,,,,,,"u,,,,,,,,,,,,,,,,,,,,2pp[,,,,,,,,,0,,,,,,,,,,,,,,,,,,,,,2 [,,,,,,,,Tg,,,,,,,,,,,,,,,,,,,,,,2[,,,,,,,pM,,,,,,,,,,,,,,,,,,,,,,,2[,,,,,,,|0,,,,,,,,,,,,,,,,,,,,,,,20[,,,,,,p|,,,,,,,,,,,,,,,,,,,,,,,,2@@[,,,,,,y6=,,,,,,,,,,,,,,,,,,,,,,,,2@ [,,,,,,ם_,,,,,,,,,,,,,,,,,,,,,,,,,2@` ` [,,,,,J=,,,,,,,,,,,,,,,,,,,,,,,,,,2@[,,,,,|,,,,,,,,,,,,,,,,,,,,,,,,,,2[,,,,,48,,,,,,,,,,,,,,,,,,,,,,,,,,2[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2p[,,,,u",,,,,,,,,,,,,,,,,,,,,,,,,,2 [,,,,QD,,,,,,,,,,,,,,,,,,,,,,,,,,2`[,,,,u,,,,,,,,,,,,,,,,,,,,,,,,,,2`[,,,,u%%,,,,,,,,,,,,,,,,,,,,,,,,2 [,,,,uIiiiuu,,,,,,,,,,,,,,,,,2`[,,,,]48,,,,,,,,,,,,,,,,2[,,,,B%,,,,,,,,,,,,,,,,20[,,,,,,,,,,,,,,,,,,,,,,2[,,,,,QD,,,,,,,,,,,,,,,,,2[,,,,,;|,,,,,,,,,,,,,,,,,,2[,,,,,, q,,,,,,,,,,,,,,,,,,2@[,,,,,,)T#48,,,,,,,,,,,,,,,,,,2 [,,,,,,,;|,,,,,,,,,,,,,,,,,,,2[,,,,,,,,48̷%,,,,,,,,,,,,,,,,,,,2[,,,,,,,,,ug,,,,,,,,,,,,,,,,,,,2PctNtNtNtNtNtNtNtNtNtNtNvzIܽxtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtN@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@I;♢[HHHHHHHHHHHHHHHHHHHHHHHH4PMgHHHH2[HHHHHHHHHHHHHHHHHHHHHH%̝{HHHH2[HHHHHHHHHHHHHHHHHHHHHX%HHHH2[HHHHHHHHHHHHHHHHHHHH|1HHHH2[HHHHHHHHHHHHHHHHHHHkHHHH2[HHHHHHHHHHHHHHHHHHg kHHHH2[HHHHHHHHHHHHHHHHH4PHHHH2[HHHHHHHHHHHHHHHHHsHHHH2[HHHHHHHHHHHHHHHH;HHHH2[HHHHHHHHHHHHHHHHMWHHHH2[HHHHHHHHHHHHHHHHMɀks0HHHH2[HHHHHHHHHHHHHHH-'HHHHHHHHHHHHH2[HHHHHHHHHHHHHHHX\<HHHHHHHHHHHHHHH2[HHHHHHHHHHHHHHHnbHHHHHHHHHHHHHHHH2[HHHHHHHHHHHHHHHkg HHHHHHHHHHHHHHHH2[HHHHHHHHHHHHHHHk;HHHHHHHHHHHHHHHH2[HHHHHHHHHHHHHHH4PHHHHHHHHHHHHHHHH2[HHHHHHHHHHHHHHHnb4PHHHHHHHHHHHHHHHH2[HHHHHHHHHHHHHHHTBHHHHHHHHHHHHHHHH2[HHHHHHHHHHHHHHH4P_HHHHHHHHHHHHHHHH2P[HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH2@P0@P[HHHHHHHHHHHHHHHHWHHHHHHHHHHHHHHHH2@`@`[HHHHHHHHHHHHHHHHMHHHHHHHHHHHHHHHH2@@[HHHHHHHHHHHHHHHH_4PHHHHHHHHHHHHHHH2@0@0[HHHHHHHHHHHHHHHH%nbHHHHHHHHHHHHHHH2@@[HHHHHHHHHHHHHHHHH̽HHHHHHHHHHHHHHH2@P@[HHHHHHHHHHHHHHHHHkgHHHHHHHHHHHHHH2@@[HHHHHHHHHHHHHHHHHJTHHHHHHHHHHHHHH2@@[HHHHHHHHHHHHHHHHHH%HHHHHHHHHHHHHH2@p@p[HHHHHHHHHHHHHHHHHH1HHHHHHHHHHHHH2@@[HHHHHHHHHHHHHHHHHHTTHHHHHHHHHHHHH2@p@p[HHHHHHHHHHHHHHHHHH HHHHHHHHHHHHH2P P[HHHHHHHHHHHHHHHHHHH",HHHHHHHHHHHH2[HHHHHHHHHHHHHHHHHHHjjHHHHHHHHHHHH200[HHHHHHHHHHHHHHHHHHH%HHHHHHHHHHHH2PP[HHHHHHHHHHHHHHHHHHHHK",HHHHHHHHHHH200[HHHHHHHHHHHHHHHHHHH_HHHHHHHHHHH2[HHHHHHHHHHHHHHHHH",jkHHHHHHHHHHH2@@[HHHHHHHHHHHHHH",j¶KHHHHHHHHHHH2@@[HHHHHHHHHHH_ޯK?4HHHHHHHHHHH2@@[HHHHHHHHH",1_HHHHHHHHHHHH2@@[HHHHHHHHHQZHHHHHHHHHHHHH2p@@@@@@@@@@@@@@@@@@@@@@@@@@@@@p@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[HHHHHHHHK';HHHHHHHHHHHHHHHHH200[HHHHHHHH?4nb)nHHHHHHHHHHHHHHHHHHHH2 [HHHHHHHHc~%XHHHHHHHHHHHHHHHHHHHHHHH2``[HHHHHHHH'XHHHHHHHHHHHHHHHHHHHHHHHHHHH200[HHHHHHHHgMHHHHHHHHHHHHHHHHHHHHHHHHH2PP[HHHHHHHH_%MHHHHHHHHHHHHHHHHHHHHHH2[HHHHHHHH %MHHHHHHHHHHHHHHHHHHH2[HHHHHHHH%FvHHHHHHHHHHHHHHHH2@@[HHHHHHHHrKס7HHHHHHHHHHHHHH2[HHHHHHHHH%yFWHHHHHHHHHHHHHH2`0p `0p [HHHHHHHHHHHHFv1 HHHHHHHHHHHHHH2 0@ 0@[HHHHHHHHHHHHHHnb̽_HHHHHHHHHHHHHH2``@`@[HHHHHHHHHHHHHHHHC|HHHHHHHHHHHHHH2@ @ @[HHHHHHHHHHHHHHHH7K%HHHHHHHHHHHHHH2@@[HHHHHHHHHHHHHHHg HHHHHHHHHHHHHHH2@@[HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH20@@[HHHHHHHHHHHHHH\< 0HHHHHHHHHHHHHHHH2`@@[HHHHHHHHHHHHH;jHHHHHHHHHHHHHHHHH2P@ @ @[HHHHHHHHHHHH",CHHHHHHHHHHHHHHHHHH2 p`0000[HHHHHHHHHHHH%HHHHHHHHHHHHHHHHHH2 [HHHHHHHHHHH'MHHHHHHHHHHHHHHHHHHH2pp[HHHHHHHHHHFvkHHHHHHHHHHHHHHHHHHHH2[HHHHHHHHH",{HHHHHHHHHHHHHHHHHHHH2pp[HHHHHHHHH 0HHHHHHHHHHHHHHHHHHHHH2 [HHHHHHHHTg HHHHHHHHHHHHHHHHHHHHHH2[HHHHHHHWHHHHHHHHHHHHHHHHHHHHHHH2[HHHHHHH| 0HHHHHHHHHHHHHHHHHHHHHHH20[HHHHHH|HHHHHHHHHHHHHHHHHHHHHHHH2@@[HHHHHHyFCHHHHHHHHHHHHHHHHHHHHHHHH2@ [HHHHHHס_HHHHHHHHHHHHHHHHHHHHHHHHH2@` ` [HHHHHJCHHHHHHHHHHHHHHHHHHHHHHHHHH2@[HHHHH|HHHHHHHHHHHHHHHHHHHHHHHHHH2[HHHHH4PHHHHHHHHHHHHHHHHHHHHHHHHHH2[HHHH-HHHHHHHHHHHHHHHHHHHHHHHHHHH2p[HHHHu",HHHHHHHHHHHHHHHHHHHHHHHHHH2 [HHHHQZHHHHHHHHHHHHHHHHHHHHHHHHHH2`[HHHH{HHHHHHHHHHHHHHHHHHHHHHHHHH2`[HHHH{1%HHHHHHHHHHHHHHHHHHHHHHHH2 [HHHH{Ksss{{HHHHHHHHHHHHHHHHH2`[HHHHk4PHHHHHHHHHHHHHHHH2[HHHHB%HHHHHHHHHHHHHHHH20[HHHHHHHHHHHHHHHHHHHHHH2[HHHHHQZHHHHHHHHHHHHHHHHH2[HHHHH;HHHHHHHHHHHHHHHHHH2[HHHHHHrHHHHHHHHHHHHHHHHHH2@[HHHHHH)n%4PHHHHHHHHHHHHHHHHHH2 [HHHHHHH;HHHHHHHHHHHHHHHHHHH2[HHHHHHHH4P̽1HHHHHHHHHHHHHHHHHHH2[HHHHHHHHHug HHHHHHHHHHHHHHHHHHH2Pot^t^t^t^t^t^t^t^t^t^t^vUxt^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HHffffffffffffffffffffffffffffffffffffffffffffffffffffk213ffffffffZZ@``@@@@ `@0P`@0@`0`@ ` @`@0`0@` `@``@@@@@@ @@0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@00@ @@``@@@@@@@@@@@@ `@ `@@`@`@@P@P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ @@@@@@P@p@p@@@@@@@@0@p@p@@p@p@@@@@@@@@`@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ @@@@@`@@@`@0@0@0@0@0@ @0@0@@@@0@P@P@ @@@@@ @@@@` @` @@@@@0p@@p` P`ll3eee͙`p@ yara-2.0.0/extra/logo.psd000066400000000000000000130632401225703323600152540ustar00rootroot000000000000008BPS phdrt?DefaultA?hdra?(8BIMZ%GZ%GZ%G8BIM%ɟK=(H5j+8BIM$: Adobe Photoshop CS5 Macintosh 2008-05-13T13:58:36+02:00 2013-11-24T18:32:51+01:00 2013-11-24T18:32:51+01:00 application/vnd.adobe.photoshop xmp.iid:2839369F08206811871FB2CADA4019E9 xmp.did:0A801174072068118F62D40F263793E9 xmp.did:01801174072068118F62D40F263793E9 created xmp.iid:01801174072068118F62D40F263793E9 2008-05-13T14:35:59+02:00 Adobe Photoshop CS4 (11.0x20080609 [20080609.m.379 2008/06/09:02:00:00 cutoff; m branch]) Macintosh derived converted from image/tiff to application/vnd.adobe.photoshop saved xmp.iid:0A801174072068118F62D40F263793E9 2008-05-13T15:04:28+02:00 Adobe Photoshop CS4 (11.0x20080609 [20080609.m.379 2008/06/09:02:00:00 cutoff; m branch]) Macintosh /metadata saved xmp.iid:0180117407206811A72C818E65597EE5 2013-11-23T21:41:35+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0280117407206811A72C818E65597EE5 2013-11-23T21:41:35+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0380117407206811A72C818E65597EE5 2013-11-23T21:41:49+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0480117407206811A72C818E65597EE5 2013-11-23T21:41:49+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0580117407206811A72C818E65597EE5 2013-11-23T22:08:29+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0680117407206811A72C818E65597EE5 2013-11-23T22:10:52+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:7282099C0C206811A72C818E65597EE5 2013-11-24T02:17:21+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:7382099C0C206811A72C818E65597EE5 2013-11-24T02:17:21+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:7482099C0C206811A72C818E65597EE5 2013-11-24T02:17:58+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4A33FDE52E206811A72C818E65597EE5 2013-11-24T02:23:56+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4C33FDE52E206811A72C818E65597EE5 2013-11-24T02:26:05+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4D33FDE52E206811A72C818E65597EE5 2013-11-24T02:26:24+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4E33FDE52E206811A72C818E65597EE5 2013-11-24T02:26:39+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4F33FDE52E206811A72C818E65597EE5 2013-11-24T02:26:52+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:5033FDE52E206811A72C818E65597EE5 2013-11-24T02:27:01+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:5333FDE52E206811A72C818E65597EE5 2013-11-24T02:27:46+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:5433FDE52E206811A72C818E65597EE5 2013-11-24T02:28:06+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:04CAFD842F206811A72C818E65597EE5 2013-11-24T02:28:22+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:05CAFD842F206811A72C818E65597EE5 2013-11-24T02:28:40+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:06CAFD842F206811A72C818E65597EE5 2013-11-24T02:28:47+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:07CAFD842F206811A72C818E65597EE5 2013-11-24T02:32:28+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:08CAFD842F206811A72C818E65597EE5 2013-11-24T02:33:09+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:09CAFD842F206811A72C818E65597EE5 2013-11-24T02:33:23+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0ACAFD842F206811A72C818E65597EE5 2013-11-24T02:34:17+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0BCAFD842F206811A72C818E65597EE5 2013-11-24T02:34:38+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0CCAFD842F206811A72C818E65597EE5 2013-11-24T02:34:46+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0DCAFD842F206811A72C818E65597EE5 2013-11-24T02:35:23+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0ECAFD842F206811A72C818E65597EE5 2013-11-24T02:36:11+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:3831C7B030206811A72C818E65597EE5 2013-11-24T02:36:45+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:3931C7B030206811A72C818E65597EE5 2013-11-24T02:37:06+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:3A31C7B030206811A72C818E65597EE5 2013-11-24T02:37:13+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:3B31C7B030206811A72C818E65597EE5 2013-11-24T02:37:26+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:3C31C7B030206811A72C818E65597EE5 2013-11-24T02:37:50+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:3D31C7B030206811A72C818E65597EE5 2013-11-24T02:38:16+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:3E31C7B030206811A72C818E65597EE5 2013-11-24T02:38:51+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:3F31C7B030206811A72C818E65597EE5 2013-11-24T02:38:59+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4131C7B030206811A72C818E65597EE5 2013-11-24T02:41:35+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4231C7B030206811A72C818E65597EE5 2013-11-24T02:42:22+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2573D17C31206811A72C818E65597EE5 2013-11-24T02:43:12+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2673D17C31206811A72C818E65597EE5 2013-11-24T02:44:26+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2773D17C31206811A72C818E65597EE5 2013-11-24T02:44:51+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2873D17C31206811A72C818E65597EE5 2013-11-24T02:46:09+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2973D17C31206811A72C818E65597EE5 2013-11-24T02:46:14+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2A73D17C31206811A72C818E65597EE5 2013-11-24T02:47:54+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2B73D17C31206811A72C818E65597EE5 2013-11-24T02:48:05+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2C73D17C31206811A72C818E65597EE5 2013-11-24T02:48:34+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2D73D17C31206811A72C818E65597EE5 2013-11-24T02:49:34+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2E73D17C31206811A72C818E65597EE5 2013-11-24T02:50:14+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4894AFA332206811A72C818E65597EE5 2013-11-24T02:50:42+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4994AFA332206811A72C818E65597EE5 2013-11-24T02:51:02+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4A94AFA332206811A72C818E65597EE5 2013-11-24T02:51:41+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4B94AFA332206811A72C818E65597EE5 2013-11-24T02:51:50+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4C94AFA332206811A72C818E65597EE5 2013-11-24T02:52:47+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:4F94AFA332206811A72C818E65597EE5 2013-11-24T02:55:31+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:5094AFA332206811A72C818E65597EE5 2013-11-24T02:56:46+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:5194AFA332206811A72C818E65597EE5 2013-11-24T02:56:57+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:F97F117407206811871FB2CADA4019E9 2013-11-24T18:09:50+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:FA7F117407206811871FB2CADA4019E9 2013-11-24T18:09:59+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:FB7F117407206811871FB2CADA4019E9 2013-11-24T18:10:22+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:FD7F117407206811871FB2CADA4019E9 2013-11-24T18:11+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0080117407206811871FB2CADA4019E9 2013-11-24T18:13:28+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:1E39369F08206811871FB2CADA4019E9 2013-11-24T18:15:26+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2139369F08206811871FB2CADA4019E9 2013-11-24T18:18:32+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2239369F08206811871FB2CADA4019E9 2013-11-24T18:20:41+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2339369F08206811871FB2CADA4019E9 2013-11-24T18:27:06+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2439369F08206811871FB2CADA4019E9 2013-11-24T18:27:27+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2539369F08206811871FB2CADA4019E9 2013-11-24T18:27:36+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2639369F08206811871FB2CADA4019E9 2013-11-24T18:29:21+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2739369F08206811871FB2CADA4019E9 2013-11-24T18:32:11+01:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:2839369F08206811871FB2CADA4019E9 2013-11-24T18:32:51+01:00 Adobe Photoshop CS5 Macintosh / xmp.iid:01801174072068118F62D40F263793E9 xmp.did:01801174072068118F62D40F263793E9 xmp.did:01801174072068118F62D40F263793E9 3 sRGB IEC61966-2.1 (Linear RGB Profile) yara yara False 8BIM: printOutputPstSboolInteenumInteClrmprintSixteenBitbool printerNameTEXT PDFwriter8BIM;printOutputOptionsCptnboolClbrboolRgsMboolCrnCboolCntCboolLblsboolNgtvboolEmlDboolIntrboolBckgObjcRGBCRd doub@oGrn doub@oBl doub@oBrdTUntF#RltBld UntF#RltRsltUntF#Pxl@r vectorDataboolPgPsenumPgPsPgPCLeftUntF#RltTop UntF#RltScl UntF#Prc@Y8BIM,,8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM5d8BIM8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM08BIM- 8BIM@@38BIM6nullVrsnlongenabbool numBeforelongnumAfterlongSpcnlong minOpacitylong maxOpacitylong2BlnMlong8BIM3null Vrsnlong frameStepObjcnull numeratorlong denominatorlongX frameRatedoub@>timeObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlongp denominatorlongX workInTimeObjcnull numeratorlong denominatorlongX workOutTimeObjcnull numeratorlongp denominatorlongXLCntlongglobalTrackListVlLs hasMotionbool8BIM4FnullVrsnlongsheetTimelineOptionsVlLs8BIM8BIM?logo4nullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIMADBEmntrRGB XYZ  ;acspAPPLnone,ADBE cprt2desc$wtptrXYZgXYZbXYZrTRCgTRCbTRCtextCopyright 2008 Adobe Systems Incorporateddesc'sRGB IEC61966-2.1 (Linear RGB Profile)XYZ RXYZ o8XYZ bXYZ $curv8BIM8BIM D  Adobe_CMAdobed            D" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?T^u׳0ochյ]O#wnM&~[LOT)?+/XP [EUWXucclc-F纇 \@$nl'C2tKYu,ާ{7:W"Xl{ma-[`Zܘ9#[\TI"I$JRI$I$$I)I$JRI$U]?S?_zzO}pƭu&s?|L@cPmUpJb\׊Zs`]f[6{5ou~OQ۪e2\Nb[uv䵏)vִ7ݺ˾czZe,98q#v>uOO2-mݶ=oW]x%1 ƌbβA̶ {w+S߫BcWgL}m>$5}WS&`EؼgN=;ߍk鱖6Ǿ[_ޛaatDdkP_w'$b~;femo󟸹8ssFVqC,7mBϺ[_}nuK;WI>"b׻^,ܸO/lF_[իs;){s,zWG =Ec nGLʴˬ_X[Vƻk_Ztiĵz7m톯b:3jݺ=k#Ys5US?ȷiܗY}V<j*Q~םǺ":cۙo߭AX_k6] ^>6o՜Y߃N@е7)mWgo/UQG 5D}_dKםnF5Yc?ޭ/*y zO.&ڲxo-z("Uo# fH`vfUnS/;,/_#G] _,E#[ t>(FyMq3eOOVʺo΍E٘3{)Ω4mU:?K'YӬ}T֛7,SfzNץ}k냡tw_HiqY}\]a/k[,}?JwϷooj?R`e[e`]}lDo!|GCfAO߮_YG޻kNSPOϴ9c,R>C?bz*to׿ǵmmYsmMs ͽWԝ`'! Y(ߜKҤt )bgNc;z=<6siz;/rI3&.:l<帮2=1x:]+7R}kÚs=y?^#^? $Ƣ)/Yׇ>?ƏA=?ϭAM_}[zHutw[}8_A- .zFLcAK*6FŢf~QԒEjI$I%)$IJI$RI$Tʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$8BIM!UAdobe PhotoshopAdobe Photoshop CS58BIM"MM*X(12i, -'-'Adobe Photoshop CS5 Macintosh2013:11:24 18:32:51z(HH8BIMmaniIRFR8BIMAnDsnullAFStlongFrInVlLsObjcnullFrIDlongr,FrDllongFStsVlLsObjcnullFsIDlongAFrmlongFsFrVlLslongr,LCntlong8BIMRoll8BIMmfri8BIMMt328BIMLr32VOTK8BIMnorm)(yara8BIMTySh(??zHp@bE@gT? *2TxLrTxt TEXTyara textGriddingenum textGriddingNoneOrntenumOrntHrznAntAenumAnntAnSm TextIndexlong EngineDatatdta& << /EngineDict << /Editor << /Text (yara ) >> /ParagraphRun << /DefaultRunData << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> /RunArray [ << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> ] /RunLengthArray [ 5 ] /IsJoinable 1 >> /StyleRun << /DefaultRunData << /StyleSheet << /StyleSheetData << >> >> >> /RunArray [ << /StyleSheet << /StyleSheetData << /Font 1 /FontSize 203.31874 /FauxBold false /FauxItalic false /AutoLeading true /Leading 90.0 /HorizontalScale 1.07 /VerticalScale 1.0 /Tracking 0 /AutoKerning false /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 14 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 .01563 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 .41878 .41878 .41878 ] >> /FillFlag true /StrokeFlag false /FillFirst false /YUnderline 1 /OutlineWidth .47982 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> >> << /StyleSheet << /StyleSheetData << /Font 1 /FontSize 203.31874 /FauxBold false /FauxItalic false /AutoLeading true /Leading 90.0 /HorizontalScale 1.07 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 14 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 .01563 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 .41878 .41878 .41878 ] >> /FillFlag true /StrokeFlag false /FillFirst false /YUnderline 1 /OutlineWidth .47982 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> >> ] /RunLengthArray [ 1 4 ] /IsJoinable 2 >> /GridInfo << /GridIsOn false /ShowGrid false /GridSize 18.0 /GridLeading 22.0 /GridColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /GridLeadingFillColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /AlignLineHeightToGridFlags false >> /AntiAlias 3 /UseFractionalGlyphWidths true /Rendered << /Version 1 /Shapes << /WritingDirection 0 /Children [ << /ShapeType 0 /Procession 0 /Lines << /WritingDirection 0 /Children [ ] >> /Cookie << /Photoshop << /ShapeType 0 /PointBase [ 0.0 0.0 ] /Base << /ShapeType 0 /TransformPoint0 [ 1.0 0.0 ] /TransformPoint1 [ 0.0 1.0 ] /TransformPoint2 [ 0.0 0.0 ] >> >> >> >> ] >> >> >> /ResourceDict << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 2 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> ] /FontSet [ << /Name (Bomr) /Script 0 /FontType 1 /Synthetic 2 >> << /Name (Longview) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (MyriadPro-Regular) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> /DocumentResources << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 2 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> ] /FontSet [ << /Name (Bomr) /Script 0 /FontType 1 /Synthetic 2 >> << /Name (Longview) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (MyriadPro-Regular) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> >>warp warpStyleenum warpStylewarpNone warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrzn8BIMluni yara8BIMlnsrrend8BIMlyid 8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAԤ|ʰ8BIMfxrp?=b0Dp8BIMnorm(Shape 18BIMSoCopnullClr ObjcRGBCRd doub@aGrn doub@Bl doub@p8BIMvmsk& qv& qv& qv& 7(& 7(& 7(87(87(87(8qv8qv8qv8BIMluniShape 18BIMlnsrshap8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAԤ|S8BIMfxrpP̔wkA5>h4)18BIMnorm,({8BIMluni{8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAԤ| 8BIMfxrp@UbO@Uvev@Hmyi  1^UP  #! SH@ ۞&šٰ?Bd3CTgB-ց2H1\7m # f߮woz-lNQi)lqouO"T_qBAUu*oBqM,(?<Su|{0KsԵK ]vu/]>8Su#ΕOPgdt;ؾe]\1QGXWzr>Bg?PLnOՍ# ۶oAvgBny4K 1>U7`<P2eGHJub$Sun o[(⺎#$%⺛qw Su/Ípo]#$⺩L9T7Ƨ~+ EPN]11[C( T8k'_a.²!]1>U7 Eh&$B%0SL!T7Ƨ.`GHuSr$2nOՍ# 4\F$uKI⺯2nOՍ#A"1gBu p1>Q+z]+!&]B !/O'xuiTS7Jh[2KBv,!$6p#UB$v^S|sE\P*B>1qٹtI؊>kBoH:9pCAl7z ]} T7ƍL !>]U(xXBluE܇4GO T7ƍÇ$ Qn# 8lu ݉ۖ늦G$r]!}>+6:hNmT7ƍ̠#wRkKBٖ렺uX[sݾ"dKB.٘̏^A`kCn}azw!䂍l]7@ucΡ-NC2.Ṯ%K:[>/sh y(nlgb.ouM?_KB.ٚ܏^sptEB"lrk. ]$8u|DjuCqc;;um[uQ$ :t6nlq!uu<0nt!nγ @#|CCygSe B7tuF֮Dץ6r]ߘƉOC^os[q ױ#$;loU]#L]O5iJ_%CzlA\'>:@oԄxVvM0 u~!+u^|nr #$;}OuqJq]gWD ׽>iRGmneQd 0HB NN@!("h_ʒ{gAu= *mpבӂnv)Gu=?ѷ[Pr[c~j//)c.2ii!m^ui2_uEҍ esׁĠD^\: Ibi}PE[]u 1(n&S: ]sN[uEBX:1hI}ں'#.򊚳uvR"Eu`TP勤=;Z'cı;Y)kqv3iXߌ}Zd>:m<[?nN٦gg?mkߩWcR?I߇|[vڮsg?N8: ?ׇ)ܺ|IQ4e8.|.KD@xUc6X%»us߸G7S7^ףX\nvV^W}WyM@x)(n:`!Z'juy~?lk_*j.^n x\_oMvaEaA)MC%q]u$D+sj}[73ݺgzm:0%(M<m'vB>8V"u<{[͊jUuqMVGcus0uN"Hl2àuw&~-=< Zwl0hݲxv{Z\6{xn},n6r ;{u4} buśb ܠ#7` ѺV; Ѻ{p[޲ٺoKt[upp/E;ݻwE0Vc6N\$j˾(p@&mQA׺wդaIM#tnf4&Zw '!0L4g(Uu;pjil79GԺwɘb)ëd xҴ90Őa++IH uEH z!Nк7 ɼ @ýuy1Pqncok@ȵuΓ9= ٺ?Άg9R̼v^'@^tؾq:i0C7˱G(~n3~&,#t*6qv=sn_9!~v]?i<3nK}`KjH1 @ FQCo>QvSvSw;ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]ey]e {5H1 Om x7H1 Om x7Hu8# B # C B !xn^{CW[2ߏ;ߵ(ͫ%KIӞKuEr,7gFj-;i2,WkL=wҗub1flRļSNbYM=B4m.WMc uлiZ+;NN=Av캤ӽVN[{ו? aWwŹ{!:; smd-$]AB>r.B j;墕ޅu/&,ҜQn#Rqw)~uikɅyOy0 w 1 ? ǝ9/k)v9>oYcHBnsKlκ;wB9yǵf99]rrޑEޡHž}N!w]ׅMdw +;.o"w?:x ށn89l^ޝk,o"_Uׅ 8XA-'}/ pƮhU&s"{A޴|^><ԪǁQղpj9&p"xƙ ':K89D>N-SCWhN)kO&rh37y=-Nzi Rbߧq*LZE%O>YOȡ<޴ ˠ瑓 m<@L Z@*MdN-L'F U|VL)yywܴ۠lWxXc3zg3;q;qEWX +~sZ^Q[Kw4N医Z7OpuMUjqhybq~@/׏wŖoݽaR@uɼOՓ}II}Ce*ݸ+ˠ穞9ǝ{O)q85(4F!a>[QI5;mo6MM}U$vc(z՞C.U'Zq"c`AN^f6Gwdcͻj]a+bxW`yu&n{_3=tT["m^S+Sũ+'X@neh)9v遲Om+v]-ƻ4JK4w ]ƤwL(/Ļd-i+sNh]!KVjށ/ sd_<,g`QmN5vOww#4z}-sމEަDglgH,vˠמQMd` XL%VR_Sbaǵݹ9%6uU dtÎK, 83rQS1lB5  N5Dyd\;*d4~e4}Ll5{`ъd|<}5XVoO؉ e]qe\9ƙ N,7t^_Ka\90ݱ&6;vȻۮ_)9. v9]5%VЂ. Y.zRrm۪i(9Dn;ovwJ9;ϱ̋Yt3%7jn!oRs,Sbna N@}(9DMYݳ;.Q C[ !xػ }Oj-*ݕn}ڮe?7}`;!#<ydXB>z{l{'A?"/';eh^m~ BBxVZ_wڸW4?|k]@鯌dwy+2; -z 'x튲cP^8=RˑwZ+TjQdI;Ҏl{GV}B"{> '}n;yj/V }Alp1^O69Y*:sl)7D/Gw,gJٖ`E/N>q4Y'}u7f,+ҜHA 0bq8ч@> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (Longview) /Type 1 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (TimesNewRomanPSMT) /Type 1 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (MyriadPro-Regular) /Type 0 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (AdobeInvisFont) /Type 0 >> >> >> ] /DisplayList [ << /Resource 2 >> ] >> /MojiKumiCodeToClassSet << /Resources [ << /Resource << /Name () >> >> ] /DisplayList [ << /Resource 0 >> ] >> /MojiKumiTableSet << /Resources [ << /Resource << /Name (Photoshop6MojiKumiSet4) /Members << /CodeToClass 0 /PredefinedTag 2 >> >> >> << /Resource << /Name (Photoshop6MojiKumiSet3) /Members << /CodeToClass 0 /PredefinedTag 4 >> >> >> << /Resource << /Name (Photoshop6MojiKumiSet2) /Members << /CodeToClass 0 /PredefinedTag 3 >> >> >> << /Resource << /Name (Photoshop6MojiKumiSet1) /Members << /CodeToClass 0 /PredefinedTag 1 >> >> >> << /Resource << /Name (YakumonoHankaku) /Members << /CodeToClass 0 /PredefinedTag 1 >> >> >> << /Resource << /Name (GyomatsuYakumonoHankaku) /Members << /CodeToClass 0 /PredefinedTag 3 >> >> >> << /Resource << /Name (GyomatsuYakumonoZenkaku) /Members << /CodeToClass 0 /PredefinedTag 4 >> >> >> << /Resource << /Name (YakumonoZenkaku) /Members << /CodeToClass 0 /PredefinedTag 2 >> >> >> ] /DisplayList [ << /Resource 0 >> << /Resource 1 >> << /Resource 2 >> << /Resource 3 >> << /Resource 4 >> << /Resource 5 >> << /Resource 6 >> << /Resource 7 >> ] >> /KinsokuSet << /Resources [ << /Resource << /Name (None) /Data << /NoStart () /NoEnd () /Keep () /Hanging () /PredefinedTag 0 >> >> >> << /Resource << /Name (PhotoshopKinsokuHard) /Data << /NoStart (!\),.:;?]}    0!! 0000 0 0 0000A0C0E0G0I0c000000000000000000000000 =]) /NoEnd (\([{  00 0 0000 ;[) /Keep (  % &) /Hanging (00 ) /PredefinedTag 1 >> >> >> << /Resource << /Name (PhotoshopKinsokuSoft) /Data << /NoStart (  0000 0 0 00000000 =]) /NoEnd (  00 0 000;[) /Keep (  % &) /Hanging (00 ) /PredefinedTag 2 >> >> >> << /Resource << /Name (Hard) /Data << /NoStart (!\),.:;?]}    0!! 0000 0 0 0000A0C0E0G0I0c000000000000000000000000 =]) /NoEnd (\([{  00 0 0000 ;[) /Keep (  % &) /Hanging (00 ) /PredefinedTag 1 >> >> >> << /Resource << /Name (Soft) /Data << /NoStart (  0000 0 0 00000000 =]) /NoEnd (  00 0 000;[) /Keep (  % &) /Hanging (00 ) /PredefinedTag 2 >> >> >> ] /DisplayList [ << /Resource 0 >> << /Resource 1 >> << /Resource 2 >> << /Resource 3 >> << /Resource 4 >> ] >> /StyleSheetSet << /Resources [ << /Resource << /Name (Normal RGB) /Features << /Font 3 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true /FillBackgroundColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 1.0 1.0 0.0 ] >> >> /FillBackgroundFlag false /UnderlineStyle 0 /DashedUnderlineGapLength 3.0 /DashedUnderlineDashLength 3.0 /SlashedZero false /StylisticSets 0 /CustomFeature << /StreamTag /SimpleCustomFeature >> >> >> >> ] /DisplayList [ << /Resource 0 >> ] >> /ParagraphSheetSet << /Resources [ << /Resource << /Name (Normal RGB) /Features << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 0 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 0 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /Kinsoku /nil /KurikaeshiMojiShori false /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << >> /ParagraphDirection 0 /JustificationMethod 0 /ComposerEngine 0 /ListStyle /nil /ListTier 0 /ListSkip false /ListOffset 0 >> >> >> ] /DisplayList [ << /Resource 0 >> ] >> /TextFrameSet << /Resources [ << /Resource << /Bezier << /Points [ 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ] >> /Data << /Type 0 /LineOrientation 0 /TextOnPathTRange [ -1.0 -1.0 ] /RowGutter 0.0 /ColumnGutter 0.0 /FirstBaselineAlignment << /Flag 1 /Min 0.0 >> /PathData << /Spacing -1 >> >> >> >> ] >> /ListStyleSet << /Resources [ << /Resource << /Name (kPredefinedNumericListStyleTag) /PredefinedTag 1 >> >> << /Resource << /Name (kPredefinedUppercaseAlphaListStyleTag) /PredefinedTag 2 >> >> << /Resource << /Name (kPredefinedLowercaseAlphaListStyleTag) /PredefinedTag 3 >> >> << /Resource << /Name (kPredefinedUppercaseRomanNumListStyleTag) /PredefinedTag 4 >> >> << /Resource << /Name (kPredefinedLowercaseRomanNumListStyleTag) /PredefinedTag 5 >> >> << /Resource << /Name (kPredefinedBulletListStyleTag) /PredefinedTag 6 >> >> ] /DisplayList [ << /Resource 5 >> << /Resource 4 >> << /Resource 3 >> << /Resource 2 >> << /Resource 1 >> << /Resource 0 >> ] >> >> /DocumentObjects << /DocumentSettings << /HiddenGlyphFont << /AlternateGlyphFont 4 /WhitespaceCharacterMapping [ << /WhitespaceCharacter ( ) /AlternateCharacter (1) >> << /WhitespaceCharacter ( ) /AlternateCharacter (6) >> << /WhitespaceCharacter ( ) /AlternateCharacter (0) >> << /WhitespaceCharacter ( \)) /AlternateCharacter (5) >> << /WhitespaceCharacter () /AlternateCharacter (5) >> << /WhitespaceCharacter (0) /AlternateCharacter (1) >> << /WhitespaceCharacter () /AlternateCharacter (3) >> ] >> /NormalStyleSheet 0 /NormalParagraphSheet 0 /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 /UseSmartQuotes true /SmartQuoteSets [ << /Language 0 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 1 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 2 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 3 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 4 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 5 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 6 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( 9) /CloseSingleQuote ( :) >> << /Language 7 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 8 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 9 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 10 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 11 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 12 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 13 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 14 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 15 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 16 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 17 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 18 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 19 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 20 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 21 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 22 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 23 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 24 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 25 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( 9) /CloseSingleQuote ( :) >> << /Language 26 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 27 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 28 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 29 /OpenDoubleQuote (0) /CloseDoubleQuote (0) >> << /Language 30 /OpenDoubleQuote (0 ) /CloseDoubleQuote (0 ) >> << /Language 31 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 32 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 33 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 34 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 35 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 36 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 37 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 38 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 39 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote (<) /CloseSingleQuote (>) >> << /Language 40 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 41 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote (<) /CloseSingleQuote (>) >> << /Language 42 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 43 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 44 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( 9) /CloseSingleQuote ( :) >> << /Language 45 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> ] >> /TextObjects [ << /Model << /Text (yara ) /ParagraphRun << /RunArray [ << /RunData << /ParagraphSheet << /Name () /Features << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 0 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 1 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /Kinsoku /nil /KurikaeshiMojiShori false /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << /Font 0 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true /FillBackgroundColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 1.0 1.0 0.0 ] >> >> /FillBackgroundFlag false /UnderlineStyle 0 /DashedUnderlineGapLength 3.0 /DashedUnderlineDashLength 3.0 >> /ParagraphDirection 0 /JustificationMethod 0 /ComposerEngine 0 /ListStyle /nil /ListTier 0 /ListSkip false /ListOffset 0 >> /Parent 0 >> >> /Length 5 >> ] >> /StyleRun << /RunArray [ << /RunData << /StyleSheet << /Name () /Parent 0 /Features << /Font 1 /FontSize 203.31874 /FauxBold false /FauxItalic false /AutoLeading true /Leading 90.0 /HorizontalScale 1.07 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 0 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures true /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms true /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 14 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 .01563 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 .41878 .41878 .41878 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst false /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth .47982 /MiterLimit 1.91928 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true /FillBackgroundColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 1.0 1.0 0.0 ] >> >> /FillBackgroundFlag false /UnderlineStyle 0 /DashedUnderlineGapLength 3.0 /DashedUnderlineDashLength 3.0 /SlashedZero false /StylisticSets 0 /CustomFeature << /StreamTag /SimpleCustomFeature >> >> >> >> /Length 5 >> ] >> /KernRun << /RunArray [ << /RunData << >> /Length 5 >> ] >> /AlternateGlyphRun << /RunArray [ << /RunData << >> /Length 5 >> ] >> /FirstKern 0 >> /View << /Frames [ << /Resource 0 >> ] /RenderedData << /RunArray [ << /RunData << /LineCount 1 >> /Length 5 >> ] >> /Strikes [ << /StreamTag /PathSelectGroupCharacter /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 0 /Children [ << /StreamTag /FrameStrike /Frame 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /LineStrike /Baseline 0.0 /Leading 243.9825 /EMHeight 203.31874 /DHeight 146.5914 /SelectionAscent -174.95352 /SelectionDescent 50.42327 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -174.95352 0.0 50.42327 ] /ChildProcession 1 /Children [ << /StreamTag /Segment /Mapping << /CharacterCount 5 /GlyphCount 0 /WRValid false >> /FirstCharacterIndexInSegment 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /GlyphStrike /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -174.95352 457.50253 50.42327 ] /Glyphs [ 86 62 79 62 3 ] /GlyphAdjustments << /Data [ << >> ] /RunLengths [ 5 ] >> /VisualBounds [ 0.0 -174.95352 457.50253 50.42327 ] /RenderedBounds [ 0.0 -174.95352 457.50253 50.42327 ] /Invalidation [ 0.0 -174.95352 561.92609 50.42327 ] /ShadowStylesRun << /Data [ << /Index 0 /Font 1 /Scale [ 1.07 1.0 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 0 /EmbeddingLevel 0 /ComplementaryFontIndex 0 >> << /Index 1 /Font 1 /Scale [ 1.07 1.0 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 0 /EmbeddingLevel 0 /ComplementaryFontIndex 0 >> ] /RunLengths [ 1 4 ] >> /EndsInCR true /SelectionAscent -174.95352 /SelectionDescent 50.42327 /MainDir 0 >> ] >> ] >> ] >> ] >> ] >> ] >> ] >> /OpticalAlignment false >> ] /OriginalNormalStyleFeatures << /Font 3 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true /FillBackgroundColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 1.0 1.0 0.0 ] >> >> /FillBackgroundFlag false /UnderlineStyle 0 /DashedUnderlineGapLength 3.0 /DashedUnderlineDashLength 3.0 /SlashedZero false /StylisticSets 0 /CustomFeature << /StreamTag /SimpleCustomFeature >> >> /OriginalNormalParagraphFeatures << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 0 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 0 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /Kinsoku /nil /KurikaeshiMojiShori false /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << >> /ParagraphDirection 0 /JustificationMethod 0 /ComposerEngine 0 /ListStyle /nil /ListTier 0 /ListSkip false /ListOffset 0 >> >>8BIMFMsk 2????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????_f?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?#?)Ya?E?\?yIb?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?E?#?#?#?#?#?#?#?#?#?#??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0P^?[;P?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?E? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??>?p?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?L? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?>?w?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?E? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?))5?p?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?E? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??L?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?E? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?" ?p?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?0P^? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7w?w?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?))5? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7w?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?L?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7w?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0P^?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??w?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?i?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?" ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?E?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?))5? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??w?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?))5? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?T'?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?))5? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?>? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?E?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?E? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?p?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?E? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0P^?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?" ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?L?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w?i?~?~?~?~?~?~?~?~?~?>? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?p?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?i?E?0P^?" ? ? ? ? ? ? ? ??))5?))5?))5?))5?? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?T'?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0P^?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w?))5? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?E?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?T'?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?bbx?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?T'? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?bbx?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?i? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?L? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?7w? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?))5? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?))5? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?w?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?))5? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?bbx?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?))5? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?bbx?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?))5? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?L?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?))5? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?E?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?E? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????P?! ?*>t>~>M< < < < < >~>~>^?*?A?p@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0P^?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?E? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p@?! >t=x< < < < < < < < < < < < < < < < ?A????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?" ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?bbx? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????P>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~?! ??????????????????????????????????????????????>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~?P????????????????????! >~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~?*?*?*?A?P????????????????????????????????????????????????>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>^?????????????A>h< < < < < < < < < < < < < < < < < < < < ?A??????????P>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>h?*?*?1@?A?p@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?i? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >M>h?! ?` ???????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????????P>~< < < < < < < < < < < < < < < < < < < < < < ?A??????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >(>t?*?P????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?i?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >(>^?P????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?????????>^< < < < < < < < < < < < < < < < < < < < < < < < ?A??????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x>h?1@?????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?T'?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?))5? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >M?! ?p@?????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????` >M< < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x>^?` ??????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?>?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x?*?p@???????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????P=x< < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >h?` ????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?" ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?T'? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x?%??????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????! < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >h?p@??????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?p? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >(?A????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?????! < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x?%?????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?bbx?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >^?p@??????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????P=x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?` ???????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?E?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?7w? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >M?P?????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???p@=x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x?! ??????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?))5?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?T'? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x?! ????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >h?????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?w?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?p? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??%< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >M?p@???????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[;P?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >h??????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?p@=x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >M?p@??????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?>?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >h?????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >M?p@?????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?[;P? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >^????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >M< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >M?p@????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?p?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?! ???????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >t????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?L?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?7w? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x?P??????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?%???????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0P^?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?[;P? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >M??????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?P??????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?w?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*?????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?T'?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?0P^? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x?` ????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?! ?????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0P^?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?T'? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >h????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >(?????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?` ???????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?! ????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[;P?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?7w? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >(????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7w?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?[;P? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x???????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A???????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????A?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*>h>~>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?! ??????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >(?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?` ??????????` ?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*>^>~>~=x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >h???????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?bbx?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A?????????????????????????????????????????????????????????????????????????????????????` ?1@>h>(< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >t??????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????????????????????????????????????????????????????????????????????????????p@?A?*>M< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?p@??????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?>?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?i? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A?????????????????????????????????????????????????????????????????????????????????????????A>h< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????` ?*=x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?1@??????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A???????????????????????????????????????????????????????????????????????????????????????????` >~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?1@?????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p@>^< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >h??????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?p?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?L? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A?????????????????????????????????????????????????????????????????????????????????????????????%< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >^?????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????P>(< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >(??????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?L?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?p? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????????????????????????????????????????????????????????????????????????????????????????A=x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p@>M< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?` ?????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?))5?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A???????????????????????????????????????????????????????????????????????????????????????????????1@< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p@>(< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?1@?????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?L? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????????????????????????????????????????????????????????????????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?P????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????P< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*?????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?bbx?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?p? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????????????????????????????????????????????????????????????????????????????????>(< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?! ????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >t?????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?E?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A?????????????????????????????????????????????????????????????????????????????????????????????????! < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p@=x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >M?????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?))5?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?E? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A?????????????????????????????????????????????????????????????????????????????????????????????????=x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >t????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>h< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??i?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?bbx? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A?????????????????????????????????????????????????????????????????????????????????????????????????>h< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????1@< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?` ????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7w?p?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????????????????????????????????????????????????????????????????????????????????????????????! < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p@< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?" ?L?p?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????????????????????????????????????????????????????????????????????????????????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?" ?L?p?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????????????????????????????????????????????????????????????????????????????????????????????P< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?" ?L?p?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????????????????????????????????????????????????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??E?p?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?T'? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????????????????????????????????????????????????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??>?i?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????????????????????????????????????????????????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??>?i?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w?" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????????????????????????????????????????????????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >t????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?" ?p?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?T'?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????????????????????????????????????????????????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??p?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w?T'?7w?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????????????????????????????????????????????????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?! ???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?E?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?p?L?0P^? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????????????????????p@?A?*>h>~>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????????????????????????????A?%>^>~>~=x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?p?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?i?>?" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A?????????????????????????????????P>^>M< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????????????????????????` ?%>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?[;P?7w?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????????????????????????p@?*>(< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????! >~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?))5?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?p?T'?0P^? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????????????p@>h< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????????????????????! >(< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?>?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?i?L?" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A???????????????????????????*=x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????A>(< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?L?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?[;P?>?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A?????????????????????????P>M< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????????????????p@>^< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?bbx?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w?T'?7w?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????????! =x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?????????????????????????????????????????????????P>M< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?p?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?bbx?0P^? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????????????????>^< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????A=x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A?????????????????????>h< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????????????????????????????????????????????! < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?))5?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?[;P?7w?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????>h< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????????????! < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0P^?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?T'?0P^? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A???????????????????>h< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?????????????????????????????????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?E?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w?T'?0P^? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A???????????????????! < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????P=x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[;P?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w?T'?0P^? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????????????P< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????????????????????????????????????????p@>M< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?bbx?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w?T'?0P^? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A?????????????????p@>(< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????????>^< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w?T'?0P^? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????>^< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?w?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w?T'?0P^? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????P< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?????????????????????????????????????????>(< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[;P?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w?T'?" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A???????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?????????????????????????????????????????! < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?))5?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?p?>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A???????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????>(< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0P^?p?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?L? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????????>h< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????! < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?))5?T'?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????????p@< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??>?i?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?L? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????????! < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x>t?%?A?` ?????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????????????????????????????????????` < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >M?*?A?P?????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?" ?T'?w?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?bbx? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A?????????????>t< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >(?! ?p@?????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????????????????????????????????????%< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >^?` ?????????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??7w?bbx?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?bbx? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A?????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*?p@???????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????>t< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?` ???????????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??L?w?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?bbx? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A?????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x?A?????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????=x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >^?????????????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0P^?i?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >h??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A?????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x?P??????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????P< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*??????????????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??p?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????>t< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?%???????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????1@< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >t???????????????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?E?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?T'? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >(??????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?` ???????????????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??p?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????P< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?` ?????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????=x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?! ????????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?????????????????????????????????????>^< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >t????????????????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?E?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?L? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?! ?????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?p@????????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?%????????????????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?" ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?????????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??p?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?7w? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????>(< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?` ????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?????????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[;P?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?bbx? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?p@????????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?! ????????????????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?>?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????>^< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?! ???????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?! ????????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >t????????????????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?" ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????%< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?P??????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >(?p@???????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A???????????????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??w?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?bbx? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????P< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x?! ?????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >t???????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x?P??????????????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?i?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????=x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >^?p@???????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????>(< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >M?p@?????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x?A?????????????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?T'?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?7w? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????>t< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x?*?` ?????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x?%????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????%< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >h?` ???????????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7w?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?[;P? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????! < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >M?*?A?p@?????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????>^< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x>^?A?????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >t?! ?` ????????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?" ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?p?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????p@=x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >M>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A?????????????1@< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >(>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~=x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??w?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?))5? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????>h< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A?????????????p@< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?bbx?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?E? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???????????????????P< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A?????????????>M< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????????????????????????????????????%< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?L?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?i? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????????%< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????????????????????????????????????` < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0P^?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????P< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????????p@< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??w?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?7w? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????>^< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????????>h< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????! < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?bbx?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?T'? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????p@>(< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A???????????????` < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????>(< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?E?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?i?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????P< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A???????????????>h< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?????????????????????????????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?" ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???????????????????????! < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????p@=x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?????????????????????????????????????????>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??i?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???????????????????????>^< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A?????????????????! < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????????` =x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?L?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?bbx? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????????>h< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A?????????????????>t< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????????????????????????????????????????1@< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?))5?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????%< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????????????p@>M< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????????????????????????????????????????>^< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?i?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?0P^? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???????????????????????????! < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A???????????????????` =x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????>h< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?E?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?[;P? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????????????A=x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????P=x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?????????????????????????????????????????????p@>M< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??w?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????????????P>M< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A?????????????????????P=x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????????????p@>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?T'?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????p@>t< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????????????????` >M< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????????????????????????????????????????????>h< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?bbx? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????????????????%< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A???????????????????????p@>t< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?????????????????????????????????????????????????%< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?T'?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????????????????P>M< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A?????????????????????????%< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~??????????????????????????????????????????????????A>(< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?L? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???????????????????????????????????*< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????????????????????P>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????????????????????????????????????????????????p@>^< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ?T'?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????????????????????` >t< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????????????! >(< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?????????????????????????????????????????????????????P>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????A>t< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A??????????????????????????????! >(< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~???????????????????????????????????????????????????????A>t< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ?>?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?p? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????????????????????????` ?%>M< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????????????????A>h=x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?????????????????????????????????????????????????????????` >^>(< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ?p?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?7w? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???????????????????????????????????????????` ?! >^>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A???????????????????????????????????1@>^>M< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????P?%>~=x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ?))5?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?p? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????????????????????????????????p@?A?1@?*?*>^>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A???????????????????????????????????????A?1@?*>^>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~?! ???????????????>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>^????????????????????????????????????????????????????????????????` ?A?*?*>t>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>~>^????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ?T'?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?E? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ?w?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ?" ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?[;P? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ?E?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?7w? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ?bbx?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????` < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ?" ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????! < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ?0P^?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????????????????????????????????????????????????????????????????????????????>t< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ?E?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????????????????????????????????????????????????????????????????????????????P< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?P????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ?T'?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?7w? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????????????????????????????????????????????????????????????????????????????>M< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ?bbx?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?T'? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???????????????????????????????????????????????????????????????????????????????????????????>h< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ?bbx?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????????>h< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ?bbx?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?[;P? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????????????????????????????????????????????????????????????????????????` >M< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >t?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ?bbx?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?T'? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???????????????????????????????????????????????????????????????????????????????????????p@?*=x< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ?bbx?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?bbx?))5? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????????????????????????????????????????????????????????????????????P?! >t< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?A?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ?bbx?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?p?T'?>?))5?))5?))5?))5?))5?))5?E?E?E?E?>?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ?bbx?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?i? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >t??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ?E?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?))5? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?! ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ?E?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?))5? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ?))5?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?))5? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x?p@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ?p?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?T'? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ?T'?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >M?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ?0P^?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?bbx? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x?` ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ?w?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?))5? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x?P??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ?E?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?p? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x?P???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?7w? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >M?P????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ?L?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x?*??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ??w?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?T'? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >h?` ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0P^?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?7w? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >M?A?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?L?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =x?! ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?T'?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?p? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?*?p@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?T'?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?L? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >h?` ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?E?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?0P^? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~?A????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?))5?p?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >t?A??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??E?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?i? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >(>^?` ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??L?w?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?L? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~>^?A???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????W@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??7w?[;P?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?w?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????A< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >~>t?*?1@?P?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????o~??S?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?6?????????????????????????????????????????????????????????????` ?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?! ?A?A?P???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????8W:>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>/F? ?3<?r^?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? >S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌>S܌??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>h4?/?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;= x>?_e?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?f< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>?o2v?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>?_e?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;= x?f?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>FkP?_e?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>h4< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>z?o2v?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>z?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>8< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?f?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>z?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>h4?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>8?o2v?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?O1?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>FkP< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;= x?o2v?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;? 3H?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>8?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?_e?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>h4?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>FkP< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?f?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v?O1?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?_e?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?O1?>h4>FkP< ;< ;< ;< ;< ;< ;< ;= x>>>>= x< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;= x?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? 3H>8< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>h4?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v= x< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;? 3H?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>FkP< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??̎?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? 3H< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??̎?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>8< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?O1< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?f< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>z< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?o2v?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??̎?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??̎?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?f?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????P? ?>>>@>>>??@?p????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>h4?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p? >=?@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>FkP?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~??̎< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????P>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>? ??????????????????????????????????????????????>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?P???????????????????? >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????@?P????????????????????????????????????????????????>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?????????????@>?@??????????P>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>???0?@?p????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?O1< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????????>@>? ?`???????????????????????????????????????????>???????????P>?@??????????@>>??P????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?O1?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????????>>?P????????????????????????????????????????>?????????>?@??????????@=>?0?????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;? 3H?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????????>@? ?p?????????????????????????????????????>????????`>@?@??????????@=>?`??????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????????=??p???????????????????????????????????>???????P=?@??????????@>?`????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>FkP?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? 3H< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????????=???????????????????????????????????>?????? ?@??????????@>?p??????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_e< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????????>?@????????????????????????????????>????? ?@??????????@=??????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??̎?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>8< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????????>?p??????????????????????????????>????P=?@??????????@>?`???????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>z< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????????>@?P?????????????????????????????>???p=?@??????????@=? ??????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? 3H< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????????=? ????????????????????????????>??>?@??????????@>?????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?o2v?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_e< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????????????????????????????????????>???@??????????@>@?p???????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?/?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>8< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????????>??????????????????????????>?p=?@??????????@>@?p??????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????????>?????????????????????????>??@??????????@>@?p?????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>8?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?/< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????????>????????????????????????>@?@??????????@>@?p????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?_e?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~= x< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????????? ????????????????????????@??????????@>????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?f?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>z< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????????=?P???????????????????????@??????????@????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>h4?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?/< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????????>@???????????????????????@??????????@?P??????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?o2v?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@???????????????????????????????????????????@??????????@>??????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;? 3H?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>h4< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????????=?`?????????????????????@??????????@? ?????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>h4?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? 3H< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????????>?????????????????????@??????????@>?????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;= x?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~= x< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@?????????????????????`????????????????????@??????????@? ????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?/?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>z< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@?????????????????????????????????????????@??????????@>????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>z?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?/< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????????=????????????????????@??????????@?@???????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;= x?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>8< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????????@????????????????????????????????????????????????????????????>>>? ??????????????????>???????????????????????????????????`??????????`????????????????????????????????????????????????????????????>>>=>???????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??̎?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@?????????????????????????????????????????????????????????????????????????????????????`?0>>>??????????????????>??????????????????????????????????????????????????????????????????????????????????????????????????????????????p?@?>@?p??????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?O1< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@?????????????????????????????????????????????????????????????????????????????????????????@>??????????????????>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????`?=?0??????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>8?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>FkP< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@???????????????????????????????????????????????????????????????????????????????????????????`>?0?????????????????>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p>>??????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?_e?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?f< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@?????????????????????????????????????????????????????????????????????????????????????????????>?????????????????>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????P>>??????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?f?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_e< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@??????????????????????????????????????????????????????????????????????????????????????????????@=>?????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p>@?`?????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>FkP< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@???????????????????????????????????????????????????????????????????????????????????????????????0?????????????????>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p>?0?????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?f< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@?????????????????????????????????????????????????????????????????????????????????????????????????P????????????????>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????P??????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??̎?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_e< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????????????????????????????????????????????????????????????????????????????????????>? ????????????????>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>FkP< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????????????????????????????????????????????????????????????????????????????????????? ?????????????????>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p=>@?????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@?????????????????????????????????????????????????????????????????????????????????????????????????=>????????????????>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;= x?O1?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~??̎< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@?????????????????????????????????????????????????????????????????????????????????????????????????>>????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????0?`????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>z?_e?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@?????????????????????????????????????????????????????????????????????????????????????????????????? =????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p?@????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>FkP?f?_e?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@??????????????????????????????????????????????????????????????????????????????????????????????????@????????????????>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>FkP?f?_e?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@??????????????????????????????????????????????????????????????????????????????????????????????????P????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>FkP?f?_e?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@???????????????????????????????????????????????????????????????????????????????????????????????????@???????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>8??_e?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? 3H< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@???????????????????????????????????????????????????????????????????????????????????????????????????@???????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>8>?O1?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v= x< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@???????????????????????????????????????????????????????????????????????????????????????????????????@???????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;= x>?O1?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v>FkP< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@???????????????????????????????????????????????????????????????????????????????????????????????????@???????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>FkP?_e?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? 3H>8< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@???????????????????????????????????????????????????????????????????????????????????????????????????@???????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;= x?_e?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v? 3H>z= x< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@??????????????????????????????????????????????????????????????????????????????????????????????????? ???????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_e?f>h4< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????????????????????????p?@?>>>????????????????>??????????????????????????????????????????????????????????????@?>>>=>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?_e?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?O1>>FkP< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@?????????????????????????????????P>>@????????????????>??????????????????????????????????????????????????????????`?>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;= x?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?/>z= x< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@??????????????????????????????p?>????????????????>???????????????????????????????????????????????????????? >>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_e? 3H>h4< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????????????????p>????????????????>?????????????????????????????????????????????????????? >>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?O1?f>FkP< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@???????????????????????????=????????????????>????????????????????????????????????????????????????@>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?f?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?/>>8< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@?????????????????????????P>@????????????????>??????????????????????????????????????????????????p>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??̎?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v? 3H>z= x< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@???????????????????????? =????????????????>?????????????????????????????????????????????????P>@>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?_e?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~??̎>h4< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@??????????????????????>????????????????>????????????????????????????????????????????????@=>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v= x< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@?????????????????????>????????????????>??????????????????????????????????????????????? >????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?/>z= x< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????????>????????????????>?????????????????????????????????????????????? >????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>h4?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? 3H>h4< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@???????????????????>????????????????>?????????????????????????????????????????????@>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v? 3H>h4< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@??????????????????? ????????????????>????????????????????????????????????????????P=>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?/?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v? 3H>h4< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@??????????????????P????????????????>???????????????????????????????????????????p>@>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??̎?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v? 3H>h4< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@?????????????????p>????????????????>??????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v? 3H>h4< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????>????????????????>??????????????????????????????????????????@>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?o2v?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v? 3H>h4< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@????????????????P????????????????>?????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?/?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v? 3H>FkP< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@???????????????>????????????????>????????????????????????????????????????? >????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_e>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@???????????????@????????????????>????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>h4?_e?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?f< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@??????????????>????????????????>???????????????????????????????????????? >????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>? 3H?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>8< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@??????????????p????????????????>???????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;= x>?O1?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?f< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@?????????????? =>??@?`?????????????????????????????????????????????????????????>???????????????????????????????????????`>@??@?P?????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>FkP? 3H?o2v?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~??̎< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@?????????????>>? ?p?????????????????????????????????????????????????????????????>???????????????????????????????????????>?`?????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;= x>z??̎?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~??̎< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@???????????????p???????????????????????????????????????????????????????????????>??????????????????????????????????????>>?`???????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>8?f?o2v?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~??̎< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@????????????????????????????????????????????????@?????????????@=?@?????????????????????????????????????????????????????????????????>??????????????????????????????????????=>?????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>h4?O1?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@>???????????????????????????????????????????????@?????????????=?P??????????????????????????????????????????????????????????????????>??????????????????????????????????????P???????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;= x?_e?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>8< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@>???????????????????????????????????????????????@????????????>????????????????????????????????????????????????????????????????????>??????????????????????????????????????0>???????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? 3H< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????@>???????????????????????????????????????????????@????????????>>????????????????????????????????????????????????????????????????????>???????????????????????????????????????`???????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;= x?_e?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>8< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????P?`??????????????????????????????????????????????@????????????=? ????????????????????????????????????????????????????????????????????>?????????????????????????????????????>>????????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?f< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????? ??????????????????????????????????????????????@?????????????p????????????????????????????????????????????????????????????????????>?????????????????????????????????????>?????????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>FkP?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v= x< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????>??????????????????????????????????????????????@?????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????>?@????????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;= x?_e?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>z< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????>?`?????????????????????????????????????????????@?????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????>?@????????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?/?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~??̎< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????>>?????????????????????????????????????????????@?????????????p????????????????????????????????????????????????????????????????????>?????????????????????????????????????>? ????????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v>8< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????>? ????????????????????????????????????????????@????????????? ????????????????????????????????????????????????????????????????????>?????????????????????????????????????>>????????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>FkP?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????P???????????????????????????????????????????@????????????>?p???????????????????????????????????????????????????????????????????>?????????????????????????????????????>?@???????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;= x?o2v?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~??̎< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?????????????????P=? ??????????????????????????????????????????@????????????>???????????????????????????????????????????????????????????????????>?????????????????????????????????????>=?P??????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?O1?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v>8< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?????????????????=>?p????????????????????????????????????????@????????????>>@?p?????????????????????????????????????????????????????????????????>??????????????????????????????????????=?@?????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;? 3H?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>z< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?????????????????>=??`??????????????????????????????????????@????????????>=?????????????????????????????????????????????????????????????????>??????????????????????????????????????>?`???????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>z?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?/< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?????????????????? >@??@?p??????????????????????????????????@????????????>=>?@?????????????????????????????????????????????????????????????>??????????????????????????????????????@>? ?`????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>FkP?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_e= x< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????p=>@>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?@?????????????0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????>??????????????????????????????????????>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;= x?o2v?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????>?@?????????????p????????????????>??????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??̎?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;???????????????????P?@?????????????>@????????????????>???????????????????????????????????????>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?f?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?O1< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;???????????????????>?@??????????????????????????????>???????????????????????????????????????`>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>h4?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v>8< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????????P?@??????????????p????????????????>???????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;= x?o2v?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>z< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????????>?@??????????????>????????????????>???????????????????????????????????????? >????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??̎?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? 3H< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?????????????????????p>?@???????????????`????????????????>????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?O1= x< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????P?@???????????????>????????????????>?????????????????????????????????????????@>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>FkP?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>FkP< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????? ?@????????????????p=????????????????>?????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;= x?O1?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;???????????????????????>?@????????????????? ????????????????>??????????????????????????????????????????`=>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?f?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~??̎< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????????????>?@?????????????????>????????????????>???????????????????????????????????????????0>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v>8< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;???????????????????????????@??????????????????p>@????????????????>???????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?O1?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>h4< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????? ?@???????????????????`=????????????????>????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?/< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????????????????@=?@????????????????????P=????????????????>?????????????????????????????????????????????p>@>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>8?o2v?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v= x< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?????????????????????????????P>@?@?????????????????????P=????????????????>??????????????????????????????????????????????p>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;? 3H?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????p>?@??????????????????????`>@????????????????>???????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>8?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~??̎< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?????????????????????????????????@???????????????????????p>????????????????>?????????????????????????????????????????????????>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;? 3H?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>FkP< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?????????????????????????????????P>@?@?????????????????????????????????????????>??????????????????????????????????????????????????@>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>8?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?f< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????????????????????????@??????????????????????????P>????????????????>???????????????????????????????????????????????????p>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;? 3H?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v= x< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????????????????????????`>?@???????????????????????????? >????????????????>?????????????????????????????????????????????????????P>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;= x?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????@>?@?????????????????????????????? >????????????????>???????????????????????????????????????????????????????@>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_e< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????????????????????????????`?>@?@????????????????????????????????@>=????????????????>?????????????????????????????????????????????????????????`>>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?_e?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>z< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;???????????????????????????????????????????`? >>?@???????????????????????????????????0>>@????????????????>????????????????????????????????????????????????????????????P?>=>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_e< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????????????????????????????????????p?@?0??>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?@???????????????????????????????????????@?0?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>? ???????????????>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????`?@??>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;? 3H?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;???????????????????????????????????????????????????????????????????????????????????????????????@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?o2v?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~= x< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;???????????????????????????????????????????????????????????????????????????????????????????????@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>FkP?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?/< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;???????????????????????????????????????????????????????????????????????????????????????????????@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>z< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;???????????????????????????????????????????????????????????????????????????????????????????????@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??̎?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>8< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;???????????????????????????????????????????????????????????????????????????????????????????????@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????????`?@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>FkP?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?????????????????????????????????????????????????????????????????????????????????????????????? ?@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>h4?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?????????????????????????????????????????????????????????????????????????????????????????????>?@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>FkP< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?????????????????????????????????????????????????????????????????????????????????????????????P?P????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;? 3H?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>z< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????????????????????????????????????????????????????????????????????????????????>@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??̎?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? 3H< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;???????????????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??̎?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~= x< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????????????????????????????????????????????????????????????????????????????>>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??̎?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?/< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?????????????????????????????????????????????????????????????????????????????????????????`>@>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??̎?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? 3H< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;???????????????????????????????????????????????????????????????????????????????????????p?=??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??̎?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~??̎>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;????????????????????????????????????????????????????????????????????????????????????P? >?@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??̎?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_e? 3H>>>>>>>????>= x< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??̎?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?O1< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????@>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????@? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????@=???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>8?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????@=?p???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?_e?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? 3H< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;? 3H?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>FkP< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????@>@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>h4?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~??̎< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????@=?`?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?o2v?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????@=?P??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_e< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????@=?P???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>8?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>z< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????@>@?P????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?f?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????@=???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;= x?o2v?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? 3H< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????@>?`???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>h4?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>z< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????@>@?@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;?f?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>8< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????@=? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;? 3H?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_e< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????@??p????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;? 3H?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?f< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????@>?`??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>h4< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????@>?@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>?_e?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~= x< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????@>?@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;= x??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?O1< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????@>>?`????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;>8?f?o2v?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?f< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????@>>?@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&m< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;= x>z?/?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2v>8< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;< ;??????????????????@>>??0?P?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????o~??S?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?6?????????????????????????????????????????????????????????????`??????????????????????????????????????????????????????????????????? ?@?@?P???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????8X&>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>S>4.??3=?r^?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?>S>S>S>S>S>S>S>S>S>S??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >l?0?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?< < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =%>n?_fn?o2?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?< < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >?_fFu?_fl< < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >?o2?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>D<< < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?h?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~< < < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~< < < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >l?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~< < < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >DFu< < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =%?o2?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ? 4?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >Dn< < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?< < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?_fl?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>Fu< < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?h?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2?O?~?~?~?~?~?~?~?~?~>n< < < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?_fl>Fu< < < < < < < =%>>>>=%< < < < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =%?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? 4>D<< < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >l?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2>< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2=%< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ? 4?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>Fu< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??_?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? 4< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??_?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>D<< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?O< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?h< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?o2?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??_?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??_?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?h?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????P? ?>>>@>>>??@?p????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >l?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p? >=?@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >Fu?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~??_< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????P>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>? ??????????????????????????????????????????????>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?P???????????????????? >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????@?P????????????????????????????????????????????????>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?????????????@>?@??????????P>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>???0?@?p????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?O< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@????????????????????>@>? ?`???????????????????????????????????????????>???????????P>?@??????????@>>??P????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?O?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@????????????????????>>?P????????????????????????????????????????>?????????>?@??????????@=>?0?????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ? 4?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@????????????????????>@? ?p?????????????????????????????????????>????????`>@?@??????????@=>?`??????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >n?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>n< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@????????????????????=??p???????????????????????????????????>???????P=?@??????????@>?`????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >Fu?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? 4< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@????????????????????=???????????????????????????????????>?????? ?@??????????@>?p??????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_f<< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@????????????????????>?@????????????????????????????????>????? ?@??????????@=??????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??_?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>D<< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@????????????????????>?p??????????????????????????????>????P=?@??????????@>?`???????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@????????????????????>@?P?????????????????????????????>???p=?@??????????@=? ??????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? 4< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@????????????????????=? ????????????????????????????>??>?@??????????@>?????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?o2?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_f<< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@????????????????????????????????????????????????>???@??????????@>@?p???????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?0?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>D<< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@????????????????????>??????????????????????????>?p=?@??????????@>@?p??????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >n?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>n< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@????????????????????>?????????????????????????>??@??????????@>@?p?????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >D????????????????????????>@?@??????????@>@?p????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?_f????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?h?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@????????????????????=?P???????????????????????@??????????@????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >l?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@????????????????????>@???????????????????????@??????????@?P??????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?o2?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@???????????????????????????????????????????@??????????@>??????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ? 4?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>l< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@????????????????????=?`?????????????????????@??????????@? ?????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >l?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? 4< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@????????????????????>?????????????????????@??????????@>?????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =%?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~=%< < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@?????????????????????`????????????????????@??????????@? ????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?0?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@?????????????????????????????????????????@??????????@>????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@????????????????????=????????????????????@??????????@?@???????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =%?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>D<< < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@????????????????????@????????????????????????????????????????????????????????????>>>? ??????????????????>???????????????????????????????????`??????????`????????????????????????????????????????????????????????????>>>=>???????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??_?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>n< < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@?????????????????????????????????????????????????????????????????????????????????????`?0>>>??????????????????>??????????????????????????????????????????????????????????????????????????????????????????????????????????????p?@?>@?p??????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >n?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?O< < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@?????????????????????????????????????????????????????????????????????????????????????????@>??????????????????>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????`?=?0??????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >DFu< < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@???????????????????????????????????????????????????????????????????????????????????????????`>?0?????????????????>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p>>??????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?_f?????????????????>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????P>>??????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?h?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_f<< < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@??????????????????????????????????????????????????????????????????????????????????????????????@=>?????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p>@?`?????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>Fu< < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@???????????????????????????????????????????????????????????????????????????????????????????????0?????????????????>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p>?0?????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?h< < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@?????????????????????????????????????????????????????????????????????????????????????????????????P????????????????>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????P??????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??_?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_f<< < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@????????????????????????????????????????????????????????????????????????????????????????????????>? ????????????????>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>Fu< < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@????????????????????????????????????????????????????????????????????????????????????????????????? ?????????????????>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p=>@?????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?< < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@?????????????????????????????????????????????????????????????????????????????????????????????????=>????????????????>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =%?O?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~??_< < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@?????????????????????????????????????????????????????????????????????????????????????????????????>>????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????0?`????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >?_f???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p?@????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >Fu?h?_f????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >Fu?h?_f???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >Fu?h?_f???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < >D???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < >D<>n?O?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2=%< < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@???????????????????????????????????????????????????????????????????????????????????????????????????@???????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < =%>n?O?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2>Fu< < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@???????????????????????????????????????????????????????????????????????????????????????????????????@???????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < >Fu?_fD<< < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@???????????????????????????????????????????????????????????????????????????????????????????????????@???????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < =%?_f=%< < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@??????????????????????????????????????????????????????????????????????????????????????????????????? ???????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_fl< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@????????????????????????????????????p?@?>>>????????????????>??????????????????????????????????????????????????????????????@?>>>=>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < ?_fn>Fu< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@?????????????????????????????????P>>@????????????????>??????????????????????????????????????????????????????????`?>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < =%?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?0>=%< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@??????????????????????????????p?>????????????????>???????????????????????????????????????????????????????? >>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < >?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_fl< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@????????????????????????????p>????????????????>?????????????????????????????????????????????????????? >>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < >n?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?O?h>Fu< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@???????????????????????????=????????????????>????????????????????????????????????????????????????@>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < ?h?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?0>n>D<< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@?????????????????????????P>@????????????????>??????????????????????????????????????????????????p>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < ??_?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2? 4>=%< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@???????????????????????? =????????????????>?????????????????????????????????????????????????P>@>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < ?_fl< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@??????????????????????>????????????????>????????????????????????????????????????????????@=>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2=%< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@?????????????????????>????????????????>??????????????????????????????????????????????? >????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < >?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?0>=%< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@????????????????????>????????????????>?????????????????????????????????????????????? >????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < >l?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? 4>l< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@???????????????????>????????????????>?????????????????????????????????????????????@>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2? 4>l< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@??????????????????? ????????????????>????????????????????????????????????????????P=>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < ?0?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2? 4>l< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@??????????????????P????????????????>???????????????????????????????????????????p>@>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < ??_?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2? 4>l< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@?????????????????p>????????????????>??????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2? 4>l< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@????????????????>????????????????>??????????????????????????????????????????@>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < ?o2?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2? 4>l< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@????????????????P????????????????>?????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < ?0?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2? 4>Fu< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@???????????????>????????????????>????????????????????????????????????????? >????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < >?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_f<>n< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@???????????????@????????????????>????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < >l?_f????????????????>???????????????????????????????????????? >????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < >? 4?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>D<< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@??????????????p????????????????>???????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < =%>n?O?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?h< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@?????????????? =>??@?`?????????????????????????????????????????????????????????>???????????????????????????????????????`>@??@?P?????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < >Fu? 4?o2?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~??_< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@?????????????>>? ?p?????????????????????????????????????????????????????????????>???????????????????????????????????????>?`?????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < =%>??_?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~??_< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@????????????????????????????????????????????????@???????????????p???????????????????????????????????????????????????????????????>??????????????????????????????????????>>?`???????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >D??????????????????????????????????????=>?????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >l?O?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>n< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@>???????????????????????????????????????????????@?????????????=?P??????????????????????????????????????????????????????????????????>??????????????????????????????????????P???????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =%?_fD<< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@>???????????????????????????????????????????????@????????????>????????????????????????????????????????????????????????????????????>??????????????????????????????????????0>???????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? 4< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????@>???????????????????????????????????????????????@????????????>>????????????????????????????????????????????????????????????????????>???????????????????????????????????????`???????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =%?_fD<< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????P?`??????????????????????????????????????????????@????????????=? ????????????????????????????????????????????????????????????????????>?????????????????????????????????????>>????????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?h< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????? ??????????????????????????????????????????????@?????????????p????????????????????????????????????????????????????????????????????>?????????????????????????????????????>?????????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >Fu?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2=%< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????>??????????????????????????????????????????????@?????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????>?@????????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < =%?_f< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????>?`?????????????????????????????????????????????@?????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????>?@????????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?0?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~??_< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????>>?????????????????????????????????????????????@?????????????p????????????????????????????????????????????????????????????????????>?????????????????????????????????????>? ????????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >n?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2>D<< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????>? ????????????????????????????????????????????@????????????? ????????????????????????????????????????????????????????????????????>?????????????????????????????????????>>????????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < >Fu?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>n< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????P???????????????????????????????????????????@????????????>?p???????????????????????????????????????????????????????????????????>?????????????????????????????????????>?@???????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < =%?o2?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~??_< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?????????????????P=? ??????????????????????????????????????????@????????????>???????????????????????????????????????????????????????????????????>?????????????????????????????????????>=?P??????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?O?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2>D<< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?????????????????=>?p????????????????????????????????????????@????????????>>@?p?????????????????????????????????????????????????????????????????>??????????????????????????????????????=?@?????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < < ? 4?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?????????????????>=??`??????????????????????????????????????@????????????>=?????????????????????????????????????????????????????????????????>??????????????????????????????????????>?`???????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < < >?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?????????????????? >@??@?p??????????????????????????????????@????????????>=>?@?????????????????????????????????????????????????????????????>??????????????????????????????????????@>? ?`????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < < >Fu?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_f<=%< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????p=>@>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?@?????????????0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????>??????????????????????????????????????>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < =%?o2?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????>?@?????????????p????????????????>??????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < < ??_?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ???????????????????P?@?????????????>@????????????????>???????????????????????????????????????>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < ?h?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?O< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ???????????????????>?@??????????????????????????????>???????????????????????????????????????`>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < >l?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2>D<< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????????P?@??????????????p????????????????>???????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < =%?o2?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????????>?@??????????????>????????????????>???????????????????????????????????????? >????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < ??_?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? 4< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?????????????????????p>?@???????????????`????????????????>????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?O=%< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????????P?@???????????????>????????????????>?????????????????????????????????????????@>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < >Fu?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>Fu< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????????? ?@????????????????p=????????????????>?????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < =%?O?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>n< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ???????????????????????>?@????????????????? ????????????????>??????????????????????????????????????????`=>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < ?h?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~??_< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????????????>?@?????????????????>????????????????>???????????????????????????????????????????0>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < >?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2>D<< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ???????????????????????????@??????????????????p>@????????????????>???????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < ?O?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>l< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????????????? ?@???????????????????`=????????????????>????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????????????????@=?@????????????????????P=????????????????>?????????????????????????????????????????????p>@>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < >D@?@?????????????????????P=????????????????>??????????????????????????????????????????????p>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < ? 4?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>n< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????????????????p>?@??????????????????????`>@????????????????>???????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < >D????????????????>?????????????????????????????????????????????????>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < ? 4?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>Fu< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?????????????????????????????????P>@?@?????????????????????????????????????????>??????????????????????????????????????????????????@>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < >D????????????????>???????????????????????????????????????????????????p>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < ? 4?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2=%< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????????????????????????`>?@???????????????????????????? >????????????????>?????????????????????????????????????????????????????P>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < =%?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>n< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????????????????????????@>?@?????????????????????????????? >????????????????>???????????????????????????????????????????????????????@>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < >n?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_f<< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????????????????????????????`?>@?@????????????????????????????????@>=????????????????>?????????????????????????????????????????????????????????`>>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < ?_f< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ???????????????????????????????????????????`? >>?@???????????????????????????????????0>>@????????????????>????????????????????????????????????????????????????????????P?>=>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < >?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_f<< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????????????????????????????????????p?@?0??>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?@???????????????????????????????????????@?0?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>? ???????????????>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????`?@??>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < ? 4?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ???????????????????????????????????????????????????????????????????????????????????????????????@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < ?o2?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~=%< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ???????????????????????????????????????????????????????????????????????????????????????????????@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < >Fu?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ???????????????????????????????????????????????????????????????????????????????????????????????@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ???????????????????????????????????????????????????????????????????????????????????????????????@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < ??_?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>D<< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ???????????????????????????????????????????????????????????????????????????????????????????????@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < ?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????????`?@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < >Fu?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?????????????????????????????????????????????????????????????????????????????????????????????? ?@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < >l?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?????????????????????????????????????????????????????????????????????????????????????????????>?@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>Fu< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?????????????????????????????????????????????????????????????????????????????????????????????P?P????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < ? 4?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????????????????????????????????????????????????????????????????????????????????>@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < ??_?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? 4< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ???????????????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < ??_?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~=%< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????????????????????????????????????????????????????????????????????????????>>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < ??_?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?0< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ?????????????????????????????????????????????????????????????????????????????????????????`>@>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < ??_?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? 4< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ???????????????????????????????????????????????????????????????????????????????????????p?=??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < ??_?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~??_>< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ????????????????????????????????????????????????????????????????????????????????????P? >?@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < ??_?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_fn>>>>>>????>n=%< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < ??_?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?O< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????@>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????@? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????@=???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < >?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < >DFu< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????@>@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < >l?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~??_< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????@=?`?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < ?o2?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????@=?P??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_f<< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????@=?P???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < >D< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????@>@?P????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < ?h?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????@=???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < =%?o2?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~? 4< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????@>?`???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < >l?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????@>@?@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < ?h?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>D<< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????@=? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < ? 4?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?_f<< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????@??p????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < ? 4?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?h< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????@>?`??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < ??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~>l< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????@>?@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < >?_f?@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < =%??~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?O< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????@>>?`????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < >D>?@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????&n0< < < < < < < < < < < < < < < < < < < < < < < < =%>?0?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?o2>D<< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ??????????????????@>>??0?P?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????o~??S?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?~?6?????????????????????????????????????????????????????????????`??????????????????????????????????????????????????????????????????? ?@?@?P???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?P?_?l?|???????????????????????????????_?L?L?L?L?L?L?L?L?L?L>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>@>??0?@?P??????@?@??>=>???????????????????????????????????????????????????????????????????????????????????????????????????=>?0?p????????????????>>???????????????????????????????????????????????????????????????????????????????????????????????????>@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@>?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@>@>?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@???>>@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?>? ????????????????????>>@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@? ??>>=>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>????????????????????????????????????????????????????????????????????????????????P? >>????????????????????????????????@>@?@??????????????????????>>???????????????????????????????????????????????????????????????????????????????`?0?>@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>????????????????????????????????????????????????????????????????????????????????????`?>@????????????????????????????????@?????????????????????????>>???????????????????????????????????????????????????????????????????????????????????p? >>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????P>=????????????????????????????????@>?P?????????????????????????>>??????????????????????????????????????????????????????????????????????????????????????p?>>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????????p?=????????????????????????????????@>@?p??????????????????????????>>????????????????????????????????????????????????????????????????????????????????????????? >>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????p>????????????????????????????????@>????????????????????????????>>??????????????????????????????????????????????????????????????????????????????????????????? =>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????????????`>????????????????????????????????@>?????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????????????p>>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????=????????????????????????????????@>@?p?????????????????????????????>>??????????????????????????????????????????????????????????????????????????????????????????????@>>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>????????????????????????????????????????????????????????????????????????????????????????????????P>@????????????????????????????????@=?p??????????????????????????????>>???????????????????????????????????????????????????????????????????????????????????????????????p>>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????????????????p>????????????????????????????????@?@???????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????????????????? >???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>????????????????????????????????>>??????????????????????????????????????????????????????????????????????????????????????????????????P=>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????@=?p????????????????????????????????>>???????????????????????????????????????????????????????????????????????????????????????????????????P=>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>????????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????@??????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????????????????????P=>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????P??????????????????????????????????>>?????????????????????????????????????????????????????????????????????????????????????????????????????P=>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>??????????????????????????????????????????????????????????????????????????????????????????????????????>??????????????????????????????????????????????????????????????????>>??????????????????????????????????????????????????????????????????????????????????????????????????????0>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????p>@??????????????????????????????????????????????????????????????????>>??????????????????????????????????????????????????????????????????????????????????????????????????????>>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>????????????????????????????????????????????????????????????????????????????????????????????????????????P??????????????????????????????????????????????????????????????????>>???????????????????????????????????????????????????????????????????????????????????????????????????????>@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????????????????????????p>??????????????????????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????????????????????????>>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????????????????????????? ??????????????????????????????????????????????????????????????????>>?????????????????????????????????????????????????????????????????????????????????????????????????????????`>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>??????????????????????????????????????????????????????????????????????????????????????????????????????????>??????????????????????????????????????????????????????????????????>>?????????????????????????????????????????????????????????????????????????????????????????????????????????>>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>??????????????????????????????????????????????????????????????????????????????????????????????????????????`>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????????p??????????????????????????????????????????????????????????????????>>??????????????????????????????????????????????????????????????????????????????????????????????????????????>>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>>????????????????????????????????????????????????????????????? ?@?@???????????????????????????????????????????>????????????????????????????????`??????????????????????????????????>>??????????????????????????????????????????????????????????????@?@?p??????????????????????????????????????????? >???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>>>? ?`???????????????????????????????????????0????????????????????????????????@=>??P???????????????????????????????????????=>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>>? ?????????????????????????????????????????????????????????????????????@>??p????????????????????????????????????>>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>>?@???????????????????????????????????>????????????????????????????????@=????????????????????????????????????? >???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>>???????????????????????????????????????????????????????????????????@>@?`??????????????????????????????????`>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>>?p?????????????????????????????????@????????????????????????????????@=?P?????????????????????????????????>>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>>?????????????????????????????????????????????????????????????????@=?`????????????????????????????????>>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>?????????????????????????????????>@????????????????????????????????@>@?????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>?`???????????????????????????????>????????????????????????????????@?????????????????????????????????0>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????@=?p???????????????????????????????P>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>?p???????????????????????????????0????????????????????????????????@? ???????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>? ???????????????????????????????@????????????????????????????????@>???????????????????????????????>>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>>???????????????????????????????p????????????????????????????????@=???????????????????????????????>>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>>???????????????????????????????????????????????????????????????@???????????????????????????????>>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>>@???????????????????????????????????????????????????????????????@?@???????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>???????????????????????????????>????????????????????????????????@?@???????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>???????????????????????????????>????????????????????????????????@?@???????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>???????????????????????????????>????????????????????????????????@?@???????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>???????????????????????????????>????????????????????????????????@?@???????????????????????????????0>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>???????????????????????????????>????????????????????????????????@?@???????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>???????????????????????????????>????????????????????????????????@?@???????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>=>?? ?@?@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>>??@?@?p????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>>@??P???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>>?@???????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>=??`??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>?@??????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>=? ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>?`????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>??p??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>?`??????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>>@?P????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@=?????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>>?p?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>@?P?????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>?p??????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>????????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>? ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>?????????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>??????????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>@?p??????????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>>@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@=?P???????????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>=?`????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>>@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@?`?????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>?@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@?`??????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>=????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@?@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>>???????????????????????????????????????p?0>>>????????????????????????????????????????????????????????????????@>????????????????????????????????????????P?>>@?@???????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>?0?????????????????????????????????????`>=????????????????????????????????????????????????????????????????@>??????????????????????????????????????>?@???????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>?????????????????????????????????????=????????????????????????????????????????????????????????????????@?0????????????????????????????????????@>?@???????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????>>???????????????????????????????????p>????????????????????????????????????????????????????????????????@?p????????????????????????????????????@???????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????? ???????????????????????????????>???????????????????????????????????p>@????????????????????????????????????????????????????????????????@>@????????????????????????????????????@???????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>????????????????????????????????@???????????????????????????????>?0?????????????????????????????????>????????????????????????????????????????????????????????????????@>??????????????????????????????????0?@???????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>????????????????????????????????`???????????????????????????????>?@?????????????????????????????????@????????????????????????????????????????????????????????????????@??????????????????????????????????>?@???????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>@????????????????????????????????>???????????????????????????????>?p????????????????????????????????>????????????????????????????????????????????????????????????????@??????????????????????????????????0?@???????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????>?????????????????????????????????=????????????????????????????????????????????????????????????????@?@????????????????????????????????>?@???????????????????????????????@>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@???????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????????????????@?@????????????????????????????????>?@???????????????????????????????@>????????????????????????????????????????????????????????????????????????????????????????????????????`????????????????????????????????>???????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????????????????@?@????????????????????????????????>?@???????????????????????????????@>????????????????????????????????????????????????????????????????????????????????????????????????????@?????????????????????????????????@???????????????????????????????>?????????????????????????????????=????????????????????????????????????????????????????????????????@?@????????????????????????????????>?@???????????????????????????????@>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????>?????????????????????????????????>????????????????????????????????????????????????????????????????@?@?????????????????????????????????0?@???????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>??????????????????????????????????>@???????????????????????????????>??????????????????????????????????`=????????????????????????????????????????????????????????????????@?@?????????????????????????????????>?@???????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>@???????????????????????????????????p>???????????????????????????????>???????????????????????????????????0????????????????????????????????????????????????????????????????@?@??????????????????????????????????p>@?@???????????????????????????????@>????????????????????????????????????????????????????????????????????????????????????????????????????p????????????????????????????????????=???????????????????????????????>?`???????????????????????????????????P=????????????????????????????????????????????????????????????????@????????????????????????????????????p>?@???????????????????????????????@>????????????????????????????????????????????????????????????????????????????????????????????????????0?????????????????????????????????????p?>???????????????????????????????>?@????????????????????????????????????p>????????????????????????????????????????????????????????????????@>????????????????????????????????????? >?@???????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>????????????????????????????????????????P?>=???????????????????????????????>???????????????????????????????????????p?>????????????????????????????????????????????????????????????????@>???????????????????????????????????????0>>?@???????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????=?p????????????????????????????????????????????P?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@???????????????????????????????>>??????????????????????????????????????????`?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@????????????????????????????????????????????????????????????????@???????????????????????????????????????????@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?p???????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????? ??????????????????????????????????????????????????????????????????????????????????????????????????????????>=?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@?@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>@??????????????????????????????????????????????????????????????????????????????????????????????????????????>?P????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>????????????????????????????????????????????????????????????????????????????????????????????????????@?????????????????????????????????????????????????????????????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>@?????????????????????????????????????????????????????????????????????????????????????????????????????????>=????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@?@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????=?`???????????????????????????????????????????????????????????????????????????????????????????????????????>>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@?`??????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>@???????????????????????????????????????????????????????????????????????????????????????????????????????>? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>??????????????????????????????????????????????????????????????????????????????????????????????????????>=?p?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@?@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>?p????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????????>?0????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>=?P???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>??????????????????????????????????????????????????????????????????????????????????????????????????>>?p??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>?p????????????????????????????????????????????????????????????????????????????????????????????????>>@?p?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@=?P?????????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>@?P???????????????????????????????????????????????????????????????????????????????????????????????>>@?p????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@=?@????????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????=?0??????????????????????????????????????????????????????????????????????????????????????????????>>?P???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@? ???????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????????????>=?0??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>??????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>@?P???????????????????????????????????????????????????????????????????????????????????????????>>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>?`????????????????????????????????????????????????????????????????????????????????????????????????????????@>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>@?@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@=????????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>?0????????????????????????????????????????????????????????????????????????????????????????>>?`?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>@?@?????????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>?0??????????????????????????????????????????????????????????????????????????????????????>>?`???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>?0???????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>>?P???????????????????????????????????????????????????????????????????????????????????>>? ?p????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>??`????????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>>??@???????????????????????????????????????????????????????????????????????????????>>??P?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>@>?@?p????????????????????????????????????????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????=>>????@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@???????????????????????????????>>>???@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@>?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?>>???0?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????>>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????????????????????0???????????????????????????????>>???????????????????????????????????????????????????????????????????????????????????????????????????>@????????????????????????????????>@>????????????????????????????????????????????????????????????????????????????????????????????????????P????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????? ?????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????? ??????????????????????????????????@>???????????????????????????????????????????????????????????????????????????????????????????????????>?P???????????????????????????????????0>???????????????????????????????????????????????????????????????????????????????????????????????????=??p????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>@>?0??????????????????????????????????????>>???????????????????????????????????????????????????????????????????????????????????????????????????>??????????????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>??????????????????????????????????????????????????????????????????????????????????????????????????????????0>???????????????????????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????????????????????????>>???????????????????????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????????????????????????p>???????????????????????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>????????????????????????????????????????????????????????????????????????????????????????????????????????p=>???????????????????????????????????????????????????????????????????????????????????????????????????>????????????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????P>???????????????????????????????????????????????????????????????????????????????????????????????????>??????????????????????????????????????????????????????????????????????????????????????????????????????p>>???????????????????????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????????????????????p>@>???????????????????????????????????????????????????????????????????????????????????????????????????>????????????????????????????????????????????????????????????????????????????????????????????????????p>@>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????P>@>???????????????????????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????????????????p?>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????? >>???????????????????????????????????????????????????????????????????????????????????????????????????>??????????????????????????????????????????????????????????????????????????????????????????????P>>???????????????????????????????????????????????????????????????????????????????????????????????????>????????????????????????????????????????????????????????????????????????????????????????????p>>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????????=>???????????????????????????????????????????????????????????????????????????????????????????????????>????????????????????????????????????????????????????????????????????????????????????????? >>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????????????@>>???????????????????????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????0>>???????????????????????????????????????????????????????????????????????????????????????????????????>??????????????????????????????????????????????????????????????????????????????????`?>>???????????????????????????????????????????????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????????????????????????@?>>???????????????????????????????????????????????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????????????????@?0?>>@=>??@?????????????????????????`>@>??????????????????????????????????????????????????????????????????>>>>@yara-2.0.0/extra/old-logo.png000066400000000000000000000200521225703323600160140ustar00rootroot00000000000000PNG  IHDR%E'n pHYs.#.#x?v OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FUIDATxMV`"/`e,O W`y.+T7`I@zlճD=9QHz*#E<EQE@=-%A @P%A @P%A A @P%A @P%A @P%?O5}=l/</myPz즡K;a8% ~YO Lo:)= [ B!}T@0C;E yˎ4F/8‘kA CwZ4SoY@j,F"T`O (GL=ȌW!(G?&`Gy-J%cRMEעCP0!0 -RSEQkϿ|gV6׉n_?aW뒻OS5+8S;֣[|/ŗK3z/׆wnSAaВϓ> %AcZZ>o;mvsꍄ$S ]FoކSnJڍ$j6%l}bGȹEAO$ƭ$(AN=nDPuʹ60Y$~1 i+#KI;3$(PPgZn%A ,^RZ (P_` S I#%RZ (PWf8KykJDiJ,O~ε%G Wŀ1Xڤn&)fƻ.-X%K|:Fp17o$%(g^ZtJ-Ol~ A %6=7A }߱EfN!(PĂCP`#-@PnJ (JZ (J (4}-(ɑ}i+*n*J@-c3 A"L_tnP<Գ> (AfZ Po&@PL @P ԾVntfd `wS-h~ӳ?уv&A v)8@PMBiE+`w#-@P]V A 6 uJp7FnS A yHJPadiI@Q@PMB}mokR H_1 @P9/'I%8xK;F u7 iLS-9I&48Ž7 (Ay<57ѢJwZv엱{B׮eYo7`J!uSklr9hNJ (ހƃ0$Y؂u5p+PDlŗK%kp$N0_,~?u1I@$( JA @P%A @P%A @P)(#N_C-$YcS|)_|!#tN:'nͲy$I[uzQW= ]a_ŁAэJ\2ٱVe jRm5m}hj_7nAiRߵ@<ߺzw6w=}?׺uנu|u D~(S^ϳ~uzGM D庯>^o;&>=nK~p1w^Ijgwޞ[ jJ;cnK+?-[n%Aojc\!(UZ~[5I `ۆh(pw@9ؚ0cVV^{+(UbHR{6ͪݱB}ڹ ެ`7hx3>Tz9Ȫ Ҏqz48xwm 9(U[viӑF~Q=2p^Qz[IzJ]Wt-Sn+&mU|(m9QʳÈ|aDi'nfQkaiwH츜z8q`[/;'Svێ4N6=t-|TN(=v"Jvڰ- 4Wkn8-Ɏ{T m7=zX^i[NK/nK4{6b JPje_نGN5W5,+ѱ=^]~W;[3@WU@ J[ꁒH">f/hw˟G7{nG]|f b*PVt˲t< W-"y鮑<-ݵ3HfY;@[UVUݰ 끒}Êb8?ojjm870+q$ WEyJ'@x|(m"-BT@oK-o K~_aݵqGÆdVt7[;.l`ć:]v>Hrvk@niE+GH|*.(^dMJGD#qx[ۖ?F"k1]j~gA:۱i)dUSA>u8>Pr 6,,{p^e(r?4z mny{,ڧ]ozCS vm+ ָAi $Ьz~ҦO;y֌l8 JiUվ_+(ae#4~RP[v{Zz0 bbuWe_g!wGF5h..oRnwƥ؏IKxm{<Űfz+{=m} _bqk{7vGzj5I/]sWҲ!_Y}7[zϷr#J~ob_~hĤW~?rjvh}Y5T;ժz$^qyEG๖R|͑$XƩ;wwϯ"šZpq64pدǂ&=aAddQ42(7d~P_&iGNeYyWV$rZ LZ%(cH$Աn\$(UB H)9[qweS6Y 4ЂYFĤ=Xs/9 ѿVPi)05C.UH_ww M/ղiZvBKv:NÒw*݄hR<Hhp9霤6׷+$9:~%h Adobe Photoshop CS4 (11.0x20080609 [20080609.m.379 2008/06/09:02:00:00 cutoff; m branch]) Macintosh 2008-05-13T13:58:36+02:00 2008-05-13T15:04:28+02:00 2008-05-13T14:35:59+02:00 application/vnd.adobe.photoshop xmp.iid:0A801174072068118F62D40F263793E9 xmp.did:0A801174072068118F62D40F263793E9 xmp.did:01801174072068118F62D40F263793E9 created xmp.iid:01801174072068118F62D40F263793E9 2008-05-13T14:35:59+02:00 Adobe Photoshop CS4 (11.0x20080609 [20080609.m.379 2008/06/09:02:00:00 cutoff; m branch]) Macintosh derived converted from image/tiff to application/vnd.adobe.photoshop saved xmp.iid:0A801174072068118F62D40F263793E9 2008-05-13T15:04:28+02:00 Adobe Photoshop CS4 (11.0x20080609 [20080609.m.379 2008/06/09:02:00:00 cutoff; m branch]) Macintosh /metadata xmp.iid:01801174072068118F62D40F263793E9 xmp.did:01801174072068118F62D40F263793E9 xmp.did:01801174072068118F62D40F263793E9 1 3000000/10000 3000000/10000 2 256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;939DDAB6AF1A41D058ED32CBB7E59018 600 400 32 32 32 1 2 3 1 600 400 65535 36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;4052212324FEE53A0C9873FCDB723B1D 3 sRGB IEC61966-2.1 (Linear RGB Profile) 8BIM,,8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM5d8BIM8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM 8BIM08BIM-8BIM@@'p8BIM6nullVrsnlongenabbool numBeforelongnumAfterlongSpcnlong minOpacitylong maxOpacitylong2BlnMlong8BIM3null Vrsnlong frameStepObjcnull numeratorlong denominatorlongX frameRatedoub@>timeObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlongp denominatorlongX workInTimeObjcnull numeratorlong denominatorlongX workOutTimeObjcnull numeratorlongp denominatorlongXLCntlongglobalTrackListVlLs hasMotionbool8BIM4FnullVrsnlongsheetTimelineOptionsVlLs8BIM8BIM=XlogoXnullboundsObjcRct1Top longLeftlongBtomlongRghtlongXslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongXurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIMADBEmntrRGB XYZ  ;acspAPPLnone,ADBE cprt2desc$wtptrXYZgXYZbXYZrTRCgTRCbTRCtextCopyright 2008 Adobe Systems Incorporateddesc'sRGB IEC61966-2.1 (Linear RGB Profile)XYZ RXYZ o8XYZ bXYZ $curv8BIM 8BIM 'ZU'>JFIFHH Adobe_CMAdobed            U" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$TI%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$TI%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$^mFVE7jè"Z\mv7=9 -WςVb't|K YYZ9XnAWgIxc'eZ>@>9~/_Y/}/BИX}C9~EY-i׀|j;u^~#[QlYדVEGuw10AkM/:Qo?ȞVQqwDq$R4I$$I)I$JRI$I$$I)I$JRI$I$$I)I$JRI$I$$I)I$JTI%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$tVt﫹6RNS6,z}kt /J/=޼S4匆}*IN8!Pq ]5aW*%/]73Xp2σm$BKƿ7,*Rƿ7,*SΏgz'+_EU8cW5п7Ofn~GIemp6>\Y`̷.Wyy!F#*I$ZI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IOTI%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$?BõךJ/=޼R?>A~ޓkʸ_f Wiό^嶓K>/I$q[2Mmc*u.ULkͳk:sQsq˼1-O-6Y82:OgĿ֟eIV'w>$^}iLX_nuX?u?2.m$U.[?boկRzc.öfU[_Sk^ D_Rzcweѽ߽:땻 +rzeBOlBMNNҏ^$S*I$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IOTI%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$?BõךJ/=޼R?>A~ޓkʸ_f Wiό^嶓K>/I$yoJKqSK]MޕZGzjI &(9Nj|N8lp'i$H-^?s] ߺ]ɼA+ޗ/S[WrfL<{6y//zLobKFoQ..Xʙ )7Ŀy|8I+*I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$TI%)$IJI$RI$I%)$IJI$RI$I%)$IJIVCY`^tkZs?Ǝtcg6);g  4'a\7:8]gHmL%݋ѭɾ?9Kt?>2 yV5yڿֺwZ9yڪf9PU2Jd^k)WIۿ`3TȾ}.KC]d;bJc{'s68,$Jw%I$JRI$a#*_&1}]/%g,?LՕ.Xʙ *"|KǗҋ$I$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IOTI%)$IJI$RI$I%)$IJI$RI$I%)$IO 0ks<]-~jWmؽN5UEWAT߸o>byL|=8IJIDY$I/΄xknmOvY֮ZuMI,ipb|@d_pܮnIHRI$I$/*_&ʿ)9C|WK~qyS7!eq60uv0pMƪ!/RI%yTI$$I)I$JRI$I$$I)I$JRI$I$$I)I$JRI$TI%)$IJI$RI$I%)$IJI$RI$I%)$IL\ֽp!"ABųOk,6; /c~LcVH|2|/~ p/O҈v}@f be6$=~7̏?Ǔ_[>2v&KI`=Jv zGЬo7-ۻy"3 l,ܴ'3r2=]&vg;Sױ/-*>V1{z><\ύ ¿ŗIXrI$$I)KUw_/^/kϥ/3mz{j-Fk߆eh%pGE4<AO7.WgJJ$GGɎ9!(H\f O>smtDmx$N}nggxIkN|Ħo\8ߧ17tGFlg.]Eȱc^qC̚X.N0% `~,X98/ғ$RI$I$$I)I$JRI$I$$I)I$JRI$I$TI%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$?BõךJ/=޼R?>A~ޓkʸ_f Wiό^嶓K>/I$$IJI$RNӺnFnPia.n{5mp?<7 0]pS2K$9<xcMI[>A;6O1E$k4!kDakGsdE>C5p. eBͨ}dI}I?۟yPhsEoVhkoI^'LOKFs42!o5S߷ӱ> H ψrHc$\p$Jͩ$IJI$RI$I%)$IJI$RI$I%)$IJI$STI%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$?BõךJ/=޼R?>A~ޓkʸ_f _iό^嶓K>/I$$IJI$RWG.$DHQe&5!H~.;ka;؃#v_?v]1̕(d?/E/c+W݇'f?:ޭ22qkOm5}*cϳonMhkCZ!@A:Y:WCͰkG[=HB8̖3rDp1_:.;q3?̯K%EWqG;3'^U0MoM_ˤCL+ˌ1W~~5vUSt1QB[ 3 c0rWg,?LՕ.XO4ƞ5Pr.Ŀy|(I+*I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$TI%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$Rdͷ;km >Mo[}ht [k*1w;u_Ps7;[N{%./SI*@I%)w ⾡25Yo~b7F9n#SOnN("K>. @cq{WVmJϩ$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%?TI%)$IJI$RI$I%)$IJI$RI$I%)$IJIM4qaNDIJI$RI$I%)$IJTzD}bqxd8^ӵlfy$Q1!( '+z_}XCo]:I?t}}O1Տ6ۯ&ϪtuGt%Gد_$xXx4 |:YH2o)$ $6ORI$)$IJI$;(_c*i0  JHI$$I)I$JRI$I$$I)I$JRI$I$$I)TI%)$IJI$RI$I%)$IJI$RI$I%)s^ǓF. Z q s6\M_B\~j>0[q0CTkmcw*Jt:[/7^%^v9nJ{?U4n=;*J&+2hFUOүO tbtcYk34=VgWgly'Qf52MyŰR޳oڿ= $:/\}w .񑏽՗ZC_[^m7/5UkĠ[ZcMMs*GSleJ~~-XN=[2leZƽ?5A~PY?ie8轾oyZ?Y>uetڮ.`uliWlzm/]1km-Kz5bJmNlz~N]M±^ qśO9;u _^6^7+ks[?qP}S. smmu_[+Oy%>CӾ}wzqqkhs ~_ >tT~efD9VZ_vEwW7/3a}g'e5E{W]W_XA]Ҩn[܃ˁxN1=X}pP0Zk}_M2zJu 4캗}kWYf eL9SX߮Rpo,E=v5ȢسŏP?]Һa;ӵ;c^{G}suװ_(=gY^= "J};_g|ge1ʦX6he}mWWK`}g|b0;*YAxƹǷs>4۳qWA,W;&ݏvA Z{=/Mz_Տ:+9I)]s3l?Xp 6ҳڱi~5,o~f}xk܌m~s ۉֽΫ:w?!_=mOo=?Sg:Sótme[vq7m$>u]Ya}R:}9/ί:NEW$c%R ?w_K?1cBߍqzgX3]*fC;(sEm[U}{}jS>dca]!3=^oyeMQ W޷pZWF}YmgsW6m{Y[##MٷQF8ӏ[豵6?פ}IrGXlژN-- X9rҞy}wEB -ȟsu(+adt7 y6Z%r5~Qe ԯ{2\=l3s/KK?ZJwRI$I%)$IJI$RI$I%)$IJI$RI$I%?TI%)$IJI$RI$I%)$IJI$RI$I%9Y:=[FﳲkgX^k 7_tzoڮ˗g7ǻ.|6ZcExRU\{A sS}/g_IJUcT[̐Ƌ\ѷs= $$I)^2͋?.g{}O6ڭie5p=jw阘˪=6mnjJtOJ!lZSU>iV5k;9)Ol?w:+9K0nNLȮv]UXVƽoNBN~59u5]ƇZk\\ݵ?Bwc=Lvٿk7xx;2h|o0w7uv1\7$ğ)3 Oz'|.z}kQMul֩tԶ~ELn߳ko)ħ%r/\_?_y]N>N589]^YSZZԳzwO s˩ﭶ48Z$̿_/?[TǯX=+ǩzVoٽT3zE~6]n}5KcsY^n/]b.&& ælvNihc]an;r2JkdtΝVVN-7d㙢+kYwsw`ecSn-ປ sK\6 +,rJ|٧׻C,q|;s>[z*:7LM lf08q9Z]IJI$RI$I%)$IJI$RI$I%)$IJI$RI$TI%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$TI%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$TI%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$TI%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$Tʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$8BIM!UAdobe PhotoshopAdobe Photoshop CS48BIM"vMM*bj(1er2ׇi-'-'Adobe Photoshop CS4 (11.0x20080609 [20080609.m.379 2008/06/09:02:00:00 cutoff; m branch]) Macintosh2008:05:13 14:35:59Xfn(vHH8BIMmaniIRFR8BIMAnDsnullAFStlongFrInVlLsObjcnullFrIDlong2"FrDllongFStsVlLsObjcnullFsIDlongAFrmlongFsFrVlLslong2"LCntlong8BIMRoll8BIMmfri8P8BIMMt328BIMLr327g***8BIMnorm%|(YARA8BIMTySh$<??@v@sp2TxLrTxt TEXTYARA textGriddingenum textGriddingNoneOrntenumOrntHrznAntAenumAnntAnSm TextIndexlong EngineDatatdta"x << /EngineDict << /Editor << /Text (YARA ) >> /ParagraphRun << /DefaultRunData << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> /RunArray [ << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << /Justification 1 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> ] /RunLengthArray [ 5 ] /IsJoinable 1 >> /StyleRun << /DefaultRunData << /StyleSheet << /StyleSheetData << >> >> >> /RunArray [ << /StyleSheet << /StyleSheetData << /Font 0 /FontSize 41.66667 /FauxBold false /FauxItalic false /AutoLeading true /Leading .04167 /HorizontalScale 1.2 /VerticalScale .9 /Tracking 60 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 .74902 .74902 .74902 ] >> /FillFlag true /StrokeFlag false /FillFirst false /YUnderline 1 /OutlineWidth .57884 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> >> ] /RunLengthArray [ 5 ] /IsJoinable 2 >> /GridInfo << /GridIsOn false /ShowGrid false /GridSize 18.0 /GridLeading 22.0 /GridColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /GridLeadingFillColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /AlignLineHeightToGridFlags false >> /AntiAlias 3 /UseFractionalGlyphWidths true /Rendered << /Version 1 /Shapes << /WritingDirection 0 /Children [ << /ShapeType 0 /Procession 0 /Lines << /WritingDirection 0 /Children [ ] >> /Cookie << /Photoshop << /ShapeType 0 /PointBase [ 0.0 0.0 ] /Base << /ShapeType 0 /TransformPoint0 [ 1.0 0.0 ] /TransformPoint1 [ 0.0 1.0 ] /TransformPoint2 [ 0.0 0.0 ] >> >> >> >> ] >> >> >> /ResourceDict << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 1 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> ] /FontSet [ << /Name (Krungthep) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (MyriadPro-Regular) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> /DocumentResources << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 1 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> ] /FontSet [ << /Name (Krungthep) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (MyriadPro-Regular) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> >>warp warpStyleenum warpStylewarpNone warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrzn8BIMluni YARA8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubA c>dE8BIMfxrpm@Qr8!!!8BIMnorm)D(*/8BIMTySh( ??@z@s2TxLrTxt TEXT*/ textGriddingenum textGriddingNoneOrntenumOrntHrznAntAenumAnntAnSm TextIndexlong EngineDatatdta&L << /EngineDict << /Editor << /Text (*/ ) >> /ParagraphRun << /DefaultRunData << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> /RunArray [ << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << /Justification 1 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> ] /RunLengthArray [ 3 ] /IsJoinable 1 >> /StyleRun << /DefaultRunData << /StyleSheet << /StyleSheetData << >> >> >> /RunArray [ << /StyleSheet << /StyleSheetData << /Font 0 /FontSize 41.66667 /FauxBold false /FauxItalic false /AutoLeading true /Leading 50.0 /HorizontalScale 1.2 /VerticalScale .9 /Tracking -150 /AutoKerning false /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 .74902 .74902 .74902 ] >> /FillFlag true /StrokeFlag false /FillFirst false /YUnderline 1 /OutlineWidth .57884 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> >> << /StyleSheet << /StyleSheetData << /Font 0 /FontSize 41.66667 /FauxBold false /FauxItalic false /AutoLeading true /Leading 50.0 /HorizontalScale 1.2 /VerticalScale .9 /Tracking -150 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 .74902 .74902 .74902 ] >> /FillFlag true /StrokeFlag false /FillFirst false /YUnderline 1 /OutlineWidth .57884 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> >> ] /RunLengthArray [ 1 2 ] /IsJoinable 2 >> /GridInfo << /GridIsOn false /ShowGrid false /GridSize 18.0 /GridLeading 22.0 /GridColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /GridLeadingFillColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /AlignLineHeightToGridFlags false >> /AntiAlias 3 /UseFractionalGlyphWidths true /Rendered << /Version 1 /Shapes << /WritingDirection 0 /Children [ << /ShapeType 0 /Procession 0 /Lines << /WritingDirection 0 /Children [ ] >> /Cookie << /Photoshop << /ShapeType 0 /PointBase [ 0.0 0.0 ] /Base << /ShapeType 0 /TransformPoint0 [ 1.0 0.0 ] /TransformPoint1 [ 0.0 1.0 ] /TransformPoint2 [ 0.0 0.0 ] >> >> >> >> ] >> >> >> /ResourceDict << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 1 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> ] /FontSet [ << /Name (Krungthep) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (MyriadPro-Regular) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> /DocumentResources << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 1 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> ] /FontSet [ << /Name (Krungthep) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (MyriadPro-Regular) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> >>warp warpStyleenum warpStylewarpNone warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrzn8BIMluni*/8BIMlnsrrend8BIMlyid 8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubA cׅD8BIMfxrp@$8!!!8BIMnorm)D(/*8BIMTySh( ??@j@s2TxLrTxt TEXT/* textGriddingenum textGriddingNoneOrntenumOrntHrznAntAenumAnntAnSm TextIndexlong EngineDatatdta&L << /EngineDict << /Editor << /Text (/* ) >> /ParagraphRun << /DefaultRunData << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> /RunArray [ << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << /Justification 1 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> ] /RunLengthArray [ 3 ] /IsJoinable 1 >> /StyleRun << /DefaultRunData << /StyleSheet << /StyleSheetData << >> >> >> /RunArray [ << /StyleSheet << /StyleSheetData << /Font 0 /FontSize 41.66667 /FauxBold false /FauxItalic false /AutoLeading true /Leading 50.0 /HorizontalScale 1.0 /VerticalScale .9 /Tracking -150 /AutoKerning false /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 .74902 .74902 .74902 ] >> /FillFlag true /StrokeFlag false /FillFirst false /YUnderline 1 /OutlineWidth .57884 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> >> << /StyleSheet << /StyleSheetData << /Font 0 /FontSize 41.66667 /FauxBold false /FauxItalic false /AutoLeading true /Leading 50.0 /HorizontalScale 1.0 /VerticalScale .9 /Tracking -150 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 .74902 .74902 .74902 ] >> /FillFlag true /StrokeFlag false /FillFirst false /YUnderline 1 /OutlineWidth .57884 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> >> ] /RunLengthArray [ 1 2 ] /IsJoinable 2 >> /GridInfo << /GridIsOn false /ShowGrid false /GridSize 18.0 /GridLeading 22.0 /GridColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /GridLeadingFillColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /AlignLineHeightToGridFlags false >> /AntiAlias 3 /UseFractionalGlyphWidths true /Rendered << /Version 1 /Shapes << /WritingDirection 0 /Children [ << /ShapeType 0 /Procession 0 /Lines << /WritingDirection 0 /Children [ ] >> /Cookie << /Photoshop << /ShapeType 0 /PointBase [ 0.0 0.0 ] /Base << /ShapeType 0 /TransformPoint0 [ 1.0 0.0 ] /TransformPoint1 [ 0.0 1.0 ] /TransformPoint2 [ 0.0 0.0 ] >> >> >> >> ] >> >> >> /ResourceDict << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 1 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> ] /FontSet [ << /Name (Krungthep) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (MyriadPro-Regular) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> /DocumentResources << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 1 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> ] /FontSet [ << /Name (Krungthep) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (MyriadPro-Regular) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> >>warp warpStyleenum warpStylewarpNone warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrzn8BIMluni/*8BIMlnsrrend8BIMlyid 8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubA c6=l8BIMfxrp@^@"-$2338BIMnorm)({8BIMTySh(??@s@m 2TxLrTxt TEXT{ textGriddingenum textGriddingNoneOrntenumOrntHrznAntAenumAnntAnSm TextIndexlong EngineDatatdta& << /EngineDict << /Editor << /Text ({ ) >> /ParagraphRun << /DefaultRunData << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> /RunArray [ << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << /Justification 1 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> ] /RunLengthArray [ 2 ] /IsJoinable 1 >> /StyleRun << /DefaultRunData << /StyleSheet << /StyleSheetData << >> >> >> /RunArray [ << /StyleSheet << /StyleSheetData << /Font 0 /FontSize 200.0 /FauxBold true /FauxItalic false /AutoLeading true /Leading 150.0 /HorizontalScale 1.0 /VerticalScale 1.2 /Tracking 0 /AutoKerning false /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 .54902 .00862 .00867 ] >> /StrokeColor << /Type 1 /Values [ 1.0 .74902 .74902 .74902 ] >> /FillFlag true /StrokeFlag false /FillFirst false /YUnderline 1 /OutlineWidth .57884 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> >> << /StyleSheet << /StyleSheetData << /Font 0 /FontSize 200.0 /FauxBold true /FauxItalic false /AutoLeading true /Leading 150.0 /HorizontalScale 1.0 /VerticalScale 1.2 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 .54902 .00862 .00867 ] >> /StrokeColor << /Type 1 /Values [ 1.0 .74902 .74902 .74902 ] >> /FillFlag true /StrokeFlag false /FillFirst false /YUnderline 1 /OutlineWidth .57884 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> >> ] /RunLengthArray [ 1 1 ] /IsJoinable 2 >> /GridInfo << /GridIsOn false /ShowGrid false /GridSize 18.0 /GridLeading 22.0 /GridColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /GridLeadingFillColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /AlignLineHeightToGridFlags false >> /AntiAlias 3 /UseFractionalGlyphWidths true /Rendered << /Version 1 /Shapes << /WritingDirection 0 /Children [ << /ShapeType 0 /Procession 0 /Lines << /WritingDirection 0 /Children [ ] >> /Cookie << /Photoshop << /ShapeType 0 /PointBase [ 0.0 0.0 ] /Base << /ShapeType 0 /TransformPoint0 [ 1.0 0.0 ] /TransformPoint1 [ 0.0 1.0 ] /TransformPoint2 [ 0.0 0.0 ] >> >> >> >> ] >> >> >> /ResourceDict << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 2 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> ] /FontSet [ << /Name (OCRAStd) /Script 0 /FontType 0 /Synthetic 2 >> << /Name (OCRAStd) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (MyriadPro-Regular) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> /DocumentResources << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 2 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> ] /FontSet [ << /Name (OCRAStd) /Script 0 /FontType 0 /Synthetic 2 >> << /Name (OCRAStd) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (MyriadPro-Regular) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> >>warp warpStyleenum warpStylewarpNone warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrzn8BIMluni{8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubA c0b8BIMfxrp@o@@IM# ++8BIMnorm)(}8BIMTySh(??@z0@p2TxLrTxt TEXT} textGriddingenum textGriddingNoneOrntenumOrntHrznAntAenumAnntAnSm TextIndexlong EngineDatatdta& << /EngineDict << /Editor << /Text (} ) >> /ParagraphRun << /DefaultRunData << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> /RunArray [ << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << /Justification 1 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> ] /RunLengthArray [ 2 ] /IsJoinable 1 >> /StyleRun << /DefaultRunData << /StyleSheet << /StyleSheetData << >> >> >> /RunArray [ << /StyleSheet << /StyleSheetData << /Font 0 /FontSize 200.0 /FauxBold true /FauxItalic false /AutoLeading true /Leading 240.00002 /HorizontalScale 1.0 /VerticalScale 1.2 /Tracking 0 /AutoKerning false /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 .54902 .00862 .00867 ] >> /StrokeColor << /Type 1 /Values [ 1.0 .74902 .74902 .74902 ] >> /FillFlag true /StrokeFlag false /FillFirst false /YUnderline 1 /OutlineWidth .57884 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> >> << /StyleSheet << /StyleSheetData << /Font 0 /FontSize 200.0 /FauxBold true /FauxItalic false /AutoLeading true /Leading 240.00002 /HorizontalScale 1.0 /VerticalScale 1.2 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 .54902 .00862 .00867 ] >> /StrokeColor << /Type 1 /Values [ 1.0 .74902 .74902 .74902 ] >> /FillFlag true /StrokeFlag false /FillFirst false /YUnderline 1 /OutlineWidth .57884 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> >> ] /RunLengthArray [ 1 1 ] /IsJoinable 2 >> /GridInfo << /GridIsOn false /ShowGrid false /GridSize 18.0 /GridLeading 22.0 /GridColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /GridLeadingFillColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /AlignLineHeightToGridFlags false >> /AntiAlias 3 /UseFractionalGlyphWidths true /Rendered << /Version 1 /Shapes << /WritingDirection 0 /Children [ << /ShapeType 0 /Procession 0 /Lines << /WritingDirection 0 /Children [ ] >> /Cookie << /Photoshop << /ShapeType 0 /PointBase [ 0.0 0.0 ] /Base << /ShapeType 0 /TransformPoint0 [ 1.0 0.0 ] /TransformPoint1 [ 0.0 1.0 ] /TransformPoint2 [ 0.0 0.0 ] >> >> >> >> ] >> >> >> /ResourceDict << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 2 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> ] /FontSet [ << /Name (OCRAStd) /Script 0 /FontType 0 /Synthetic 2 >> << /Name (OCRAStd) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (MyriadPro-Regular) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> /DocumentResources << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 2 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> ] /FontSet [ << /Name (OCRAStd) /Script 0 /FontType 0 /Synthetic 2 >> << /Name (OCRAStd) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (MyriadPro-Regular) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> >>warp warpStyleenum warpStylewarpNone warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrzn8BIMluni}8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubA cԾnv8BIMfxrpS@OH́0 V@ h (!%PJ@ hRB*쀣q{[rЇl ;qp" F& a#Zn<2+\o؝x ̶^,mCFc\@XWq[Q A=: ]Ce<.T7A6D!9sRm. 2|Rvin), .ıcȸ_ UGhYrdaQZ;SpaDAtb}ю_! e?/.}Ue \rr5H2bN#B"1zNCS`3]\PQGa G܇r!RA'2C Uxap!,\&36{9΅%¹r.{?;FagַF䉏40/a>)1.hYhs15f_ep~r/+Z<<\di< ʔ0,҅0 GMuݭBthO®#"9 悽D QcU%FO މ9\ '΋|#a.p. m`XI>=/$,"V7h9=!4vϽӼ{g?ʻe'j#js1z'*sB1`^΅iR95ʹp.,9΅%¹\8 ’s\Xr. K΅saɹp.b`5H1 Om_>`<H1 Om_>`<H1 Om_>`<H̗q0ET@ *P%PBJ(\7(hбaqތo-\l "|WMkYwqL47I1+찵V`a+Tպ ةٱXJ+ B_^1ݷq8;HƃNϨu3uՈ$!^kmw0ҪդA ':&XetU}è'nhe[&Lmk;کH%j%`kTLeDErO0Gzc1F}6LltQU95FtrT꘭Eew>3ItZiA5jŦ߱%̂Se&Ϡ/SȄ.GЗuJʳ?sN Wi`\%du*;l<ZB;mEA)kغqcgefn)N-KU: :iH1 Om ?xH1 Om ?xH1 Om ?xHėQ0EUH@!P +a$J@BH,;IG&iچ|: oDwqޠ.3=wy3'CNjXW64z2 VW8wP(X`eK|W/at)SCzB& hQ:ge \! хeoRfq$WHM'@zīF;~#$E2fDSr: }f/^Pr;..^kdͨ]bЉAtb:؃NA'{Љ=tb:؃NA'{Љ=tb:؃NA'{Љ=tb:؃NA'{Љ=tb:؃NA'{Љ='/x,~A(WJ -]Sg@?-:I^{PZtϫqЌ&$4JQt( '6R4N#]çW{(7@)*']q "E&x!mC*B-~Ӈ:/C*ڎ(yJSu%Oo\?tvng4.<PEi^mZ/_͈H10TYz&0p2 HOP=A5 j 'HOP3f =A@z5 j 'HOP3f =A@z5 j 'HOP3f =A@z5 j 'HOP3f =A@z5 j 'HOP3f =A@z5 j 'HOP3f =A@z5 j 'HOP3f =A@z5 j 'HOP3f =A@z5 j 'HOP3f =A@z5 j 'HOP3f =A@z5 j 'HOP3f =A@z5 j 'HOP3f =A@z5 j 'HOP3f =A@z5 j 'HOP3f =A@z5 j 'HOP3f =A@z5 j 'HOP3f =A@z5 j 'HOP3f =A@z5 j 'HOP3f =A@z5 j 'HOP3f =A@z5 j 'HOP3f =A@z5 j 'HOP3f =A@z5 j 'HOP3f =A@z5 j 'HOP3f =A@z5 jNWvF)!!Ji^g.wP'@7`y_xW,܉fz iD(͠s4W"7J3 gb$"%6O೰S eC*88 ^#x qK'퀇^+,3rCa8N)W > %> X`eك7MTGxJ tb:؃NA'{Љ=tb:؃NA'{Љ=tb:؃NA'{Љ=tb:؃NA'{Љ=tb:؃NA'{Љ=tb: |^ sҐr8Io=~& )ͧipvrJ"O9<& )m'\($mt2Ń: N:1؃NA'{Љ=tb:؃NA'{Љ=tb:؃NA'{Љ=tb:؃NA'{Љ=tb:؃NA'{Љ=tb:s2ߛ͟EQ yj 2;i3˚wjwS\Ɖ)q26xख़&Ks'C g,\+1+IW6SY'DXČ/xHDiN">lL!}r%IxSW6]Vf $Mp'5nMO~`u:(IK3ЋNJTD5#1-@Q@KĹQgԫjUzKwV{ Noo$DA4R5Ƀyj^\&4,,4v{WU?OH :F@Oe\' @7daryɟƎcKkկZ}#?Z|'Yz"'Yz" 9b@r*HUɑ0#Sa$GHH$($A$ & Pp$%2( EL(JdBQ2@d& %$a(! C IJHPb؄&E'&%7(O2lQ6L(&}M^=ǤcF1i옴Q4Yixshgyx&Jdm6AlM6P&(} `\*$WA&h \V! 4Mާ J&(MP4Ai J&(MP4Ai J&(MP4Ai J&(MP4Ai J&(MP4Ai J&(MP4Ai J&(MP4Ai J&(MP1)PfM Ye֤@R 0E)LfQ YdE?5ULFU*QdT6DMQjAC(Ո jDe5"se>(ue>(ue>(ue>(@d&P%3* BIMJjPRQ`C~&E؄&%6A9(oQP$EA&) 2IQɭQILBf;vwO4ILBLbbAc v&܎KBIjHRD d&L$4a"  Mȹ 3eg&tLW$c g$c g$c g$S lj Im2HR &$$Ii2IRL&$(Ie2JRT&$4A=d0%)LfI }OM4Ai J&(MP4Ai J&(MP4Ai J&(MP4Ai J&(MP4Ai J&(MP4Ai J&(MP4Ai J&(MP4Ai䏊={~3)*fRU$a&3 EI(BLbbX"eA7 lM6H&;$mId#& ʣ u+c.MXcuG=ƤMc&1i옴I4y>ɆIdäOa'x MInHr@($FA$ # MIhHBF@d&$3$ %P(IBI"Lp($@ HIBMl``*+"*+j J j J[HQVQ-,{sgoYX`}H7b7ϖ. @xHzk߇?qLp\uLf$*$HUr< &'D(q$H82Wʄ8(qL$hq(qMJM~48&&t0=ar&v,8>cr&&8bv;&_s//Vv܎u ,3(OO792 (īL3*Ϊ -晼-h-jYVT, *h4j e5AͲfYMPA&YVT, *h4j e5AͲfYMPA&YVT, *h4j e5AͲfYMPA&YVT, *h4j e5AͲfYMPA&YVT, *h4j e5AͲfYMPA&YVT, *h4j e5AͲ-& ,UeQfYPA&Y&7D U Ϣ&Sx2n(Q/&PG&'_?(>"u렔3wXy(qhMr3)@ q(qMPt&neEagQHx?(5ƣ$Lp7WMK3Ɏ~LPqM~dIIƑ=䲻$d5ag8"҄)&G,5W&ѯZ Ǿ~& $Kۑ,jWL>IRw܏dlaQj ehrC^cY֯.T, *h4j e5AͲfYMPA&YVT, *h4j e5AͲfYMPA&YVT, *h4j e5AͲfYMPA&YVT, *h4j e5AͲfYMPA&YVT, *h4j e5AͲfYMPA&YVT, *h4j e5AͲ,d♿H&q(EgZ&09A2$;nO69C2$;ϐl1Es>&5a"ejrxQ$?&v,3&OO& ;n2 &Ij.gL#&P2D3H@i #q&I =R&D$Q(D`2Dcr&&8bv;&_s//Vv܎u ,3(OO792 (īL3*Ϊ -晼-h-jYVT, *h4j e5AͲfYMPA&YVT, *h4j e5AͲfYMPA&YVT, *h4j e5AͲfYMPA&YVT, *h4j e5AͲfYMPA&YVT, *h4j e5AͲfYMPA&YVT, *h4j e5AͲ-& ,UeQfYPA&Y&7D U Ϣ&Sx2n(Q/&PG&'_?(>"u렔3wXy(qhMr3)@ q(qMPt&neEagQHx?(5ƣ$Lp7WMK3Ɏ~LPqM~dIIƑ=䲻$d5ag8"҄)&G,5W&ѯZ Ǿ~& $Kۑ,jWL>IRw܏dlaQj ehrC^cY֯.T, *h4j e5AͲfYMPA&YVT, *h4j e5AͲfYMPA&YVT, *h4j e5AͲfYMPA&YVT, *h4j e5AͲfYMPA&YVT, *h4j e5AͲfYMPA&YVT, *h4j e5AͲ,d♿H&q(EgZ&09A2$;nO69C2$;ϐl1Es>&5a"ejrxQ$?&v,3&OO& ;n2 &Ij.gL#&P2D3H@i #q&I =R&D$Q(D`2D> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (OCRAStd) /Type 0 /Synthetic 2 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (OCRAStd) /Type 0 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (MyriadPro-Regular) /Type 0 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (AdobeInvisFont) /Type 0 >> >> >> ] >> /MojiKumiCodeToClassSet << /Resources [ << /Resource << /Name () /Members << /ClassMappings [ << /R (55) /C 1 >> << /R (77) /C 1 >> << /R (99) /C 1 >> << /R (;;) /C 1 >> << /R (==) /C 1 >> << /R (??) /C 1 >> << /R (AA) /C 1 >> << /R (CC) /C 1 >> << /R () /C 1 >> << /R (;;) /C 1 >> << /R ([[) /C 1 >> << /R (  ) /C 1 >> << /R (00) /C 1 >> << /R (0 0 ) /C 1 >> << /R (0 0 ) /C 1 >> << /R (00) /C 1 >> << /R (00) /C 1 >> << /R (00) /C 1 >> << /R (66) /C 2 >> << /R (88) /C 2 >> << /R (::) /C 2 >> << /R (<<) /C 2 >> << /R (>>) /C 2 >> << /R (@@) /C 2 >> << /R (BB) /C 2 >> << /R (DD) /C 2 >> << /R ( ) /C 2 >> << /R (==) /C 2 >> << /R (]]) /C 2 >> << /R (  ) /C 2 >> << /R (0 0 ) /C 2 >> << /R (0 0 ) /C 2 >> << /R (0 0 ) /C 2 >> << /R (00) /C 2 >> << /R (00) /C 2 >> << /R (00) /C 2 >> << /R () /C 3 >> << /R (^^) /C 3 >> << /R (0A0A) /C 3 >> << /R (0C0C) /C 3 >> << /R (0E0E) /C 3 >> << /R (0G0G) /C 3 >> << /R (0I0I) /C 3 >> << /R (0c0c) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R () /C 4 >> << /R () /C 4 >> << /R () /C 5 >> << /R (00) /C 5 >> << /R (  ) /C 5 >> << /R () /C 6 >> << /R (00) /C 6 >> << /R ( ) /C 7 >> << /R (00) /C 7 >> << /R (  ) /C 8 >> << /R ( % &) /C 8 >> << /R () /C 9 >> << /R () /C 9 >> << /R () /C 9 >> << /R () /C 10 >> << /R () /C 10 >> << /R () /C 10 >> << /R ( 0 0) /C 10 >> << /R ( 2 4) /C 10 >> << /R (00) /C 11 >> << /R (0B0B) /C 12 >> << /R (0D0D) /C 12 >> << /R (0F0F) /C 12 >> << /R (0H0H) /C 12 >> << /R (0J0b) /C 12 >> << /R (0d0) /C 12 >> << /R (00) /C 12 >> << /R (00) /C 12 >> << /R (00) /C 12 >> << /R () /C 13 >> << /R (00) /C 14 >> << /R (00) /C 14 >> << /R (00) /C 14 >> << /R (00) /C 14 >> << /R (00) /C 14 >> << /R (00) /C 14 >> << /R (00) /C 14 >> << /R (00) /C 14 >> << /R (00) /C 14 >> << /R (2 2C) /C 14 >> << /R (22) /C 14 >> << /R (22) /C 14 >> << /R (33W) /C 14 >> << /R (3q3v) /C 14 >> << /R (33) /C 14 >> << /R (N) /C 14 >> << /R (09) /C 15 >> << /R (!~) /C 16 >> << /R () /C 16 >> << /R (  ) /C 16 >> << /R (  ) /C 16 >> ] >> >> >> ] /DisplayList [ << /Resource 0 >> ] >> /MojiKumiTableSet << /Resources [ << /Resource << /Name (Photoshop6MojiKumiSet4) /Members << /CodeToClass 0 /AutoTsume << /TsumeMappings [ << /Before -.5 /Code () >> << /Before -.5 /Code (;) >> << /Before -.5 /Code ([) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (=) >> << /After -.5 /Code (]) >> << /After -.5 /Code ( ) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code () >> << /After -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0) >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code (0) >> << /Before -.25 /After -.25 /Code ( ) >> ] >> /Table << /DataArray << /SparseArray [ << /Index 1 /Elements [ << /P [ 1 5 ] /Data << /A << /R [ .25 .25 .25 ] /P 1 >> >> >> ] >> << /Index 2 /Elements [ << /P [ 2 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 2 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 2 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 2 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 11 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 17 ] /Data << /B << /R [ .5 .5 .5 ] >> >> >> ] >> << /Index 3 /Elements [ << /P [ 3 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 3 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 3 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 3 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 3 16 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 4 /Elements [ << /P [ 4 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 4 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 4 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 4 15 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 4 16 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> ] >> << /Index 5 /Elements [ << /P [ 5 1 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 2 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 3 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 4 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 5 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 1 >> >> >> << /P [ 5 6 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 7 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 8 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 9 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 10 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 11 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 12 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 13 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 14 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 15 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 16 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 17 ] /Data << /B << /R [ .25 .25 .25 ] >> >> >> ] >> << /Index 6 /Elements [ << /P [ 6 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 6 3 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 4 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 5 ] /Data << /B << /R [ 0.0 .75 .75 ] /P 1 >> >> >> << /P [ 6 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 6 8 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 9 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 10 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 11 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 12 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 13 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 14 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 17 ] /Data << /B << /R [ .5 .5 .5 ] >> >> >> ] >> << /Index 7 /Elements [ << /P [ 7 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 7 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 7 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 17 ] /Data << /B << /R [ .5 .5 .5 ] >> >> >> ] >> << /Index 8 /Elements [ << /P [ 8 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 8 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 8 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 8 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 8 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 9 /Elements [ << /P [ 9 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 9 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 9 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 9 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 9 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 10 /Elements [ << /P [ 10 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 10 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 10 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 10 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 10 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 11 /Elements [ << /P [ 11 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 11 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 11 15 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> << /P [ 11 16 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> ] >> << /Index 12 /Elements [ << /P [ 12 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 12 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 12 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 12 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 12 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 13 /Elements [ << /P [ 13 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 13 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 13 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 13 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 13 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 14 /Elements [ << /P [ 14 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 14 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 14 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 14 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 14 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 15 /Elements [ << /P [ 15 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 15 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 15 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 15 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 15 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 15 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 16 /Elements [ << /P [ 16 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 16 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 16 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 16 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 16 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 16 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 17 /Elements [ << /P [ 17 1 ] /Data << /A << /R [ .5 .5 .5 ] >> >> >> ] >> << /Index 18 /Elements [ << /P [ 18 1 ] /Data << /A << /R [ .5 .5 .5 ] >> >> >> ] >> ] >> >> /PredefinedTag 2 >> >> >> << /Resource << /Name (Photoshop6MojiKumiSet3) /Members << /CodeToClass 0 /AutoTsume << /TsumeMappings [ << /Before -.5 /Code () >> << /Before -.5 /Code (;) >> << /Before -.5 /Code ([) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (=) >> << /After -.5 /Code (]) >> << /After -.5 /Code ( ) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code () >> << /After -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0) >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code (0) >> << /Before -.25 /After -.25 /Code ( ) >> ] >> /Table << /DataArray << /SparseArray [ << /Index 1 /Elements [ << /P [ 1 5 ] /Data << /A << /R [ .25 .25 .25 ] /P 1 >> >> >> ] >> << /Index 2 /Elements [ << /P [ 2 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 2 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 2 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 2 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 11 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 17 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> ] >> << /Index 3 /Elements [ << /P [ 3 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 3 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 3 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 3 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 3 16 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 4 /Elements [ << /P [ 4 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 4 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 4 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 4 15 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 4 16 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> ] >> << /Index 5 /Elements [ << /P [ 5 1 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 2 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 3 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 4 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 5 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 1 >> >> >> << /P [ 5 6 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 7 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 8 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 9 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 10 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 11 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 12 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 13 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 14 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 15 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 16 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> ] >> << /Index 6 /Elements [ << /P [ 6 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 6 3 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 4 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 5 ] /Data << /B << /R [ 0.0 .75 .75 ] /P 1 >> >> >> << /P [ 6 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 6 8 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 9 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 10 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 11 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 12 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 13 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 14 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 17 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> ] >> << /Index 7 /Elements [ << /P [ 7 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 7 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 7 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 17 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> ] >> << /Index 8 /Elements [ << /P [ 8 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 8 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 8 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 8 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 8 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 9 /Elements [ << /P [ 9 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 9 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 9 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 9 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 9 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 10 /Elements [ << /P [ 10 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 10 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 10 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 10 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 10 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 11 /Elements [ << /P [ 11 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 11 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 11 15 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> << /P [ 11 16 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> ] >> << /Index 12 /Elements [ << /P [ 12 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 12 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 12 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 12 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 12 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 13 /Elements [ << /P [ 13 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 13 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 13 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 13 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 13 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 14 /Elements [ << /P [ 14 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 14 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 14 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 14 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 14 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 15 /Elements [ << /P [ 15 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 15 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 15 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 15 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 15 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 15 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 16 /Elements [ << /P [ 16 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 16 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 16 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 16 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 16 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 16 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> ] >> >> /PredefinedTag 4 >> >> >> << /Resource << /Name (Photoshop6MojiKumiSet2) /Members << /CodeToClass 0 /AutoTsume << /TsumeMappings [ << /Before -.5 /Code () >> << /Before -.5 /Code (;) >> << /Before -.5 /Code ([) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (=) >> << /After -.5 /Code (]) >> << /After -.5 /Code ( ) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code () >> << /After -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0) >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code (0) >> << /Before -.25 /After -.25 /Code ( ) >> ] >> /Table << /DataArray << /SparseArray [ << /Index 1 /Elements [ << /P [ 1 5 ] /Data << /A << /R [ .25 .25 .25 ] /P 1 >> >> >> ] >> << /Index 2 /Elements [ << /P [ 2 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 2 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 2 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 2 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 11 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> ] >> << /Index 3 /Elements [ << /P [ 3 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 3 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 3 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 3 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 3 16 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 4 /Elements [ << /P [ 4 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 4 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 4 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 4 15 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 4 16 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> ] >> << /Index 5 /Elements [ << /P [ 5 1 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 2 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 3 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 4 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 5 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 1 >> >> >> << /P [ 5 6 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 7 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 8 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 9 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 10 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 11 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 12 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 13 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 14 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 15 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 16 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> ] >> << /Index 6 /Elements [ << /P [ 6 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 6 3 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 4 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 5 ] /Data << /B << /R [ 0.0 .75 .75 ] /P 1 >> >> >> << /P [ 6 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 6 8 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 9 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 10 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 11 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 12 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 13 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 14 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> ] >> << /Index 7 /Elements [ << /P [ 7 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 7 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 7 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> ] >> << /Index 8 /Elements [ << /P [ 8 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 8 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 8 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 8 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 8 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 9 /Elements [ << /P [ 9 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 9 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 9 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 9 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 9 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 10 /Elements [ << /P [ 10 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 10 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 10 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 10 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 10 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 11 /Elements [ << /P [ 11 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 11 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 11 15 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> << /P [ 11 16 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> ] >> << /Index 12 /Elements [ << /P [ 12 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 12 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 12 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 12 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 12 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 13 /Elements [ << /P [ 13 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 13 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 13 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 13 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 13 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 14 /Elements [ << /P [ 14 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 14 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 14 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 14 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 14 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 15 /Elements [ << /P [ 15 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 15 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 15 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 15 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 15 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 15 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 16 /Elements [ << /P [ 16 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 16 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 16 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 16 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 16 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 16 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> ] >> >> /PredefinedTag 3 >> >> >> << /Resource << /Name (Photoshop6MojiKumiSet1) /Members << /CodeToClass 0 /AutoTsume << /TsumeMappings [ << /Before -.5 /Code () >> << /Before -.5 /Code (;) >> << /Before -.5 /Code ([) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (=) >> << /After -.5 /Code (]) >> << /After -.5 /Code ( ) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code () >> << /After -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0) >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code (0) >> << /Before -.25 /After -.25 /Code ( ) >> ] >> /Table << /DataArray << /SparseArray [ << /Index 1 /Elements [ << /P [ 1 5 ] /Data << /A << /R [ .25 .25 .25 ] /P 1 >> >> >> ] >> << /Index 2 /Elements [ << /P [ 2 1 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 2 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 3 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 4 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 2 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 2 8 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 9 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 10 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 11 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 12 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 13 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 14 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> ] >> << /Index 3 /Elements [ << /P [ 3 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 3 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 3 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 3 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 3 16 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 4 /Elements [ << /P [ 4 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 4 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 4 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 4 15 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 4 16 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> ] >> << /Index 5 /Elements [ << /P [ 5 1 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 2 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 3 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 4 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 5 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 1 >> >> >> << /P [ 5 6 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 7 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 8 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 9 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 10 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 11 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 12 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 13 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 14 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 15 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 16 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> ] >> << /Index 6 /Elements [ << /P [ 6 1 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 6 3 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 4 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 6 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 6 8 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 9 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 10 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 11 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 12 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 13 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 14 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 6 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 7 /Elements [ << /P [ 7 1 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 3 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 4 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 7 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 7 8 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 9 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 10 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 12 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 13 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 14 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> ] >> << /Index 8 /Elements [ << /P [ 8 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 8 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 8 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 8 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 8 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 9 /Elements [ << /P [ 9 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 9 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 9 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 9 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 9 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 10 /Elements [ << /P [ 10 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 10 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 10 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 10 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 10 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 11 /Elements [ << /P [ 11 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 11 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 11 15 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> << /P [ 11 16 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> ] >> << /Index 12 /Elements [ << /P [ 12 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 12 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 12 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 12 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 12 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 13 /Elements [ << /P [ 13 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 13 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 13 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 13 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 13 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 14 /Elements [ << /P [ 14 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 14 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 14 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 14 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 14 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 15 /Elements [ << /P [ 15 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 15 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 15 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 15 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 15 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 15 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 16 /Elements [ << /P [ 16 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 16 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 16 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 16 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 16 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 16 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> ] >> >> /PredefinedTag 1 >> >> >> << /Resource << /Name (YakumonoHankaku) /Members << /CodeToClass 0 /AutoTsume << /TsumeMappings [ << /Before -.5 /Code () >> << /Before -.5 /Code (;) >> << /Before -.5 /Code ([) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (=) >> << /After -.5 /Code (]) >> << /After -.5 /Code ( ) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code () >> << /After -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0) >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code (0) >> << /Before -.25 /After -.25 /Code ( ) >> ] >> /Table << /DataArray << /SparseArray [ << /Index 1 /Elements [ << /P [ 1 5 ] /Data << /A << /R [ .25 .25 .25 ] /P 1 >> >> >> ] >> << /Index 2 /Elements [ << /P [ 2 1 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 2 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 3 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 4 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 2 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 2 8 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 9 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 10 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 11 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 12 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 13 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 14 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> ] >> << /Index 3 /Elements [ << /P [ 3 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 3 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 3 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 3 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 3 16 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 4 /Elements [ << /P [ 4 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 4 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 4 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 4 15 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 4 16 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> ] >> << /Index 5 /Elements [ << /P [ 5 1 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 2 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 3 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 4 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 5 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 1 >> >> >> << /P [ 5 6 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 7 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 8 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 9 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 10 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 11 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 12 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 13 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 14 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 15 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 16 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> ] >> << /Index 6 /Elements [ << /P [ 6 1 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 6 3 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 4 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 6 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 6 8 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 9 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 10 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 11 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 12 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 13 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 14 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 6 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 7 /Elements [ << /P [ 7 1 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 3 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 4 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 7 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 7 8 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 9 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 10 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 12 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 13 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 14 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> ] >> << /Index 8 /Elements [ << /P [ 8 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 8 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 8 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 8 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 8 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 9 /Elements [ << /P [ 9 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 9 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 9 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 9 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 9 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 10 /Elements [ << /P [ 10 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 10 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 10 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 10 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 10 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 11 /Elements [ << /P [ 11 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 11 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 11 15 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> << /P [ 11 16 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> ] >> << /Index 12 /Elements [ << /P [ 12 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 12 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 12 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 12 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 12 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 13 /Elements [ << /P [ 13 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 13 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 13 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 13 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 13 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 14 /Elements [ << /P [ 14 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 14 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 14 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 14 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 14 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 15 /Elements [ << /P [ 15 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 15 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 15 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 15 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 15 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 15 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 16 /Elements [ << /P [ 16 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 16 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 16 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 16 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 16 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 16 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> ] >> >> /PredefinedTag 1 >> >> >> << /Resource << /Name (GyomatsuYakumonoHankaku) /Members << /CodeToClass 0 /AutoTsume << /TsumeMappings [ << /Before -.5 /Code () >> << /Before -.5 /Code (;) >> << /Before -.5 /Code ([) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (=) >> << /After -.5 /Code (]) >> << /After -.5 /Code ( ) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code () >> << /After -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0) >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code (0) >> << /Before -.25 /After -.25 /Code ( ) >> ] >> /Table << /DataArray << /SparseArray [ << /Index 1 /Elements [ << /P [ 1 5 ] /Data << /A << /R [ .25 .25 .25 ] /P 1 >> >> >> ] >> << /Index 2 /Elements [ << /P [ 2 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 2 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 2 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 2 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 11 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> ] >> << /Index 3 /Elements [ << /P [ 3 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 3 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 3 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 3 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 3 16 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 4 /Elements [ << /P [ 4 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 4 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 4 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 4 15 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 4 16 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> ] >> << /Index 5 /Elements [ << /P [ 5 1 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 2 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 3 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 4 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 5 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 1 >> >> >> << /P [ 5 6 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 7 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 8 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 9 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 10 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 11 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 12 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 13 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 14 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 15 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 16 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> ] >> << /Index 6 /Elements [ << /P [ 6 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 6 3 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 4 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 5 ] /Data << /B << /R [ 0.0 .75 .75 ] /P 1 >> >> >> << /P [ 6 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 6 8 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 9 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 10 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 11 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 12 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 13 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 14 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> ] >> << /Index 7 /Elements [ << /P [ 7 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 7 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 7 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> ] >> << /Index 8 /Elements [ << /P [ 8 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 8 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 8 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 8 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 8 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 9 /Elements [ << /P [ 9 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 9 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 9 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 9 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 9 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 10 /Elements [ << /P [ 10 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 10 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 10 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 10 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 10 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 11 /Elements [ << /P [ 11 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 11 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 11 15 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> << /P [ 11 16 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> ] >> << /Index 12 /Elements [ << /P [ 12 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 12 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 12 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 12 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 12 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 13 /Elements [ << /P [ 13 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 13 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 13 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 13 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 13 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 14 /Elements [ << /P [ 14 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 14 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 14 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 14 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 14 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 15 /Elements [ << /P [ 15 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 15 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 15 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 15 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 15 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 15 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 16 /Elements [ << /P [ 16 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 16 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 16 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 16 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 16 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 16 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> ] >> >> /PredefinedTag 3 >> >> >> << /Resource << /Name (GyomatsuYakumonoZenkaku) /Members << /CodeToClass 0 /AutoTsume << /TsumeMappings [ << /Before -.5 /Code () >> << /Before -.5 /Code (;) >> << /Before -.5 /Code ([) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (=) >> << /After -.5 /Code (]) >> << /After -.5 /Code ( ) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code () >> << /After -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0) >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code (0) >> << /Before -.25 /After -.25 /Code ( ) >> ] >> /Table << /DataArray << /SparseArray [ << /Index 1 /Elements [ << /P [ 1 5 ] /Data << /A << /R [ .25 .25 .25 ] /P 1 >> >> >> ] >> << /Index 2 /Elements [ << /P [ 2 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 2 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 2 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 2 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 11 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 17 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> ] >> << /Index 3 /Elements [ << /P [ 3 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 3 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 3 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 3 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 3 16 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 4 /Elements [ << /P [ 4 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 4 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 4 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 4 15 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 4 16 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> ] >> << /Index 5 /Elements [ << /P [ 5 1 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 2 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 3 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 4 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 5 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 1 >> >> >> << /P [ 5 6 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 7 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 8 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 9 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 10 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 11 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 12 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 13 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 14 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 15 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 16 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> ] >> << /Index 6 /Elements [ << /P [ 6 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 6 3 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 4 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 5 ] /Data << /B << /R [ 0.0 .75 .75 ] /P 1 >> >> >> << /P [ 6 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 6 8 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 9 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 10 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 11 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 12 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 13 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 14 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 17 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> ] >> << /Index 7 /Elements [ << /P [ 7 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 7 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 7 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 17 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> ] >> << /Index 8 /Elements [ << /P [ 8 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 8 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 8 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 8 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 8 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 9 /Elements [ << /P [ 9 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 9 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 9 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 9 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 9 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 10 /Elements [ << /P [ 10 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 10 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 10 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 10 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 10 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 11 /Elements [ << /P [ 11 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 11 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 11 15 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> << /P [ 11 16 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> ] >> << /Index 12 /Elements [ << /P [ 12 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 12 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 12 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 12 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 12 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 13 /Elements [ << /P [ 13 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 13 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 13 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 13 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 13 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 14 /Elements [ << /P [ 14 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 14 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 14 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 14 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 14 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 15 /Elements [ << /P [ 15 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 15 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 15 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 15 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 15 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 15 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 16 /Elements [ << /P [ 16 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 16 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 16 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 16 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 16 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 16 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> ] >> >> /PredefinedTag 4 >> >> >> << /Resource << /Name (YakumonoZenkaku) /Members << /CodeToClass 0 /AutoTsume << /TsumeMappings [ << /Before -.5 /Code () >> << /Before -.5 /Code (;) >> << /Before -.5 /Code ([) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (=) >> << /After -.5 /Code (]) >> << /After -.5 /Code ( ) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code () >> << /After -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0) >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code (0) >> << /Before -.25 /After -.25 /Code ( ) >> ] >> /Table << /DataArray << /SparseArray [ << /Index 1 /Elements [ << /P [ 1 5 ] /Data << /A << /R [ .25 .25 .25 ] /P 1 >> >> >> ] >> << /Index 2 /Elements [ << /P [ 2 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 2 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 2 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 2 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 11 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 17 ] /Data << /B << /R [ .5 .5 .5 ] >> >> >> ] >> << /Index 3 /Elements [ << /P [ 3 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 3 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 3 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 3 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 3 16 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 4 /Elements [ << /P [ 4 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 4 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 4 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 4 15 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 4 16 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> ] >> << /Index 5 /Elements [ << /P [ 5 1 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 2 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 3 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 4 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 5 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 1 >> >> >> << /P [ 5 6 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 7 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 8 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 9 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 10 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 11 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 12 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 13 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 14 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 15 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 16 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 17 ] /Data << /B << /R [ .25 .25 .25 ] >> >> >> ] >> << /Index 6 /Elements [ << /P [ 6 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 6 3 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 4 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 5 ] /Data << /B << /R [ 0.0 .75 .75 ] /P 1 >> >> >> << /P [ 6 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 6 8 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 9 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 10 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 11 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 12 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 13 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 14 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 17 ] /Data << /B << /R [ .5 .5 .5 ] >> >> >> ] >> << /Index 7 /Elements [ << /P [ 7 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 7 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 7 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 17 ] /Data << /B << /R [ .5 .5 .5 ] >> >> >> ] >> << /Index 8 /Elements [ << /P [ 8 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 8 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 8 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 8 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 8 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 9 /Elements [ << /P [ 9 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 9 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 9 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 9 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 9 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 10 /Elements [ << /P [ 10 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 10 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 10 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 10 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 10 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 11 /Elements [ << /P [ 11 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 11 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 11 15 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> << /P [ 11 16 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> ] >> << /Index 12 /Elements [ << /P [ 12 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 12 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 12 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 12 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 12 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 13 /Elements [ << /P [ 13 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 13 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 13 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 13 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 13 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 14 /Elements [ << /P [ 14 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 14 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 14 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 14 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 14 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 15 /Elements [ << /P [ 15 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 15 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 15 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 15 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 15 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 15 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 16 /Elements [ << /P [ 16 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 16 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 16 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 16 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 16 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 16 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 17 /Elements [ << /P [ 17 1 ] /Data << /A << /R [ .5 .5 .5 ] >> >> >> ] >> << /Index 18 /Elements [ << /P [ 18 1 ] /Data << /A << /R [ .5 .5 .5 ] >> >> >> ] >> ] >> >> /PredefinedTag 2 >> >> >> ] /DisplayList [ << /Resource 0 >> << /Resource 1 >> << /Resource 2 >> << /Resource 3 >> << /Resource 4 >> << /Resource 5 >> << /Resource 6 >> << /Resource 7 >> ] >> /KinsokuSet << /Resources [ << /Resource << /Name (None) /Data << /NoStart () /NoEnd () /Keep () /Hanging () /PredefinedTag 0 >> >> >> << /Resource << /Name (PhotoshopKinsokuHard) /Data << /NoStart (!\),.:;?]}    0!! 0000 0 0 0000A0C0E0G0I0c000000000000000000000000 =]) /NoEnd (\([{  00 0 0000 ;[) /Keep (  % &) /Hanging (00 ) /PredefinedTag 1 >> >> >> << /Resource << /Name (PhotoshopKinsokuSoft) /Data << /NoStart (  0000 0 0 00000000 =]) /NoEnd (  00 0 000;[) /Keep (  % &) /Hanging (00 ) /PredefinedTag 2 >> >> >> << /Resource << /Name (Hard) /Data << /NoStart (!\),.:;?]}    0!! 0000 0 0 0000A0C0E0G0I0c000000000000000000000000 =]) /NoEnd (\([{  00 0 0000 ;[) /Keep (  % &) /Hanging (00 ) /PredefinedTag 1 >> >> >> << /Resource << /Name (Soft) /Data << /NoStart (  0000 0 0 00000000 =]) /NoEnd (  00 0 000;[) /Keep (  % &) /Hanging (00 ) /PredefinedTag 2 >> >> >> ] /DisplayList [ << /Resource 0 >> << /Resource 1 >> << /Resource 2 >> << /Resource 3 >> << /Resource 4 >> ] >> /StyleSheetSet << /Resources [ << /Resource << /Name (Normal RGB) /Features << /Font 3 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true >> >> >> ] /DisplayList [ << /Resource 0 >> ] >> /ParagraphSheetSet << /Resources [ << /Resource << /Name (Normal RGB) /Features << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 0 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 0 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /Kinsoku /nil /KurikaeshiMojiShori false /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << >> /ParagraphDirection 0 /JustificationMethod 0 /ComposerEngine 0 >> >> >> ] /DisplayList [ << /Resource 0 >> ] >> /TextFrameSet << /Resources [ << /Resource << /Bezier << /Points [ 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ] >> /Data << /Type 0 /LineOrientation 0 /TextOnPathTRange [ -1.0 -1.0 ] /RowGutter 0.0 /ColumnGutter 0.0 /FirstBaselineAlignment << /Flag 1 /Min 0.0 >> /PathData << /Spacing -1 >> >> >> >> << /Resource << /Bezier << /Points [ 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ] >> /Data << /Type 0 /LineOrientation 0 /TextOnPathTRange [ -1.0 -1.0 ] /RowGutter 0.0 /ColumnGutter 0.0 /FirstBaselineAlignment << /Flag 1 /Min 0.0 >> /PathData << /Spacing -1 >> >> >> >> << /Resource << /Bezier << /Points [ 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ] >> /Data << /Type 0 /LineOrientation 0 /TextOnPathTRange [ -1.0 -1.0 ] /RowGutter 0.0 /ColumnGutter 0.0 /FirstBaselineAlignment << /Flag 1 /Min 0.0 >> /PathData << /Spacing -1 >> >> >> >> << /Resource << /Bezier << /Points [ 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ] >> /Data << /Type 0 /LineOrientation 0 /TextOnPathTRange [ -1.0 -1.0 ] /RowGutter 0.0 /ColumnGutter 0.0 /FirstBaselineAlignment << /Flag 1 /Min 0.0 >> /PathData << /Spacing -1 >> >> >> >> << /Resource << /Bezier << /Points [ 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ] >> /Data << /Type 0 /LineOrientation 0 /TextOnPathTRange [ -1.0 -1.0 ] /RowGutter 0.0 /ColumnGutter 0.0 /FirstBaselineAlignment << /Flag 1 /Min 0.0 >> /PathData << /Spacing -1 >> >> >> >> ] >> >> /DocumentObjects << /DocumentSettings << /HiddenGlyphFont << /AlternateGlyphFont 4 /WhitespaceCharacterMapping [ << /WhitespaceCharacter ( ) /AlternateCharacter (1) >> << /WhitespaceCharacter ( ) /AlternateCharacter (6) >> << /WhitespaceCharacter ( ) /AlternateCharacter (0) >> << /WhitespaceCharacter ( \)) /AlternateCharacter (5) >> << /WhitespaceCharacter () /AlternateCharacter (5) >> << /WhitespaceCharacter (0) /AlternateCharacter (1) >> << /WhitespaceCharacter () /AlternateCharacter (3) >> ] >> /NormalStyleSheet 0 /NormalParagraphSheet 0 /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 /UseSmartQuotes true /SmartQuoteSets [ << /Language 0 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 1 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 2 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 3 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 4 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 5 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 6 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( 9) /CloseSingleQuote ( :) >> << /Language 7 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 8 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 9 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 10 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 11 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 12 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 13 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 14 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 15 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 16 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 17 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 18 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 19 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 20 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 21 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 22 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 23 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 24 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 25 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( 9) /CloseSingleQuote ( :) >> << /Language 26 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 27 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 28 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 29 /OpenDoubleQuote (0) /CloseDoubleQuote (0) >> << /Language 30 /OpenDoubleQuote (0 ) /CloseDoubleQuote (0 ) >> << /Language 31 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 32 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 33 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 34 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 35 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 36 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 37 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 38 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 39 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote (<) /CloseSingleQuote (>) >> << /Language 40 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 41 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote (<) /CloseSingleQuote (>) >> << /Language 42 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 43 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 44 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( 9) /CloseSingleQuote ( :) >> << /Language 45 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> ] >> /TextObjects [ << /Model << /Text (} ) /ParagraphRun << /RunArray [ << /RunData << /ParagraphSheet << /Name () /Features << /Justification 1 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 1 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /Kinsoku /nil /KurikaeshiMojiShori false /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << /Font 0 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true >> /ParagraphDirection 0 /JustificationMethod 0 /ComposerEngine 0 >> /Parent 0 >> >> /Length 2 >> ] >> /StyleRun << /RunArray [ << /RunData << /StyleSheet << /Name () /Parent 0 /Features << /Font 2 /FontSize 200.0 /FauxBold true /FauxItalic false /AutoLeading true /Leading 240.00002 /HorizontalScale 1.0 /VerticalScale 1.2 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 0 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 .54902 .00862 .00867 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 .74902 .74902 .74902 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst false /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth .57884 /MiterLimit 2.31535 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true >> >> >> /Length 2 >> ] >> /KernRun << /RunArray [ << /RunData << >> /Length 2 >> ] >> /AlternateGlyphRun << /RunArray [ << /RunData << >> /Length 2 >> ] >> /FirstKern 0 >> /View << /Frames [ << /Resource 2 >> ] /RenderedData << /RunArray [ << /RunData << /LineCount 1 >> /Length 2 >> ] >> /Strikes [ << /StreamTag /PathSelectGroupCharacter /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 0 /Children [ << /StreamTag /FrameStrike /Frame 2 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /LineStrike /Baseline 0.0 /Leading 240.00002 /EMHeight 200.0 /DHeight 150.09766 /SelectionAscent -200.88136 /SelectionDescent 57.35962 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -200.88136 0.0 57.35962 ] /ChildProcession 1 /Children [ << /StreamTag /Segment /Mapping << /CharacterCount 2 /GlyphCount 0 /WRValid false >> /FirstCharacterIndexInSegment 0 /Transform << /Origin [ -149.39575 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /GlyphStrike /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -200.88136 149.39575 57.35962 ] /Glyphs [ 94 1 ] /GlyphAdjustments << /Data [ << >> ] /RunLengths [ 2 ] >> /VisualBounds [ -149.39575 -200.88136 0.0 57.35962 ] /RenderedBounds [ -149.39575 -200.88136 0.0 57.35962 ] /Invalidation [ -149.39575 -200.88136 149.39575 57.35962 ] /ShadowStylesRun << /Data [ << /Index 0 /Font 1 /Scale [ 1.0 1.2 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 0 /EmbeddingLevel 0 /ComplementaryFontIndex 0 >> << /Index 1 /Font 1 /Scale [ 1.0 1.2 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 0 /EmbeddingLevel 0 /ComplementaryFontIndex 0 >> ] /RunLengths [ 1 1 ] >> /EndsInCR true /SelectionAscent -200.88136 /SelectionDescent 57.35962 /MainDir 0 >> ] >> ] >> ] >> ] >> ] >> ] >> ] >> /OpticalAlignment false >> << /Model << /Text (YARA ) /ParagraphRun << /RunArray [ << /RunData << /ParagraphSheet << /Name () /Features << /Justification 1 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 1 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /Kinsoku /nil /KurikaeshiMojiShori false /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << /Font 3 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true >> /ParagraphDirection 0 /JustificationMethod 0 /ComposerEngine 0 >> /Parent 0 >> >> /Length 5 >> ] >> /StyleRun << /RunArray [ << /RunData << /StyleSheet << /Name () /Parent 0 /Features << /Font 0 /FontSize 41.66667 /FauxBold false /FauxItalic false /AutoLeading true /Leading .04167 /HorizontalScale 1.2 /VerticalScale .9 /Tracking 60 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 0 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 .74902 .74902 .74902 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst false /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth .57884 /MiterLimit 2.31535 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true >> >> >> /Length 5 >> ] >> /KernRun << /RunArray [ << /RunData << >> /Length 5 >> ] >> /AlternateGlyphRun << /RunArray [ << /RunData << >> /Length 5 >> ] >> >> /View << /Frames [ << /Resource 1 >> ] /RenderedData << /RunArray [ << /RunData << /LineCount 1 >> /Length 5 >> ] >> /Strikes [ << /StreamTag /PathSelectGroupCharacter /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 0 /Children [ << /StreamTag /FrameStrike /Frame 1 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /LineStrike /Baseline 0.0 /Leading 50.0 /EMHeight 41.66667 /DHeight 31.25 /SelectionAscent -30.00011 /SelectionDescent 15.26356 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -30.00011 0.0 15.26356 ] /ChildProcession 1 /Children [ << /StreamTag /Segment /Mapping << /CharacterCount 5 /GlyphCount 0 /WRValid false >> /FirstCharacterIndexInSegment 0 /Transform << /Origin [ -142.27942 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /GlyphStrike /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -30.00011 145.27942 15.26356 ] /Glyphs [ 174 150 167 150 3 ] /GlyphAdjustments << /Data [ << /BackFixed 3.0 >> ] /RunLengths [ 5 ] >> /VisualBounds [ -142.27942 -30.00011 3.0 15.26356 ] /RenderedBounds [ -142.27942 -30.00011 3.0 15.26356 ] /Invalidation [ -142.27942 -30.00011 26.99979 15.26356 ] /ShadowStylesRun << /Data [ << /Index 0 /Font 0 /Scale [ 1.2 .9 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 0 /EmbeddingLevel 0 /ComplementaryFontIndex 0 >> ] /RunLengths [ 5 ] >> /EndsInCR true /SelectionAscent -30.00011 /SelectionDescent 15.26356 /MainDir 0 >> ] >> ] >> ] >> ] >> ] >> ] >> ] >> /OpticalAlignment false >> << /Model << /Text (/* ) /ParagraphRun << /RunArray [ << /RunData << /ParagraphSheet << /Name () /Features << /Justification 1 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 1 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /Kinsoku /nil /KurikaeshiMojiShori false /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << /Font 0 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true >> /ParagraphDirection 0 /JustificationMethod 0 /ComposerEngine 0 >> /Parent 0 >> >> /Length 3 >> ] >> /StyleRun << /RunArray [ << /RunData << /StyleSheet << /Name () /Parent 0 /Features << /Font 0 /FontSize 41.66667 /FauxBold false /FauxItalic false /AutoLeading true /Leading 50.0 /HorizontalScale 1.0 /VerticalScale .9 /Tracking -150 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 0 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 .74902 .74902 .74902 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst false /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth .57884 /MiterLimit 2.31535 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true >> >> >> /Length 3 >> ] >> /KernRun << /RunArray [ << /RunData << >> /Length 3 >> ] >> /AlternateGlyphRun << /RunArray [ << /RunData << >> /Length 3 >> ] >> /FirstKern 0 >> /View << /Frames [ << /Resource 3 >> ] /RenderedData << /RunArray [ << /RunData << /LineCount 1 >> /Length 3 >> ] >> /Strikes [ << /StreamTag /PathSelectGroupCharacter /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 0 /Children [ << /StreamTag /FrameStrike /Frame 3 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /LineStrike /Baseline 0.0 /Leading 50.0 /EMHeight 41.66667 /DHeight 31.25 /SelectionAscent -30.00011 /SelectionDescent 15.26356 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -30.00011 0.0 15.26356 ] /ChildProcession 1 /Children [ << /StreamTag /Segment /Mapping << /CharacterCount 3 /GlyphCount 0 /WRValid false >> /FirstCharacterIndexInSegment 0 /Transform << /Origin [ -42.38229 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /GlyphStrike /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -30.00011 36.13229 15.26356 ] /Glyphs [ 132 127 3 ] /GlyphAdjustments << /Data [ << /BackFixed -6.25 >> ] /RunLengths [ 3 ] >> /VisualBounds [ -42.38229 -31.27499 -3.29654 15.26356 ] /RenderedBounds [ -42.38229 -31.27499 -3.29654 15.26356 ] /Invalidation [ -42.38229 -31.27499 13.74982 15.26356 ] /ShadowStylesRun << /Data [ << /Index 0 /Font 0 /Scale [ 1.0 .9 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 0 /EmbeddingLevel 0 /ComplementaryFontIndex 0 >> << /Index 1 /Font 0 /Scale [ 1.0 .9 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 0 /EmbeddingLevel 0 /ComplementaryFontIndex 0 >> ] /RunLengths [ 1 2 ] >> /EndsInCR true /SelectionAscent -30.00011 /SelectionDescent 15.26356 /MainDir 0 >> ] >> ] >> ] >> ] >> ] >> ] >> ] >> /OpticalAlignment false >> << /Model << /Text (*/ ) /ParagraphRun << /RunArray [ << /RunData << /ParagraphSheet << /Name () /Features << /Justification 1 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 1 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /Kinsoku /nil /KurikaeshiMojiShori false /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << /Font 0 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true >> /ParagraphDirection 0 /JustificationMethod 0 /ComposerEngine 0 >> /Parent 0 >> >> /Length 3 >> ] >> /StyleRun << /RunArray [ << /RunData << /StyleSheet << /Name () /Parent 0 /Features << /Font 0 /FontSize 41.66667 /FauxBold false /FauxItalic false /AutoLeading true /Leading 50.0 /HorizontalScale 1.2 /VerticalScale .9 /Tracking -150 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 0 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 .74902 .74902 .74902 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst false /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth .57884 /MiterLimit 2.31535 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true >> >> >> /Length 3 >> ] >> /KernRun << /RunArray [ << /RunData << >> /Length 3 >> ] >> /AlternateGlyphRun << /RunArray [ << /RunData << >> /Length 3 >> ] >> /FirstKern 0 >> /View << /Frames [ << /Resource 4 >> ] /RenderedData << /RunArray [ << /RunData << /LineCount 1 >> /Length 3 >> ] >> /Strikes [ << /StreamTag /PathSelectGroupCharacter /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 0 /Children [ << /StreamTag /FrameStrike /Frame 4 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /LineStrike /Baseline 0.0 /Leading 50.0 /EMHeight 41.66667 /DHeight 31.25 /SelectionAscent -30.00011 /SelectionDescent 15.26356 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -30.00011 0.0 15.26356 ] /ChildProcession 1 /Children [ << /StreamTag /Segment /Mapping << /CharacterCount 3 /GlyphCount 0 /WRValid false >> /FirstCharacterIndexInSegment 0 /Transform << /Origin [ -50.85876 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /GlyphStrike /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -30.00011 43.35876 15.26356 ] /Glyphs [ 127 132 3 ] /GlyphAdjustments << /Data [ << /BackFixed -7.5 >> ] /RunLengths [ 3 ] >> /VisualBounds [ -50.85876 -31.27499 -4.17938 15.26356 ] /RenderedBounds [ -50.85876 -31.27499 -4.17938 15.26356 ] /Invalidation [ -50.85876 -31.27499 16.49979 15.26356 ] /ShadowStylesRun << /Data [ << /Index 0 /Font 0 /Scale [ 1.2 .9 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 0 /EmbeddingLevel 0 /ComplementaryFontIndex 0 >> << /Index 1 /Font 0 /Scale [ 1.2 .9 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 0 /EmbeddingLevel 0 /ComplementaryFontIndex 0 >> ] /RunLengths [ 1 2 ] >> /EndsInCR true /SelectionAscent -30.00011 /SelectionDescent 15.26356 /MainDir 0 >> ] >> ] >> ] >> ] >> ] >> ] >> ] >> /OpticalAlignment false >> << /Model << /Text ({ ) /ParagraphRun << /RunArray [ << /RunData << /ParagraphSheet << /Name () /Features << /Justification 1 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 1 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /Kinsoku /nil /KurikaeshiMojiShori false /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << /Font 0 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true >> /ParagraphDirection 0 /JustificationMethod 0 /ComposerEngine 0 >> /Parent 0 >> >> /Length 2 >> ] >> /StyleRun << /RunArray [ << /RunData << /StyleSheet << /Name () /Parent 0 /Features << /Font 2 /FontSize 200.0 /FauxBold true /FauxItalic false /AutoLeading true /Leading 150.0 /HorizontalScale 1.0 /VerticalScale 1.2 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 0 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 .54902 .00862 .00867 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 .74902 .74902 .74902 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst false /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth .57884 /MiterLimit 2.31535 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true >> >> >> /Length 2 >> ] >> /KernRun << /RunArray [ << /RunData << >> /Length 2 >> ] >> /AlternateGlyphRun << /RunArray [ << /RunData << >> /Length 2 >> ] >> /FirstKern 0 >> /View << /Frames [ << /Resource 0 >> ] /RenderedData << /RunArray [ << /RunData << /LineCount 1 >> /Length 2 >> ] >> /Strikes [ << /StreamTag /PathSelectGroupCharacter /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 0 /Children [ << /StreamTag /FrameStrike /Frame 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /LineStrike /Baseline 0.0 /Leading 240.00002 /EMHeight 200.0 /DHeight 150.09766 /SelectionAscent -200.88136 /SelectionDescent 57.35962 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -200.88136 0.0 57.35962 ] /ChildProcession 1 /Children [ << /StreamTag /Segment /Mapping << /CharacterCount 2 /GlyphCount 0 /WRValid false >> /FirstCharacterIndexInSegment 0 /Transform << /Origin [ -149.39575 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /GlyphStrike /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -200.88136 149.39575 57.35962 ] /Glyphs [ 92 1 ] /GlyphAdjustments << /Data [ << >> ] /RunLengths [ 2 ] >> /VisualBounds [ -149.39575 -200.88136 0.0 57.35962 ] /RenderedBounds [ -149.39575 -200.88136 0.0 57.35962 ] /Invalidation [ -149.39575 -200.88136 149.39575 57.35962 ] /ShadowStylesRun << /Data [ << /Index 0 /Font 1 /Scale [ 1.0 1.2 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 0 /EmbeddingLevel 0 /ComplementaryFontIndex 0 >> << /Index 1 /Font 1 /Scale [ 1.0 1.2 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 0 /EmbeddingLevel 0 /ComplementaryFontIndex 0 >> ] /RunLengths [ 1 1 ] >> /EndsInCR true /SelectionAscent -200.88136 /SelectionDescent 57.35962 /MainDir 0 >> ] >> ] >> ] >> ] >> ] >> ] >> ] >> /OpticalAlignment false >> ] /OriginalNormalStyleFeatures << /Font 3 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true >> /OriginalNormalParagraphFeatures << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 0 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 0 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /Kinsoku /nil /KurikaeshiMojiShori false /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << >> /ParagraphDirection 0 /JustificationMethod 0 /ComposerEngine 0 >> >>8BIMFMsk 2????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????x?c##?T?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?T?q????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????jZZ???"22? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij?c##????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##?)ij? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????x?0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????jZZ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????T?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?q???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????[? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????jZZ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?x????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????x?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????[? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????x?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????x?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????M}~? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????q? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????M}~? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?M}~????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????7? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?jZZ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????)ij? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?T????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"22?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????q? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??jZZ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??jZZ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij?q???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??7?c##?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????x?[?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?M}~?c##?x???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????????q?7? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??7?c##????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????T? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??T??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij?jZZ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF?????????????????????????????????????????[? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??T???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????x?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?T??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????M}~? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?T?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????"22? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?T????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????q? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??jZZ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????[? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"22?x??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?jZZ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????)ij? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?c##????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?x???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????M}~? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?T???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"22???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????7? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?jZZ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF?????????????????????????????????????????7? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?c##??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF?????????????????????????????????????????x?"22? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?c##??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????jZZ?"22? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?M}~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????x?7? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF?????????????????????????????????????????????q???"22? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????[? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????7? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?c##??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????)ij? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?c##??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?c##??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????jZZ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?q??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????x?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????7? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij???????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????7? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##?)ij? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?T???????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????jZZ?c##?c##?M}~?7?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?q???????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????q???"22? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????x?7? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????jZZ?"22? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????x?"22? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????7? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?q?????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????7? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0??????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?c##??????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7???????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????M}~? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??q???????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?M}~????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij?????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????)ij? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??x?????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?c##?????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??x????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????[? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?jZZ???????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????q? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij???????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????"22? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?c##??????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????M}~? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0??????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????x?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?q?????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????[? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????jZZ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"22???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????T? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?jZZ????????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????q?7? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?jZZ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????x?[?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?0?)ij?)ij?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"22????????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?M}~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????q?T?)ij? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?x????????????????????????????????????????????????????????????????????????????????)ij? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"22?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[????????????????????????????????????????????????????????????????????????????????0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?c##?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????x?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????????????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"22??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij????????????????????????????????????????????????????????????????????????????????[? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7?x?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????)ij? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????????????????????????????????????????????????????????????????q? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??T????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????T? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??0?FFF?c##?c##?c##??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????x? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?q????????????????????????????????????????????????????????????????????????????????0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??7?c##?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?c##????????????????????????????????????????????????????????????????????????????????T? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij?q???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????)ij? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?c##????????????????????????????????????????????????????????????????????????????????x? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??jZZ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[?????????????????????????????????????????????????????????????????????????????????0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??jZZ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF?????????????????????????????????????????????????????????????????????????????????T? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"22?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????M}~? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?T????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????x?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?jZZ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????????M}~? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?M}~???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????????????????????????????????????????????????"22? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF?????????????????????????????????????????????????????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????)ij? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF?????????????????????????????????????????????????????????????????????????????????????q?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF?????????????????????????????????????????????????????????????????????????????????????)ij? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????????????????????????????????????????????????T? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????????x?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????x?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?x???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?q????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF?????????????????????????????????????????????????????????????????????????????????T? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF?????????????????????????????????????????????????????????????????????????????????0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????????????????????????????????????????????x? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????????????????????????????????????????????T? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij?c##????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????????????????????????????????????????????7? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij?)ij?)ij?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?FFF?T?q??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??M}~?jZZ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????q? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??M}~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????[? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?jZZ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??x????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????)ij? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?x?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?7?T?x?????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??FFF????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"22?x??????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????jZZ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"22?x?????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0?????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?c##????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????"22? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?q???????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?T???????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????jZZ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij???????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij???????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????q? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij???????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????7? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij???????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????q? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij???????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij???????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????"22? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????jZZ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?T???????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????T? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?q???????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????7? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?c##????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????T? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0?????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"22?x?????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????x?FFF?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"22?x??????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????x?M}~?"22? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??FFF????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????x?[?FFF?7?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?7?T?x?????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????c##? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????[???)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?"22? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????T?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????x?7? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFF??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?c##?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?c##????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????q?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?c##?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????jZZ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????T? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?M}~????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?q????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????)ij? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?T?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????)ij? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)ij???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????T? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??q???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????jZZ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????q?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????FFF? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??T????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????x?7? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7?x???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????T?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??FFF?q???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????[???)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?)ij?0?FFF?[?q???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p?@?@?@?p?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`?@?@?@?P???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????=?p????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>???????????????????????????????????@?@?@?@?@?@?@?@?p????????`?@?@?@?@?@?@?@?P??????????????????p?@?@?@?@?@?@?@?@?@?@?@?`??????????????????`?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?P?????????????????????????`?@?@?@?@?@?@?@?@?@?@?@?p???????????????????????????????????????????????????????0>@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?`???????????????????????????????????@????????>???????????????p?>@>>?`???????????????=>?@???????????????????`>>>@??p???????????????????????????????????????????????????>?@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>????????????????????????????????????@????????>??????????????@=???????????????>?p????????????????=?@?????????????????????????????????????????????????? >???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@?@?????????>>???????????????????????@????????>????????????? >?????????????>@??????????????>? ?????????????????????@???????????????????????p>?@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>??????????>>???????????????????????@????????>????????????`=>?@?@?@?=?0????????????>??????0>??????????????0=??@?@?@>=?`????????????????????@???????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`? ?????p?????>>??????p?????????????????@????????>?????????????P??????p>>????????????>???????>=????????????>>?p??????P???????????????p??????@???????p???????????????p=?`??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>?????>>? ???>>???? >>?????????????????@????????>???????????>>???????? ????????????>????????p?@???????????? ???????>>?????????????0>?@????@????? >@=?`??????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p=??????@>? ?>>?? >?@????????????????@????????>???????????>?????????@????????????>?????????@????????????@????????>????????????P=>? ?p?@??`?=>@?p????????????`=?`???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????=?p?????>>>>?????????????????@????????>???????????>?????????@????????????>?????????@????????????@????????>????????????==>>>?@???????????>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>???????`>>?`?????????????????@????????>???????????>?????????@????????????>?????????@????????????@????????>?????????????p?>>? ?????????????`=?p??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?`?????????@>>?@???????????????????@????????>???????????>?????????@????????????>????????=?????????????@????????>????????????????0>>?P??????????????>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>???????????@>>?@???????????????????>>???????p>>???????????>?????????@????????????>????????0??????????????@????????>?????????????????@>>?`???????????????@=?p???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@?@?????????@>>?@??????????????????>?`????@>@?@???????????>?????????@????????????>???????@=>??????????????@????????>??????????????? >@>?@????????????>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>????????`>>?`????????????????p>>@>>>????????????>>???????>????????????>?????>@>??????????????>???????>>????????????`?=>? ?p?????????@>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`? ???????>>? >>? >>?????????????????`>@>?p????????????>????????????=>?@???????????????>????????????>??0?`>=?P????????>? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>?????????p>>? ??>>??? >>?p??????????????????? >=>?@??????????????>????????????=>?p????????????>????????????>>? ???@???p?>?????????? >????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p=???????????0? ????>>????? ?0???????????????????????@?0>>?@?P?????????????????>>???????>????????????>?????>@>????????????>???????>>?????????????p>?P?????@??????0??????????>?@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????=?p???????????????>>??????????????????????????????>????????????????????>?????????@????????????>???????@=?P????????????@????????>????????????????????@???????????????? >????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>????????????????>>??????????????????????????????>????????????????????>?????????@????????????>????????@?@????????????@????????>????????????????????@???????????????p>?@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?`????????????????? ??? ??????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>????????????????????`???????????????????>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>???????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>??????????????????????????????????????p=?`????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@?@???????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>??????????????????????????????????????>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>@????????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>?????????????????????????????????????`=?`????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`? ????????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>?????????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>????????????????????????????????????`=?p????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p=??????????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>???????????????????????????????????>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????=?p?????????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>???????????????????????????????????@=?p????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>??????????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>??????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?`??????????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>??????????????????????????????????@>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>@>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#P?@@? ?????????????????????????????????? ?`F????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Pi>{>G,H< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>O?@@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@>O< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>{?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#P>< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>B???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Pi=< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? =< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?`F???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????0< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>B??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Pi=< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?p#P????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#P>< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?0???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????0< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>O??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#P=< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>O??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>O?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#P=< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>O?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????1< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>O????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>O????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`F< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>B????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????1< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?1???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>B< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?Pi???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>O< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>G,H?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`F< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @=?Pi?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @=?Pi??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>O?`F???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>>B?@@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????p ?0???????????????????????????????????@?p ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?????????????????????????????????????????????`@@>‚<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>‚?@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>?P``????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @??????????????????????????????????????????0<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?????????????????????????????????????????p ><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<? ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @????????????????????????????????????????>F<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @????????????????????????????????????????`@@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=?P``???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @????????????????????????????????????????0<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>F?p ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>BB??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?P``?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????>BB<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>‚????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?p ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>‚???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @????????????????????????????????????????=<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>F???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @????????????????????????????????????????>‚<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?P``??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?????????????????????????????????????????>‚<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @??????????????????????????????????????????p >F<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????P``>F<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @????????????????????????????????????????????p >‚<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @??????????????????????????????????????????????`@@>BB>F<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????0< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>B< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?@@??????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>O< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?@@??????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?@@??????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Pi< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?`F??????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>{< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#P=< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>B< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>O???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>B< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@>O< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @? ???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Pi?@@?@@?1>B>< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?`F???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`F>{>G,H< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#P>B< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>B????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Pi>G,H< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?0????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#P>G,H< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @=?????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>B< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>{?????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?`F?????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>B< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>??????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????=< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?@@??????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>B???????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????1< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @=?`F???????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?1????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>{< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>O?????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>O< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @=?p#P?????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?@@?????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>?p#P????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>{????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????0< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?Pi???????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`F< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>O???????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>G,H< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?@@??????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????1< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>??????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#P>< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?`F?????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????0< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>{?????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>?????????????????????????????????????????????????????????????????????????????????P``<<<<<<<<<<<<<<<<<<<<<>F??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? < @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?Pi????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`F>B< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>{????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<?P``?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#P?0???????????????????>>O>O=< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>G,H????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`F? >O< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?p#P???????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<>F?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@=< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?0???????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<?@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#P=< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<>F??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>O????????????????????????????????????????????????????????????????????????????????0<<<<<<<<<<<<<<<<<<<<<<<>‚?p ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>O< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>????????????????????????????????????????????????????????????????????????????????`@@<<<<<<<<<<<<<<<<<<<<<<<<>? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? < @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @????????????????????????????????????????????????????????????????????????????????=<<<<<<<<<<<<<<<<<<<<<<<<<=>??@?@?@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#P< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?`F???????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>‚?@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?@@???????????????????????????????????????????????????????????????????????????????? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>?`@@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>O< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?@@????????????????????????????????????????????????????????????????????????????????p <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=?P``??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?0????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=?P``?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?????????????????????????????????????????????????????????????????????????????????? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>F?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????1< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @??????????????????????????????????????????????????????????????????????????????????=<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????????p =<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?P``???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @????????????????????????????????????????????????????????????????????????????????????>F<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>‚???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @??????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @??????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @??????????????????????????????????????????????????????????????????????????????????????`@@=<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @????????????????????????????????????????????????????????????????????????????????????? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @????????????????????????????????????????????????????????????????????????????????????p =<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?0???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????????p =<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?p ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>‚????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @??????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?`@@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?????????????????????????????????????????????????????????????????????????????????? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>‚??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?????????????????????????????????????????????????????????????????????????????????p <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>BB???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @????????????????????????????????????????????????????????????????????????????????? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>?@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @????????????????????????????????????????????????????????????????????????????????>‚<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>???????????????????? ?`@@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<>??P``???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @????????????????????????????????????????????????????????????????????????????????`@@<<<<<<<<<<<<<<<<<<<<<<<=???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @????????????????????????????????????????????????????????????????????????????????0<<<<<<<<<<<<<<<<<<<<<<<?P``???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<=?p ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<>BB?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????=<<<<<<<<<<<<<<<<<<<<<?0?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<?p ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<=??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<>BB??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>B? ?p#P?????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @=?????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>G,H?p#P??????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Pi< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>G,H?p#P?????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>?????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?@@????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>G,H< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>O????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?`F???????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @? ???????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Pi< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>{???????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????=< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>O???????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>{< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>O???????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`F< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>O???????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>B< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>O???????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`F< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>O???????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>O???????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>G,H< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>{???????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Pi=< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @? ???????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? < @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?`F???????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>O????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>B< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @?@@????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? < @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>?????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@>< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>G,H?p#P?????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#P?=< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @>G,H?p#P??????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#P?1>G,H< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @< @=?????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#P?0?>B>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>B? ?p#P?????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????0>BB>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>F<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p >‚<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`@@=<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>BB<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????P``<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?`@@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?0??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=?`@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????P``<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?0????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>BB?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>BB<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>‚???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`@@=<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>‚?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>‚??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p >‚<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>‚?p ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>??`@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????0>BB>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>??0?`@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p?@?@?@?p?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`?@?@?@?P???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????=?p????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>???????????????????????????????????@?@?@?@?@?@?@?@?p????????`?@?@?@?@?@?@?@?P??????????????????p?@?@?@?@?@?@?@?@?@?@?@?`??????????????????`?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?P?????????????????????????`?@?@?@?@?@?@?@?@?@?@?@?p???????????????????????????????????????????????????????0>@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?`???????????????????????????????????@????????>???????????????p?>@>>?`???????????????=>?@???????????????????`>>>@??p???????????????????????????????????????????????????>?@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>????????????????????????????????????@????????>??????????????@=???????????????>?p????????????????=?@?????????????????????????????????????????????????? >???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@?@?????????>>???????????????????????@????????>????????????? >?????????????>@??????????????>? ?????????????????????@???????????????????????p>?@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>??????????>>???????????????????????@????????>????????????`=>?@?@?@?=?0????????????>??????0>??????????????0=??@?@?@>=?`????????????????????@???????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`? ?????p?????>>??????p?????????????????@????????>?????????????P??????p>>????????????>???????>=????????????>>?p??????P???????????????p??????@???????p???????????????p=?`??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>?????>>? ???>>???? >>?????????????????@????????>???????????>>???????? ????????????>????????p?@???????????? ???????>>?????????????0>?@????@????? >@=?`??????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p=??????@>? ?>>?? >?@????????????????@????????>???????????>?????????@????????????>?????????@????????????@????????>????????????P=>? ?p?@??`?=>@?p????????????`=?`???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????=?p?????>>>>?????????????????@????????>???????????>?????????@????????????>?????????@????????????@????????>????????????==>>>?@???????????>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>???????`>>?`?????????????????@????????>???????????>?????????@????????????>?????????@????????????@????????>?????????????p?>>? ?????????????`=?p??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?`?????????@>>?@???????????????????@????????>???????????>?????????@????????????>????????=?????????????@????????>????????????????0>>?P??????????????>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>???????????@>>?@???????????????????>>???????p>>???????????>?????????@????????????>????????0??????????????@????????>?????????????????@>>?`???????????????@=?p???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@?@?????????@>>?@??????????????????>?`????@>@?@???????????>?????????@????????????>???????@=>??????????????@????????>??????????????? >@>?@????????????>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>????????`>>?`????????????????p>>@>>>????????????>>???????>????????????>?????>@>??????????????>???????>>????????????`?=>? ?p?????????@>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`? ???????>>? >>? >>?????????????????`>@>?p????????????>????????????=>?@???????????????>????????????>??0?`>=?P????????>? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>?????????p>>? ??>>??? >>?p??????????????????? >=>?@??????????????>????????????=>?p????????????>????????????>>? ???@???p?>?????????? >????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p=???????????0? ????>>????? ?0???????????????????????@?0>>?@?P?????????????????>>???????>????????????>?????>@>????????????>???????>>?????????????p>?P?????@??????0??????????>?@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????=?p???????????????>>??????????????????????????????>????????????????????>?????????@????????????>???????@=?P????????????@????????>????????????????????@???????????????? >????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>????????????????>>??????????????????????????????>????????????????????>?????????@????????????>????????@?@????????????@????????>????????????????????@???????????????p>?@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?`????????????????? ??? ??????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>????????????????????`???????????????????>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>???????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>??????????????????????????????????????p=?`????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@?@???????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>??????????????????????????????????????>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>@????????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>?????????????????????????????????????`=?`????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`? ????????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>?????????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>????????????????????????????????????`=?p????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p=??????????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>???????????????????????????????????>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????=?p?????????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>???????????????????????????????????@=?p????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>??????????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>??????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?`??????????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>??????????????????????????????????@>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>@>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#?@? ?????????????????????????????????? ?`G????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Pj>>G6<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>T?@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>T<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Pj=<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? =<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?`G???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????0<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Pj=<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?p#????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?0???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????0<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>T??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#=<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>T??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>T?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#=<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>T?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>T????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>T????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`G<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?Pj???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>T<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>G6?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`G<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=?Pj?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=?Pj??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>T?`G???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>?@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????p ?0???????????????????????????????????@?p ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????`@@>‚<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>‚?@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>?P``????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????0<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????p ><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<? ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????>F<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????`@@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=?P``???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????0<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>F?p ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>BB??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?P``?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????>BB<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>‚????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?p ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>‚???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????=<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>F???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????>‚<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?P``??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????>‚<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????p >F<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????P``>F<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????p >‚<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????`@@>BB>F<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????0<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<?@??????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>T<<<<<<<<<<<<<<<<<<<<<?@??????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<?@??????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Pj<<<<<<<<<<<<<<<<<<<<<<?`G??????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#=<<<<<<<<<<<<<<<<<<<<<>???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<>T???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@>T<<<<<<<<<<<<<<<<<<<<<<<<? ???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Pj?@?@?>><<<<<<<<<<<<<<<<<<<<<<<<<<?`G???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`G>>G6<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Pj>G6<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?0????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#>G6<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=?????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>?????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?`G?????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<> ??????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????=<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?@??????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>???????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=?`G???????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>T?????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>T<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=?p#?????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?@?????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>?p#????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????0<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?Pj???????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`G<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>T???????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>G6<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?@??????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<> ??????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?`G?????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????0<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>?????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>?????????????????????????????????????????????????????????????????????????????????P``<<<<<<<<<<<<<<<<<<<<<>F??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?Pj????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`G><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<?P``?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#?0???????????????????> >T>T=<<<<<<<<<<<<<<<<<<<<<<<<<<<>G6????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`G? >T<<<<<<<<<<<<<<<<<<<<<<<<<?p#???????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<>F?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@=<<<<<<<<<<<<<<<<<<<<<<<?0???????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<?@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#=<<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<>F??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<<>T????????????????????????????????????????????????????????????????????????????????0<<<<<<<<<<<<<<<<<<<<<<<>‚?p ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>T<<<<<<<<<<<<<<<<<<<<<>????????????????????????????????????????????????????????????????????????????????`@@<<<<<<<<<<<<<<<<<<<<<<<<>? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? <<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????=<<<<<<<<<<<<<<<<<<<<<<<<<=>??@?@?@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#<<<<<<<<<<<<<<<<<<<<<<?`G???????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>‚?@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<?@???????????????????????????????????????????????????????????????????????????????? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>?`@@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>T<<<<<<<<<<<<<<<<<<<<<?@????????????????????????????????????????????????????????????????????????????????p <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=?P``??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<?0????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=?P``?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>F?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????=<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????p =<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?P``???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????>F<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>‚???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????`@@=<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????p =<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?0???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????p =<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?p ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>‚????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?`@@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>‚??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????p <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>BB???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>?@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????>‚<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>???????????????????? ?`@@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<>??P``???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????`@@<<<<<<<<<<<<<<<<<<<<<<<=???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????0<<<<<<<<<<<<<<<<<<<<<<<?P``???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<=?p ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<>BB?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????=<<<<<<<<<<<<<<<<<<<<<?0?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<?p ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<=??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<>BB??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<>>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>? ?p#?????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=?????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>G6?p#??????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Pj<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>G6?p#?????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<> ?????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?@????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>G6<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>T????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?`G???????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<? ???????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Pj<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>???????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????=<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>T???????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>T???????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`G<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>T???????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>T???????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`G<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>T???????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>T???????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>G6<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>???????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Pj=<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<? ???????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?`G???????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>T????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?@????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<> ?????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>G6?p#?????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#?=<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>G6?p#??????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#?>G6<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=?????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p#?0?>>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>T>? ?p#?????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????0>BB>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>F<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p >‚<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`@@=<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>BB<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????P``<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?`@@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?0??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=?`@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????P``<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<?0????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>BB?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>BB<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>‚???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`@@=<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>‚?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>‚??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p >‚<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>‚?p ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>??`@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????0>BB>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>??0?`@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p?@?@?@?p?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`?@?@?@?P???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????=?p????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>???????????????????????????????????@?@?@?@?@?@?@?@?p????????`?@?@?@?@?@?@?@?P??????????????????p?@?@?@?@?@?@?@?@?@?@?@?`??????????????????`?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?P?????????????????????????`?@?@?@?@?@?@?@?@?@?@?@?p???????????????????????????????????????????????????????0>@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?`???????????????????????????????????@????????>???????????????p?>@>>?`???????????????=>?@???????????????????`>>>@??p???????????????????????????????????????????????????>?@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>????????????????????????????????????@????????>??????????????@=???????????????>?p????????????????=?@?????????????????????????????????????????????????? >???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@?@?????????>>???????????????????????@????????>????????????? >?????????????>@??????????????>? ?????????????????????@???????????????????????p>?@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>??????????>>???????????????????????@????????>????????????`=>?@?@?@?=?0????????????>??????0>??????????????0=??@?@?@>=?`????????????????????@???????????????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`? ?????p?????>>??????p?????????????????@????????>?????????????P??????p>>????????????>???????>=????????????>>?p??????P???????????????p??????@???????p???????????????p=?`??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>?????>>? ???>>???? >>?????????????????@????????>???????????>>???????? ????????????>????????p?@???????????? ???????>>?????????????0>?@????@????? >@=?`??????????????>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p=??????@>? ?>>?? >?@????????????????@????????>???????????>?????????@????????????>?????????@????????????@????????>????????????P=>? ?p?@??`?=>@?p????????????`=?`???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????=?p?????>>>>?????????????????@????????>???????????>?????????@????????????>?????????@????????????@????????>????????????==>>>?@???????????>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>???????`>>?`?????????????????@????????>???????????>?????????@????????????>?????????@????????????@????????>?????????????p?>>? ?????????????`=?p??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?`?????????@>>?@???????????????????@????????>???????????>?????????@????????????>????????=?????????????@????????>????????????????0>>?P??????????????>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>???????????@>>?@???????????????????>>???????p>>???????????>?????????@????????????>????????0??????????????@????????>?????????????????@>>?`???????????????@=?p???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@?@?????????@>>?@??????????????????>?`????@>@?@???????????>?????????@????????????>???????@=>??????????????@????????>??????????????? >@>?@????????????>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>????????`>>?`????????????????p>>@>>>????????????>>???????>????????????>?????>@>??????????????>???????>>????????????`?=>? ?p?????????@>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`? ???????>>? >>? >>?????????????????`>@>?p????????????>????????????=>?@???????????????>????????????>??0?`>=?P????????>? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>?????????p>>? ??>>??? >>?p??????????????????? >=>?@??????????????>????????????=>?p????????????>????????????>>? ???@???p?>?????????? >????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p=???????????0? ????>>????? ?0???????????????????????@?0>>?@?P?????????????????>>???????>????????????>?????>@>????????????>???????>>?????????????p>?P?????@??????0??????????>?@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????=?p???????????????>>??????????????????????????????>????????????????????>?????????@????????????>???????@=?P????????????@????????>????????????????????@???????????????? >????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>????????????????>>??????????????????????????????>????????????????????>?????????@????????????>????????@?@????????????@????????>????????????????????@???????????????p>?@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?`????????????????? ??? ??????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>????????????????????`???????????????????>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>???????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>??????????????????????????????????????p=?`????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@?@???????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>??????????????????????????????????????>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>@????????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>?????????????????????????????????????`=?`????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`? ????????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>?????????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>????????????????????????????????????`=?p????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p=??????????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>???????????????????????????????????>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????=?p?????????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>???????????????????????????????????@=?p????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>>??????????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>??????????????????????????????????>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?`??????????????????????????????????????????????????????>????????????????????>?????????@????????????>?????????@????????????@????????>??????????????????????????????????@>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>@>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????=>>?????????????????????????????????>>>@??P???????????????????????????????????????@>>?@????????????????????????????????????????????=?0??????????????????????????????????????????????? >@?p?????????????????????????????????????????????????>?p??????????????????????????????????????????????????>>????????????????????????????????????????????????????? >@?p?????????????????????????????????????????????????????==?`??????????????????????????????????????????????????????>?0????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????@=?p?????????????????????????????????????????????????????????@???????????????????????????????????????????????????????????@=?p??????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????@?`???????????????????????????????????????????????????????????@>???????????????????????????????????????????????????????????? >???????????????????????????????????????????????????????????>? ???????????????????????????????????????????????????????????>@?@???????????????????????????????????????????????????????????`???????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????P>??????????????????????????????????????????????????????????p>@>?????????????????????????????????????????????????????????p>@>????????????????????????????????????????????????????????@>>?????????????????????????????????????????????????????`? >>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????=>?????????????????????????????????>>=>??????????????????????>? ???????????????????????????????????????`? >>??????????????????????>????????????????????????????????????????????`>>??????????????????????????????????????????????????????????????????????@>@>??????????????????????>?????????????????????????????????????????????????p>>??????????????????????=?`??????????????????????????????????????????????????>>??????????????????????>????????????????????????????????????????????????????>>???????????????????????P?????????????????????????????????????????????????????>>??????????????????????>???????????????????????????????????????????????????????p>@>??????????????????????>????????????????????????????????????????????????????????P=>????????????????????????????????????????????????????????????????????????????????>????????????????????????????????????????????????????????????????????????????????>@>???????????????????????0??????????????????????????????????????????????????????????@>???????????????????????@??????????????????????????????????????????????????????????>>?????????????????????????????????????????????????????????????????????????????????? >??????????????????????????????????????????????????????????????????????????????????=>??????????????????????>???????????????????????????????????????????????????????????>>??????????????????????>???????????????????????????????????????????????????????????? >???????????????????????p???????????????????????????????????????????????????????????P>??????????????????????? ???????????????????????????????????????????????????????????>??????????????????????>???????????????????????????????????????????????????????????>@>??????????????????????? ??????????????????????????????????????????????????????????>>??????????????????????=?P?????????????????????????????????????????????????????????>>??????????????????????>@?P????????????????????????????????????????????????????????>>??????????????????????=? ????????????????????????????????????????????????????????>??????????????????????>??P?????????????????????????????????????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>?????????????????????????????????????????????>?????????????????????????????????????????????>??????????????????????? ?????????????????????>>???????????????????????@?????????????????????>>????????????????????????????????????????????>>??????????????????????>@??????????????????????>>?????????????????????????????????????????????>??????????????????????=?p??????????????????????`>??????????????????????? ???????????????????????@>??????????????????????? ????????????????????????>??????????????????????>?@????????????????????????>>??????????????????????>@>>>? ?`??????????????????????????>>??????????????????????>??P???????????????????????????????????????????????????`>??????????????????????=? ?????????????????????????????????????????????????????? >??????????????????????>@?P??????????????????????????????????????????????????????>>??????????????????????=?P???????????????????????????????????????????????????????p>??????????????????????? ????????????????????????????????????????????????????????>??????????????????????>????????????????????????????????????????????????????????>>??????????????????????? ????????????????????????????????????????????????????????0>???????????????????????p???????????????????????????????????????????????????????>>??????????????????????>???????????????????????????????????????????????????????? >??????????????????????>???????????????????????????????????????????????????????p>>?????????????????????????????????????????????????????????????????????????????>>?????????????????????????????????????????????????????????????????????????????@>???????????????????????@?????????????????????????????????????????????????????p=>???????????????????????0?????????????????????????????????????????????????????>>?????????????????????????????????????????????????????????????????????????????`=>??????????????????????????????????????????????????????????????????????????????>??????????????????????>???????????????????????????????????????????????????????>@>??????????????????????>????????????????????????????????????????????????????????@>???????????????????????P???????????????????????????????????????????????????????>>??????????????????????>????????????????????????????????????????????????????????0>??????????????????????=?`???????????????????????????????????????????????????????>>??????????????????????0>????????????????????????????????????????????????????????>??????????????????????@????????????????????????????????????????????????????????`>@??????????????????????P>??????????????????????????????????????????????????????>@??????????????????????>? ???????????????????????????????????????????????????????????????????????????>@=>????????????????????0?@?@?p????????????????????????????P??????????????????????>>>?@?????????????????????????=?@??????????????????????P>?p???????????????????????>?0??????????????????????>=?p???????????????????????????????????????????????P>???????????????????????@>???????????????????????? =?@??????????????????????`>?????????????????????????`>>???????????????????????p??????????????????????????p?0?>>>=??????????????????????>?0???????????????????????????????????????????????????`? >?`?????????????????????>>??????????????????????????????????????????????????????@>?@?????????????????????>=???????????????????????????????????????????????????????p>@??????????????????????>?0???????????????????????????????????????????????????????p>@???????????????????????>????????????????????????????????????????????????????????P>???????????????????????p???????????????????????????????????????????????????????>>???????????????????????????????????????????????????????????????????????????????`>??????????????????????=?p???????????????????????????????????????????????????????>@>??????????????????????>???????????????????????????????????????????????????????>>???????????????????????P??????????????????????????????????????????????????????? >??????????????????????>???????????????????????????????????????????????????????@>?????????????????????????????????????????????????????????????????????????????@>???????????????????????@?????????????????????????????????????????????????????@>??????????????????????>?p?????????????????????????????????????????????????????@>???????????????????????@??????????????????????????????????????????????????????@>??????????????????????>???????????????????????????????????????????????????????@>??????????????????????=?p???????????????????????????????????????????????????????>??????????????????????????????????????????????????????????????????????????????>>??????????????????????=?p???????????????????????????????????????????????????????=>??????????????????????????????????????????????????????????????????????????????? >???????????????????????`???????????????????????????????????????????????????????>>??????????????????????>????????????????????????????????????????????????????????>???????????????????????0??????????????????????????????????????????????????????? >??????????????????????=???????????????????????????????????????????????????????>??????????????????????>?????????????????????????????????????????????????????@>>??????????????????????? ?????????????????????????????@?@?@???????????????????>>>???????????????????????`?????????????????????????`>>@>??????????????????????>????????????????????????p>>??????????????????????>???????????????????????>@>??????????????????????????????????????????????>???????????????????????0??????????????????????p=>???????????????????????@??????????????????????>???????????????????????p?????????????????????>>????????????????????????????????????????????=>????????????????????????????????????????????p>??????????????????????>??????????????????????@>??????????????????????>??????????????????????@>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????`?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@? >=>??????????????????????>???????????????????????????????????????????????????????p?>??????????????????????>?????????????????????????????????????????????????????????P=>??????????????????????>@??????????????????????????????????????????????????????????P=>?????????????????????????????????????????????????????????????????????????????????0>?????????????????????????????????????????????????????????????????????????????????>>???????????????????????P???????????????????????????????????????????????????????????@>???????????????????????0???????????????????????????????????????????????????????????>>??????????????????????????????????????????????????????????????????????????????????>>??????????????????????>@????????????????????????????????????????????????????????????>???????????????????????p???????????????????????????????????????????????????????????@>??????????????????????????????????????????????????????????????????????????????????@>??????????????????????>???????????????????????????????????????????????????????????@>??????????????????????? ??????????????????????????????????????????????????????????@>??????????????????????>??????????????????????????????????????????????????????????@>????????????????????????????????????????????????????????????????????????????????@>???????????????????????P????????????????????????????????????????????????????????>??????????????????????>@?p??????????????????????????????????????????????????????>>??????????????????????>??????????????????????????????????????????????????????>>????????????????????????????????????????????????????????????????????????????@>??????????????????????? ???????????????????????????????????????????????????>>??????????????????????>??????????????????????????????????????????????????0>??????????????????????>?`???????????????????????????????????????????????P=>??????????????????????=??p????????????????????????????????????????????P=>??????????????????????=>?P????????????????????????????????????????p?>??????????????????????=>?? ?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@? >=>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??????????????????????>??@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?P??????????????????????>?`???????????????????????????????????????????????????????=? ??????????????????????????????????????????????????????????0?????????????????????????????????????????????????????????>???????????????????????????????????????????????????????????>>?p??????????????????????????????????????????????????????????>?????????????????????????????????????????????????????????????`???????????????????????????????????????????????????????????`>@????????????????????????????????????????????????????????????0>???????????????????????????????????????????????????????????>????????????????????????????????????????????????????????????>????????????????????????????????????????????????????????????@?@??????????????????????????????????????????????????????????>?@??????????????????????????????????????????????????????????`??????????????????????????????????????????????????????????>??????????????????????????????????????????????????????????@>????????????????????????????????????????????????????????p>>@???????????????????????????????????????????????????????>?`???????????????????????????????????????????????????????????????????????????????????????????????????????????? >?p??????????????????????????????????????????????????? ??????????????????????????????????????????????????? ?0???????????????????????????????????????????????p>=? ????????????????????????????????????????????? =>?`????????????????????????????????????????`?>>??@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?0?>>=>>>=>>>>>@>???p=?@???>?`???>>>>>>>>=>>>>>>>>>@=>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>@>>>>>>>>>>>>=>????P>???>????????>?????????@=>?P??????????????`?>????????????????????p? >>??`??????????????P>=?`???>?@??? ????????>?????????@>?p??????????????????>???????????????????????=>???????????????????p>>????@>???>?@???@????????>?????????@>?????????????????????? ????????????????????????P? ?????????????????????>>????=?`???>? ???@?@???@????????>?????????@>?p????????? >>>??p????????>?????????@>?@?????????>?????????p?>>>? ?????????p>>?????????0>???>=?@???@=????????>?????????@?????????>@=?`????????@?????????@? ????????p?@????????`=>@?????????=>????==?p???>????`? ?`>?@???@>?`? ????????>?????????@?@???????? >?????????????????@=????????>????????>? ????????@>??0>>????>?P?p>????? =?p??>>????`>?@???@>?`???>????????>?????????@?@????????>?????????????????@????????>????????>?????????@>@?p????`>=>????>??p????P=>?p???>>???p=???????`?`???`?`??????????????>?????????@?@????????>?????????????????@????????>????????>?????????@>?p??????p?0????? ???????`>? ?????`???>?0?????????????0>????????>?????????@?@????????>?????????????????@????????>????????>?????????@=>?`???????????????@>>????p=>???>>?@?????????@>????????>?????????@?@????????>?????????????????@????????p????????>?????????@>?@??????????? >@? ?????@??? >?`???????`>?`????????0=?`???????? ?@????????>?????????????????@>???????>????????>?????????@>?@????????? >>????p=>???>>?@???????????@>??????????0>>?P????????>?@????????>?????????????????@>?p??????? ????????>?????????@>?P?????????????0>?@???>? ???@>? ???????????????0>=?`??????????P?@?`??????????0?@????????@???????? ?????????????????`??????P????????????????? ????????@????????@>??p?????????????????`>=>????`>???>??????`>?@???@>?`?????>?P???????????????????? =?@????????????????????????????????????????????p?0>?????????????????????????@>??????`?>????>? ?p?????>@?@???>????`=?`??`>?@???@>?`??`=>?0???????????????p? >?@???????????????????????????????????????????????p?=?????????????????????????@?0???@>>????=>?`??>>????`=?p??>>>?@???@>>>>?`????????@>>@?@????????@???????? ?????????????????`??????P??????????@????????? ????????@????????@=?>@>????>??`???>>???p=?@???@?@?????????@????????>?????????????????@>?p????????>@????????>?????????@>????>????@?`????@???@?@?????????@????????>?????????????????@>????????>????????>?????????@>????=?`???>>???>>??>?@?????????@????????>?????????????????@????????>????????>?????????@>?????????@?@???0?@?????????@????????>?????????????????@????????>????????>?????????@=?p???>>???>?@?????????@????????>?????????????????@????????>????????>?????????@????? ? ???P?@?????????@????????>?????????????????@????????>????????>?????????@>?p???>>???>?@?????????@????????>?????????????????@????????>????????>?????????@? ????? ???`?@?????????@????????>?????????????????@????????>????????>?????????@>????p==?p????@?????????@????????>?????????????????@????????>????????>?????????@? ????????p=?@?????????@????????>?????????????????@????????>????????>?????????@>????p=?`??? ?@?????????@????????>?????????????????@????????>????????>?????????@?@???>>???>?@?????????@????????>?????????????????@????????>????????>?????????@>????`?P???0?@???>yara-2.0.0/libyara/000077500000000000000000000000001225703323600140735ustar00rootroot00000000000000yara-2.0.0/libyara/Makefile.am000066400000000000000000000012501225703323600161250ustar00rootroot00000000000000AM_YFLAGS=-d AM_CFLAGS=-O4 -Wall -std=gnu99 ACLOCAL_AMFLAGS=-I m4 include_HEADERS = yara.h lib_LTLIBRARIES = libyara.la libyara_la_SOURCES = \ ahocorasick.c \ ahocorasick.h \ arena.c \ arena.h \ atoms.c \ atoms.h \ compiler.c \ compiler.h \ elf.h \ exec.c \ exec.h \ exefiles.c \ exefiles.h \ filemap.c \ filemap.h \ grammar.y \ hash.c \ hash.h \ hex_grammar.y \ hex_lexer.h \ hex_lexer.l \ lexer.h \ lexer.l \ libyara.c \ mem.c \ mem.h \ parser.c \ parser.h \ pe.h \ proc.c \ proc.h \ re.c \ re.h \ re_grammar.y \ re_lexer.h \ re_lexer.l \ rules.c \ rules.h \ sizedstr.h \ utils.c \ utils.h yara-2.0.0/libyara/ahocorasick.c000066400000000000000000000344531225703323600165360ustar00rootroot00000000000000/* Copyright (c) 2013. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #include #include #include #include "arena.h" #include "atoms.h" #include "mem.h" #include "utils.h" #include "yara.h" #define MAX_TABLE_BASED_STATES_DEPTH 1 #ifdef _MSC_VER #define inline __inline #endif #ifndef min #define min(x, y) ((x < y) ? (x) : (y)) #endif #ifndef max #define max(x, y) ((x > y) ? (x) : (y)) #endif typedef struct _QUEUE_NODE { YR_AC_STATE* value; struct _QUEUE_NODE* previous; struct _QUEUE_NODE* next; } QUEUE_NODE; typedef struct _QUEUE { QUEUE_NODE* head; QUEUE_NODE* tail; } QUEUE; // // _yr_ac_queue_push // // Pushes a state in a queue. // // Args: // QUEUE* queue - The queue // YR_AC_STATE* state - The state // // Returns: // ERROR_SUCCESS if succeed or the corresponding error code otherwise. // int _yr_ac_queue_push( QUEUE* queue, YR_AC_STATE* value) { QUEUE_NODE* pushed_node; pushed_node = yr_malloc(sizeof(QUEUE_NODE)); if (pushed_node == NULL) return ERROR_INSUFICIENT_MEMORY; pushed_node->previous = queue->tail; pushed_node->next = NULL; pushed_node->value = value; if (queue->tail != NULL) queue->tail->next = pushed_node; else // queue is empty queue->head = pushed_node; queue->tail = pushed_node; return ERROR_SUCCESS; } // // _yr_ac_queue_pop // // Pops a state from a queue. // // Args: // QUEUE* queue - The queue // // Returns: // Pointer to the poped state. // YR_AC_STATE* _yr_ac_queue_pop( QUEUE* queue) { YR_AC_STATE* result; QUEUE_NODE* popped_node; if (queue->head == NULL) return NULL; popped_node = queue->head; queue->head = popped_node->next; if (queue->head) queue->head->previous = NULL; else // queue is empty queue->tail = NULL; result = popped_node->value; yr_free(popped_node); return result; } // // _yr_ac_queue_is_empty // // Checks if a queue is empty. // // Args: // QUEUE* queue - The queue // // Returns: // TRUE if queue is empty, FALSE otherwise. // int _yr_ac_queue_is_empty( QUEUE* queue) { return queue->head == NULL; } YR_AC_STATE* _yr_ac_next_transition( YR_AC_STATE* state, YR_AC_STATE_TRANSITION* transition) { int i; YR_AC_TABLE_BASED_STATE* table_based_state; if (state->depth <= MAX_TABLE_BASED_STATES_DEPTH) { table_based_state = (YR_AC_TABLE_BASED_STATE*) state; for (i = transition->input + 1; i < 256; i++) { if (table_based_state->transitions[i].state != NULL) { transition->state = table_based_state->transitions[i].state; transition->input = i; transition->next = NULL; return transition->state; } } } else { if (transition->next != NULL) { transition->state = transition->next->state; transition->input = transition->next->input; transition->next = transition->next->next; return transition->state; } } return NULL; } YR_AC_STATE* _yr_ac_first_transition( YR_AC_STATE* state, YR_AC_STATE_TRANSITION* transition) { int i; YR_AC_LIST_BASED_STATE* list_based_state; YR_AC_TABLE_BASED_STATE* table_based_state; if (state->depth <= MAX_TABLE_BASED_STATES_DEPTH) { table_based_state = (YR_AC_TABLE_BASED_STATE*) state; for (i = 0; i < 256; i++) { if (table_based_state->transitions[i].state != NULL) { transition->state = table_based_state->transitions[i].state; transition->input = i; transition->next = NULL; return transition->state; } } } else { list_based_state = (YR_AC_LIST_BASED_STATE*) state; if (list_based_state->transitions != NULL) { transition->state = list_based_state->transitions->state; transition->input = list_based_state->transitions->input; transition->next = list_based_state->transitions->next; return transition->state; } } return NULL; } // // yr_ac_next_state // // Given an automaton state and an input symbol, returns the new state // after reading the input symbol. // // Args: // YR_AC_STATE* state - Automaton state // uint8_t input - Input symbol // // Returns: // Pointer to the next automaton state. // YR_AC_STATE* yr_ac_next_state( YR_AC_STATE* state, uint8_t input) { YR_AC_STATE_TRANSITION* transition; if (state->depth <= MAX_TABLE_BASED_STATES_DEPTH) { return ((YR_AC_TABLE_BASED_STATE*) state)->transitions[input].state; } else { transition = ((YR_AC_LIST_BASED_STATE*) state)->transitions; while (transition != NULL) { if (transition->input == input) return transition->state; transition = transition->next; } return NULL; } } // // _yr_ac_create_state // // Creates a new automaton state, the automaton will transition from // the given state to the new state after reading the input symbol. // // Args: // YR_ARENA* arena - Automaton's arena // YR_AC_STATE* state - Origin state // uint8_t input - Input symbol // // Returns: // YR_AC_STATE* pointer to the newly allocated state or NULL in case // of error. YR_AC_STATE* _yr_ac_create_state( YR_ARENA* arena, YR_AC_STATE* state, uint8_t input) { int result; YR_AC_STATE* new_state; YR_AC_LIST_BASED_STATE* list_based_state; YR_AC_TABLE_BASED_STATE* table_based_state; YR_AC_STATE_TRANSITION* new_transition; if (state->depth < MAX_TABLE_BASED_STATES_DEPTH) { result = yr_arena_allocate_struct( arena, sizeof(YR_AC_TABLE_BASED_STATE), (void**) &new_state, offsetof(YR_AC_TABLE_BASED_STATE, failure), offsetof(YR_AC_TABLE_BASED_STATE, matches), EOL); } else { result = yr_arena_allocate_struct( arena, sizeof(YR_AC_LIST_BASED_STATE), (void**) &new_state, offsetof(YR_AC_LIST_BASED_STATE, failure), offsetof(YR_AC_LIST_BASED_STATE, matches), offsetof(YR_AC_LIST_BASED_STATE, transitions), EOL); } if (result != ERROR_SUCCESS) return NULL; if (state->depth <= MAX_TABLE_BASED_STATES_DEPTH) { result = yr_arena_make_relocatable( arena, state, offsetof(YR_AC_TABLE_BASED_STATE, transitions[input]), EOL); if (result != ERROR_SUCCESS) return NULL; table_based_state = (YR_AC_TABLE_BASED_STATE*) state; table_based_state->transitions[input].state = new_state; } else { result = yr_arena_allocate_struct( arena, sizeof(YR_AC_STATE_TRANSITION), (void**) &new_transition, offsetof(YR_AC_STATE_TRANSITION, state), offsetof(YR_AC_STATE_TRANSITION, next), EOL); if (result != ERROR_SUCCESS) return NULL; list_based_state = (YR_AC_LIST_BASED_STATE*) state; new_transition->input = input; new_transition->state = new_state; new_transition->next = list_based_state->transitions; list_based_state->transitions = new_transition; } new_state->depth = state->depth + 1; return new_state; } // // yr_ac_create_failure_links // // Create failure links for each automaton state. This function must // be called after all the strings have been added to the automaton. // void yr_ac_create_failure_links( YR_ARENA* arena, YR_AC_AUTOMATON* automaton) { YR_AC_STATE_TRANSITION transition; YR_AC_STATE* current_state; YR_AC_STATE* failure_state; YR_AC_STATE* temp_state; YR_AC_STATE* state; YR_AC_STATE* transition_state; YR_AC_STATE* root_state; YR_AC_MATCH* match; QUEUE queue; queue.head = NULL; queue.tail = NULL; root_state = automaton->root; // Set the failure link of root state to itself. root_state->failure = root_state; // Push root's children and set their failure link to root. state = _yr_ac_first_transition(root_state, &transition); while (state != NULL) { _yr_ac_queue_push(&queue, state); state->failure = root_state; state = _yr_ac_next_transition(root_state, &transition); } // Traverse the trie in BFS order calculating the failure link // for each state. while (!_yr_ac_queue_is_empty(&queue)) { current_state = _yr_ac_queue_pop(&queue); match = current_state->matches; if (match != NULL) { while (match->next != NULL) match = match->next; if (match->backtrack > 0) match->next = root_state->matches; } else { current_state->matches = root_state->matches; } transition_state = _yr_ac_first_transition( current_state, &transition); while (transition_state != NULL) { _yr_ac_queue_push(&queue, transition_state); failure_state = current_state->failure; while (1) { temp_state = yr_ac_next_state( failure_state, transition.input); if (temp_state != NULL) { transition_state->failure = temp_state; if (transition_state->matches == NULL) { transition_state->matches = temp_state->matches; } else { match = transition_state->matches; while (match != NULL && match->next != NULL) match = match->next; match->next = temp_state->matches; } break; } else { if (failure_state == root_state) { transition_state->failure = root_state; break; } else { failure_state = failure_state->failure; } } } // while(1) transition_state = _yr_ac_next_transition( current_state, &transition); } } // while(!__yr_ac_queue_is_empty(&queue)) } // // yr_ac_create_automaton // // Creates a new automaton // int yr_ac_create_automaton( YR_ARENA* arena, YR_AC_AUTOMATON** automaton) { int result; YR_AC_STATE* root_state; result = yr_arena_allocate_struct( arena, sizeof(YR_AC_AUTOMATON), (void**) automaton, offsetof(YR_AC_AUTOMATON, root), EOL); if (result != ERROR_SUCCESS) return result; result = yr_arena_allocate_struct( arena, sizeof(YR_AC_TABLE_BASED_STATE), (void**) &root_state, offsetof(YR_AC_TABLE_BASED_STATE, failure), offsetof(YR_AC_TABLE_BASED_STATE, matches), EOL); if (result != ERROR_SUCCESS) return result; (*automaton)->root = root_state; root_state->depth = 0; root_state->matches = NULL; return result; } int yr_ac_add_string( YR_ARENA* arena, YR_AC_AUTOMATON* automaton, YR_STRING* string, YR_ATOM_LIST_ITEM* atom) { int result = ERROR_SUCCESS; int i; YR_AC_STATE* state; YR_AC_STATE* next_state; YR_AC_MATCH* new_match; // For each atom create the states in the automaton. while (atom != NULL) { state = automaton->root; for(i = 0; i < atom->atom_length; i++) { next_state = yr_ac_next_state( state, atom->atom[i]); if (next_state == NULL) { next_state = _yr_ac_create_state( arena, state, atom->atom[i]); if (next_state == NULL) return ERROR_INSUFICIENT_MEMORY; } state = next_state; } result = yr_arena_allocate_struct( arena, sizeof(YR_AC_MATCH), (void**) &new_match, offsetof(YR_AC_MATCH, string), offsetof(YR_AC_MATCH, forward_code), offsetof(YR_AC_MATCH, backward_code), offsetof(YR_AC_MATCH, next), EOL); if (result == ERROR_SUCCESS) { new_match->backtrack = state->depth + atom->backtrack; new_match->string = string; new_match->forward_code = atom->forward_code; new_match->backward_code = atom->backward_code; new_match->next = state->matches; state->matches = new_match; } else { break; } atom = atom->next; } return result; } // // _yr_ac_print_automaton_state // // Prints automaton state for debug purposes. This function is invoked by // yr_ac_print_automaton, is not intended to be used stand-alone. // void _yr_ac_print_automaton_state( YR_AC_STATE* state) { int i; int child_count; YR_AC_STATE_TRANSITION transition; YR_AC_MATCH* match; YR_AC_STATE* child_state; for (i = 0; i < state->depth; i++) printf(" "); child_state = _yr_ac_first_transition(state, &transition); child_count = 0; while(child_state != NULL) { child_count++; child_state = _yr_ac_next_transition(state, &transition); } printf("%p childs:%d depth:%d failure:%p", state, child_count, state->depth, state->failure); match = state->matches; while (match != NULL) { printf("\n"); for (i = 0; i < state->depth + 1; i++) printf(" "); printf("%s = ", match->string->identifier); if (STRING_IS_HEX(match->string)) { printf("{ "); for (i = 0; i < min(match->string->length, 10); i++) printf("%02x ", match->string->string[i]); printf("}"); } else if (STRING_IS_REGEXP(match->string)) { printf("/"); for (i = 0; i < min(match->string->length, 10); i++) printf("%c", match->string->string[i]); printf("/"); } else { printf("\""); for (i = 0; i < min(match->string->length, 10); i++) printf("%c", match->string->string[i]); printf("\""); } match = match->next; } printf("\n"); child_state = _yr_ac_first_transition(state, &transition); while(child_state != NULL) { _yr_ac_print_automaton_state(child_state); child_state = _yr_ac_next_transition(state, &transition); } } // // yr_ac_print_automaton // // Prints automaton for debug purposes. // void yr_ac_print_automaton(YR_AC_AUTOMATON* automaton) { printf("-------------------------------------------------------\n"); _yr_ac_print_automaton_state(automaton->root); printf("-------------------------------------------------------\n"); } yara-2.0.0/libyara/ahocorasick.h000066400000000000000000000021241225703323600165310ustar00rootroot00000000000000/* Copyright (c) 2013. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #ifndef _AHOCORASICK_H #define _AHOCORASICK_H #include "yara.h" int yr_ac_create_automaton( YR_ARENA* arena, YR_AC_AUTOMATON** automaton); int yr_ac_add_string( YR_ARENA* arena, YR_AC_AUTOMATON* automaton, YR_STRING* string, YR_ATOM_LIST_ITEM* atom); YR_AC_STATE* yr_ac_next_state( YR_AC_STATE* state, uint8_t input); void yr_ac_create_failure_links( YR_ARENA* arena, YR_AC_AUTOMATON* automaton); void yr_ac_print_automaton( YR_AC_AUTOMATON* automaton); #endif yara-2.0.0/libyara/arena.c000066400000000000000000000544671225703323600153450ustar00rootroot00000000000000/* Copyright (c) 2013. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ /* This module implements a structure I've called "arena". An arena is a data container composed of a set of pages. The arena grows automatically when needed by adding new pages to hold new data. Arenas can be saved and loaded from files. */ #include #include #include #include #include #include #include "arena.h" #include "config.h" #include "mem.h" #include "utils.h" #include "yara.h" #define ARENA_FILE_VERSION 1 typedef struct _ARENA_FILE_HEADER { char magic[4]; uint32_t size; uint8_t version; } ARENA_FILE_HEADER; #define free_space(page) \ ((page)->size - (page)->used) // // _yr_arena_new_page // // Creates a new arena page of a given size // // Args: // size_t size - Size of the page // // Returns: // A pointer to the newly created YR_ARENA_PAGE structure // YR_ARENA_PAGE* _yr_arena_new_page( size_t size) { YR_ARENA_PAGE* new_page; new_page = (YR_ARENA_PAGE*) yr_malloc(sizeof(YR_ARENA_PAGE)); if (new_page == NULL) return NULL; new_page->address = yr_malloc(size); if (new_page->address == NULL) { yr_free(new_page); return NULL; } new_page->size = size; new_page->used = 0; new_page->next = NULL; new_page->prev = NULL; new_page->reloc_list_head = NULL; new_page->reloc_list_tail = NULL; return new_page; } // // _yr_arena_page_for_address // // Returns the page within he arena where an address reside. // // Args: // YR_ARENA* arena - Pointer to the arena // void* address - Address to be located // // Returns: // A pointer the corresponding YR_ARENA_PAGE structure where the address // resides. // YR_ARENA_PAGE* _yr_arena_page_for_address( YR_ARENA* arena, void* address) { YR_ARENA_PAGE* page; // Most of the times this function is called with an address within // the current page, let's check the current page first to avoid // looping through the page list. page = arena->current_page; if (page != NULL && (uint8_t*) address >= page->address && (uint8_t*) address < page->address + page->used) return page; page = arena->page_list_head; while (page != NULL) { if ((uint8_t*) address >= page->address && (uint8_t*) address < page->address + page->used) return page; page = page->next; } return NULL; } // // _yr_arena_make_relocatable // // Tells the arena that certain addresses contains a relocatable pointer. // // Args: // YR_ARENA* arena - Pointer the arena // void* address - Base address // va_list offsets - List of offsets relative to base address // // Returns: // ERROR_SUCCESS if succeed or the corresponding error code otherwise. // int _yr_arena_make_relocatable( YR_ARENA* arena, void* base, va_list offsets) { YR_RELOC* reloc; YR_ARENA_PAGE* page; size_t offset; size_t base_offset; int result = ERROR_SUCCESS; page = _yr_arena_page_for_address(arena, base); assert(page != NULL); base_offset = (uint8_t*) base - page->address; offset = va_arg(offsets, size_t); while (offset != -1) { assert(base_offset + offset <= page->used - sizeof(int64_t)); reloc = yr_malloc(sizeof(YR_RELOC)); if (reloc == NULL) return ERROR_INSUFICIENT_MEMORY; reloc->offset = base_offset + offset; reloc->next = NULL; if (page->reloc_list_head == NULL) page->reloc_list_head = reloc; if (page->reloc_list_tail != NULL) page->reloc_list_tail->next = reloc; page->reloc_list_tail = reloc; offset = va_arg(offsets, size_t); } return result; } // // yr_arena_create // // Creates a new arena. // // Args: // size_t initial_size - Initial size // int flags - Flags // YR_ARENA** arena - Address where a pointer to the new arena will be // written to. // // Returns: // ERROR_SUCCESS if succeed or the corresponding error code otherwise. // int yr_arena_create( size_t initial_size, int flags, YR_ARENA** arena) { YR_ARENA* new_arena; YR_ARENA_PAGE* new_page; *arena = NULL; new_arena = (YR_ARENA*) yr_malloc(sizeof(YR_ARENA)); if (new_arena == NULL) return ERROR_INSUFICIENT_MEMORY; new_page = _yr_arena_new_page(initial_size); if (new_page == NULL) { yr_free(new_arena); return ERROR_INSUFICIENT_MEMORY; } new_arena->page_list_head = new_page; new_arena->current_page = new_page; new_arena->flags = flags | ARENA_FLAGS_COALESCED; *arena = new_arena; return ERROR_SUCCESS; } // // yr_arena_destroy // // Destroys an arena releasing its resource. // // Args: // YR_ARENA* arena - Pointer to the arena. // // Returns: // ERROR_SUCCESS if succeed or the corresponding error code otherwise. // void yr_arena_destroy( YR_ARENA* arena) { YR_RELOC* reloc; YR_RELOC* next_reloc; YR_ARENA_PAGE* page; YR_ARENA_PAGE* next_page; page = arena->page_list_head; while(page != NULL) { next_page = page->next; reloc = page->reloc_list_head; while (reloc != NULL) { next_reloc = reloc->next; yr_free(reloc); reloc = next_reloc; } yr_free(page->address); yr_free(page); page = next_page; } yr_free(arena); } // // yr_arena_base_address // // Returns the base address for the arena. // // Args: // YR_ARENA* arena - Pointer to the arena. // // Returns: // A pointer // void* yr_arena_base_address( YR_ARENA* arena) { return arena->page_list_head->address; } // // yr_arena_next_address // // Given an address and an offset, returns the address where // address + offset resides. The arena is a collection of non-contigous // regions of memory (pages), if address is pointing at the end of a page, // address + offset could cross the page boundary and point at somewhere // within the next page, this function handles these situations. It works // also with negative offsets. // // Args: // YR_ARENA* arena - Pointer to the arena. // void* address - Base address. // int offset - Offset. // // Returns: // A pointer // void* yr_arena_next_address( YR_ARENA* arena, void* address, int offset) { YR_ARENA_PAGE* page; page = _yr_arena_page_for_address(arena, address); assert(page != NULL); if ((uint8_t*) address + offset >= page->address && (uint8_t*) address + offset < page->address + page->used) { return (uint8_t*) address + offset; } if (offset > 0) { offset -= page->address + page->used - (uint8_t*) address; page = page->next; while (page != NULL) { if (offset < page->used) return page->address + offset; offset -= page->used; page = page->next; } } else { offset += page->used; page = page->prev; while (page != NULL) { if (offset < page->used) return page->address + page->used + offset; offset += page->used; page = page->prev; } } return NULL; } // // yr_arena_coalesce // // Coalesce the arena into a single page. This is a required step before // saving the arena to a file. // // Args: // YR_ARENA* arena - Pointer to the arena. // // Returns: // ERROR_SUCCESS if succeed or the corresponding error code otherwise. // int yr_arena_coalesce( YR_ARENA* arena) { YR_ARENA_PAGE* page; YR_ARENA_PAGE* big_page; YR_ARENA_PAGE* next_page; YR_RELOC* reloc; uint8_t** reloc_address; uint8_t* reloc_target; int total_size = 0; page = arena->page_list_head; while(page != NULL) { total_size += page->size; page = page->next; } // Create a new page that will contain the entire arena. big_page = _yr_arena_new_page(total_size); if (big_page == NULL) return ERROR_INSUFICIENT_MEMORY; // Copy data from current pages to the big page and adjust relocs. page = arena->page_list_head; while (page != NULL) { page->new_address = big_page->address + big_page->used; memcpy(page->new_address, page->address, page->used); reloc = page->reloc_list_head; while(reloc != NULL) { reloc->offset += big_page->used; reloc = reloc->next; } if (big_page->reloc_list_head == NULL) big_page->reloc_list_head = page->reloc_list_head; if (big_page->reloc_list_tail != NULL) big_page->reloc_list_tail->next = page->reloc_list_head; if (page->reloc_list_tail != NULL) big_page->reloc_list_tail = page->reloc_list_tail; big_page->used += page->used; page = page->next; } // Relocate pointers. reloc = big_page->reloc_list_head; while (reloc != NULL) { reloc_address = (uint8_t**) (big_page->address + reloc->offset); reloc_target = *reloc_address; if (reloc_target != NULL) { page = _yr_arena_page_for_address(arena, reloc_target); assert(page != NULL); *reloc_address = page->new_address + (reloc_target - page->address); } reloc = reloc->next; } // Release current pages. page = arena->page_list_head; while(page != NULL) { next_page = page->next; yr_free(page->address); yr_free(page); page = next_page; } arena->page_list_head = big_page; arena->current_page = big_page; arena->flags |= ARENA_FLAGS_COALESCED; return ERROR_SUCCESS; } // // yr_arena_allocate_memory // // Allocates memory within the arena. // // Args: // YR_ARENA* arena - Pointer to the arena. // size_t size - Size of the region to be allocated. // void** allocated_memory - Address of a pointer to newly allocated // region. // Returns: // ERROR_SUCCESS if succeed or the corresponding error code otherwise. // int yr_arena_allocate_memory( YR_ARENA* arena, size_t size, void** allocated_memory) { size_t new_page_size; void* new_page_address; YR_ARENA_PAGE* new_page; if (size > free_space(arena->current_page)) { // Requested space is bigger than current page's empty space, // lets calculate the size for a new page. new_page_size = arena->current_page->size * 2; while (new_page_size < size) new_page_size *= 2; if (arena->current_page->used == 0) { // Current page is not used at all, it can be reallocated. new_page_address = yr_realloc( arena->current_page->address, new_page_size); if (new_page_address == NULL) return ERROR_INSUFICIENT_MEMORY; arena->current_page->address = new_page_address; arena->current_page->size = new_page_size; } else { if (arena->flags & ARENA_FLAGS_FIXED_SIZE) return ERROR_INSUFICIENT_MEMORY; new_page = _yr_arena_new_page(new_page_size); if (new_page == NULL) return ERROR_INSUFICIENT_MEMORY; new_page->prev = arena->current_page; arena->current_page->next = new_page; arena->current_page = new_page; arena->flags &= ~ARENA_FLAGS_COALESCED; } } *allocated_memory = arena->current_page->address + \ arena->current_page->used; arena->current_page->used += size; return ERROR_SUCCESS; } // // yr_arena_allocate_struct // // Allocates a structure within the arena. This function is similar to // yr_arena_allocate_memory but additionaly receives a variable-length // list of offsets within the structure where pointers reside. This allows // the arena to keep track of pointers that must be adjusted when memory // is relocated. This is an example on how to invoke this function: // // yr_arena_allocate_struct( // arena, // sizeof(MY_STRUCTURE), // (void**) &my_structure_ptr, // offsetof(MY_STRUCTURE, field_1), // offsetof(MY_STRUCTURE, field_2), // .. // offsetof(MY_STRUCTURE, field_N), // EOL); // // Args: // YR_ARENA* arena - Pointer to the arena. // size_t size - Size of the region to be allocated. // void** allocated_memory - Address of a pointer to newly allocated // region. // ... - Variable number of offsets relative to beginning of // the struct. Offsets are if type size_t. // // Returns: // ERROR_SUCCESS if succeed or the corresponding error code otherwise. // int yr_arena_allocate_struct( YR_ARENA* arena, size_t size, void** allocated_memory, ...) { int result; va_list offsets; va_start(offsets, allocated_memory); result = yr_arena_allocate_memory(arena, size, allocated_memory); if (result == ERROR_SUCCESS) result = _yr_arena_make_relocatable(arena, *allocated_memory, offsets); va_end(offsets); memset(*allocated_memory, 0, size); return result; } // // yr_arena_make_relocatable // // Tells the arena that certain addresses contains a relocatable pointer. // // Args: // YR_ARENA* arena - Pointer to the arena. // void* base - Address within the arena. // ... - Variable number of size_t arguments with offsets // relative to base. // // Returns: // ERROR_SUCCESS if succeed or the corresponding error code otherwise. // int yr_arena_make_relocatable( YR_ARENA* arena, void* base, ...) { int result; va_list offsets; va_start(offsets, base); result = _yr_arena_make_relocatable(arena, base, offsets); va_end(offsets); return result; } // // yr_arena_write_data // // Writes data to the arena. // // Args: // YR_ARENA* arena - Pointer to the arena. // void* data - Pointer to data to be written. // size_t size - Size of data. // void** written_data - Address where a pointer to the written data will // be returned. // // Returns: // ERROR_SUCCESS if succeed or the corresponding error code otherwise. // int yr_arena_write_data( YR_ARENA* arena, void* data, size_t size, void** written_data) { void* output; int result; if (size > free_space(arena->current_page)) { result = yr_arena_allocate_memory(arena, size, &output); if (result != ERROR_SUCCESS) return result; } else { output = arena->current_page->address + arena->current_page->used; arena->current_page->used += size; } memcpy(output, data, size); if (written_data != NULL) *written_data = output; return ERROR_SUCCESS; } // // yr_arena_write_string // // Writes string to the arena. // // Args: // YR_ARENA* arena - Pointer to the arena. // const char* string - Pointer to string to be written. // void** written_string - Address where a pointer to the written data will // be returned. // // Returns: // ERROR_SUCCESS if succeed or the corresponding error code otherwise. // int yr_arena_write_string( YR_ARENA* arena, const char* string, char** written_string) { return yr_arena_write_data( arena, (void*) string, strlen(string) + 1, (void**) written_string); } // // yr_arena_append // // Appends source_arena to target_arena. This operation destroys source_arena, // after returning any pointer to source_arena is no longer valid. // // Args: // YR_ARENA* target_arena - Pointer to target the arena. // YR_ARENA* source_arena - Pointer to source arena. // // Returns: // ERROR_SUCCESS if succeed or the corresponding error code otherwise. // int yr_arena_append( YR_ARENA* target_arena, YR_ARENA* source_arena) { target_arena->current_page->next = source_arena->page_list_head; target_arena->current_page = source_arena->current_page; yr_free(source_arena); return ERROR_SUCCESS; } // // yr_arena_duplicate // // Duplicates the arena, making an exact copy. This function requires the // arena to be coalesced. // // Args: // YR_ARENA* arena - Pointer to the arena. // YR_ARENA** duplicated - Address where a pointer to the new arena arena will // be returned. // // Returns: // ERROR_SUCCESS if succeed or the corresponding error code otherwise. // int yr_arena_duplicate( YR_ARENA* arena, YR_ARENA** duplicated) { YR_RELOC* reloc; YR_RELOC* new_reloc; YR_ARENA_PAGE* page; YR_ARENA_PAGE* new_page; YR_ARENA* new_arena; uint8_t** reloc_address; uint8_t* reloc_target; // Only coalesced arenas can be duplicated. assert(arena->flags & ARENA_FLAGS_COALESCED); new_arena = (YR_ARENA*) yr_malloc(sizeof(YR_ARENA)); if (new_arena == NULL) return ERROR_INSUFICIENT_MEMORY; page = arena->page_list_head; new_page = _yr_arena_new_page(page->size); if (new_page == NULL) { yr_free(new_arena); return ERROR_INSUFICIENT_MEMORY; } memcpy(new_page->address, page->address, page->size); new_page->used = page->used; reloc = page->reloc_list_head; while (reloc != NULL) { new_reloc = yr_malloc(sizeof(YR_RELOC)); if (new_reloc == NULL) return ERROR_INSUFICIENT_MEMORY; new_reloc->offset = reloc->offset; new_reloc->next = NULL; if (new_page->reloc_list_head == NULL) new_page->reloc_list_head = new_reloc; if (new_page->reloc_list_tail != NULL) new_page->reloc_list_tail->next = new_reloc; new_page->reloc_list_tail = new_reloc; reloc_address = (uint8_t**) (new_page->address + new_reloc->offset); reloc_target = *reloc_address; if (reloc_target != NULL) { assert(reloc_target >= page->address); assert(reloc_target < page->address + page->used); *reloc_address = reloc_target - \ page->address + \ new_page->address; } reloc = reloc->next; } new_arena->page_list_head = new_page; new_arena->current_page = new_page; new_arena->flags |= ARENA_FLAGS_COALESCED; *duplicated = new_arena; return ERROR_SUCCESS; } // // yr_arena_save // // Saves the arena into a file. If the file exists its overwritten. This // function requires the arena to be coalesced. // // Args: // YR_ARENA* arena - Pointer to the arena. // const char* filename - File path. // // Returns: // ERROR_SUCCESS if succeed or the corresponding error code otherwise. // int yr_arena_save( YR_ARENA* arena, const char* filename) { YR_ARENA_PAGE* page; YR_RELOC* reloc; FILE* fh; ARENA_FILE_HEADER header; int32_t end_marker = -1; uint8_t** reloc_address; uint8_t* reloc_target; // Only coalesced arenas can be saved. assert(arena->flags & ARENA_FLAGS_COALESCED); fh = fopen(filename, "w"); if (fh == NULL) return ERROR_COULD_NOT_OPEN_FILE; page = arena->page_list_head; reloc = page->reloc_list_head; // Convert pointers to offsets before saving. while (reloc != NULL) { reloc_address = (uint8_t**) (page->address + reloc->offset); reloc_target = *reloc_address; if (reloc_target != NULL) { assert(reloc_target >= page->address); assert(reloc_target < page->address + page->used); *reloc_address = (void*) (*reloc_address - page->address); } else { *reloc_address = (void*) (size_t) 0xFFFABADA; } reloc = reloc->next; } header.magic[0] = 'Y'; header.magic[1] = 'A'; header.magic[2] = 'R'; header.magic[3] = 'A'; header.size = page->size; header.version = ARENA_FILE_VERSION; fwrite(&header, sizeof(header), 1, fh); fwrite(page->address, sizeof(uint8_t), header.size, fh); reloc = page->reloc_list_head; // Convert offsets back to pointers. while (reloc != NULL) { fwrite(&reloc->offset, sizeof(reloc->offset), 1, fh); reloc_address = (uint8_t**) (page->address + reloc->offset); reloc_target = *reloc_address; if (reloc_target != (void*) (size_t) 0xFFFABADA) *reloc_address += (size_t) page->address; else *reloc_address = 0; reloc = reloc->next; } fwrite(&end_marker, sizeof(end_marker), 1, fh); fclose(fh); return ERROR_SUCCESS; } // // yr_arena_load // // Loads an arena from a file. // // Args: // const char* filename - File path. // YR_ARENA** - Address where a pointer to the loaded arena // will be returned. // // Returns: // ERROR_SUCCESS if succeed or the corresponding error code otherwise. // int yr_arena_load( const char* filename, YR_ARENA** arena) { FILE* fh; YR_ARENA_PAGE* page; YR_ARENA* new_arena; ARENA_FILE_HEADER header; int32_t reloc_offset; uint8_t** reloc_address; uint8_t* reloc_target; long file_size; int result; fh = fopen(filename, "rb"); if (fh == NULL) return ERROR_COULD_NOT_OPEN_FILE; fseek(fh, 0, SEEK_END); file_size = ftell(fh); fseek(fh, 0, SEEK_SET); if (fread(&header, sizeof(header), 1, fh) != 1) { fclose(fh); return ERROR_INVALID_FILE; } if (header.magic[0] != 'Y' || header.magic[1] != 'A' || header.magic[2] != 'R' || header.magic[3] != 'A') { fclose(fh); return ERROR_INVALID_FILE; } if (header.size >= file_size) { fclose(fh); return ERROR_CORRUPT_FILE; } if (header.version > ARENA_FILE_VERSION) { fclose(fh); return ERROR_UNSUPPORTED_FILE_VERSION; } result = yr_arena_create(header.size, 0, &new_arena); if (result != ERROR_SUCCESS) { fclose(fh); return result; } page = new_arena->current_page; if (fread(page->address, header.size, 1, fh) != 1) { fclose(fh); yr_arena_destroy(new_arena); return ERROR_CORRUPT_FILE; } page->used = header.size; if (fread(&reloc_offset, sizeof(reloc_offset), 1, fh) != 1) { fclose(fh); yr_arena_destroy(new_arena); return ERROR_CORRUPT_FILE; } while (reloc_offset != -1) { yr_arena_make_relocatable(new_arena, page->address, reloc_offset, EOL); reloc_address = (uint8_t**) (page->address + reloc_offset); reloc_target = *reloc_address; if (reloc_target != (uint8_t*) (size_t) 0xFFFABADA) *reloc_address += (size_t) page->address; else *reloc_address = 0; if (fread(&reloc_offset, sizeof(reloc_offset), 1, fh) != 1) { fclose(fh); yr_arena_destroy(new_arena); return ERROR_CORRUPT_FILE; } } fclose(fh); *arena = new_arena; return ERROR_SUCCESS; } yara-2.0.0/libyara/arena.h000066400000000000000000000035121225703323600153330ustar00rootroot00000000000000/* Copyright (c) 2013. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #ifndef _ARENA_H #define _ARENA_H #include #include #include "yara.h" #define ARENA_FLAGS_FIXED_SIZE 1 #define ARENA_FLAGS_COALESCED 2 int yr_arena_create( size_t initial_size, int flags, YR_ARENA** arena); void yr_arena_destroy( YR_ARENA* arena); void* yr_arena_base_address( YR_ARENA* arena); void* yr_arena_next_address( YR_ARENA* arena, void* address, int offset); int yr_arena_coalesce( YR_ARENA* arena); int yr_arena_allocate_memory( YR_ARENA* arena, size_t size, void** allocated_memory); int yr_arena_allocate_struct( YR_ARENA* arena, size_t size, void** allocated_memory, ...); int yr_arena_make_relocatable( YR_ARENA* arena, void* base, ...); int yr_arena_write_data( YR_ARENA* arena, void* data, size_t size, void** written_data); int yr_arena_write_string( YR_ARENA* arena, const char* string, char** written_string); int yr_arena_append( YR_ARENA* target_arena, YR_ARENA* source_arena); int yr_arena_save( YR_ARENA* arena, const char* filename); int yr_arena_load( const char* filename, YR_ARENA** arena); int yr_arena_duplicate( YR_ARENA* arena, YR_ARENA** duplicated); #endif yara-2.0.0/libyara/atoms.c000066400000000000000000000640111225703323600153640ustar00rootroot00000000000000/* Copyright (c) 2013. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ /* This module handles atom extraction from regexps and hex strings. Atoms are undivided substrings found in a regexps and hex strings. Let's consider this hex string: { 01 02 03 04 05 ?? 06 07 08 [1-2] 09 0A } In the above string, byte sequences 0102030405, 060708 and 090A are atoms. Similarly, in this regexp: /abc.*ed[0-9]+fgh/ The strings "abc", "ed" and "fgh" are atoms. When searching for regexps/hex strings matching a file, YARA uses these atoms to find locations inside the file where the regexp/hex string could match. If the atom "abc" is found somewhere inside the file, there is a change for /abc.*ed[0-9]+fgh/ to match the file, if "abc" doesn't appear in the file there's no chance for the regexp to match. When the atom is found in the file YARA proceeds to fully evaluate the regexp/hex string to determine if it's actually a match. For each regexp/hex string YARA extracts one or more atoms. Sometimes a single atom is enough (like in the previous example "abc" is enough for finding /abc.*ed[0-9]+fgh/), but sometimes a single atom isn't enough like in the regexp /(abc|efg)/. In this case YARA must search for both "abc" AND "efg" and fully evaluate the regexp whenever one of those atoms is found. In the regexp /Look(at|into)this/ YARA can search for "Look", or search for "this", or search for both "at" and "into". This what we call an atoms tree, because it can be represented by the following tree structure: -OR |- "Look" | |- AND | | | |- "at" | - "into" | - "this" From an atom tree YARA chooses the best combination, trying to minimize the number of required atoms, but also using high quality atoms (long atoms with not too many zeroes and a bit of byte diversity). In the previous example YARA will end up using the "Look" atom alone, but in /a(bcd|efg)h/ atoms "bcd" and "efg" will be used because "a" and "h" are too short. */ #include #include #include "atoms.h" #include "mem.h" #ifndef min #define min(x, y) ((x < y) ? (x) : (y)) #endif #ifndef max #define max(x, y) ((x > y) ? (x) : (y)) #endif #define append_current_leaf_to_node(node) \ if (atom_tree->current_leaf != NULL) \ { \ _yr_atoms_tree_node_append(node, atom_tree->current_leaf); \ atom_tree->current_leaf = NULL; \ } \ // // _yr_atoms_quality // // Returns a numeric value indicating the quality of an atom. The quality // depends on some characteristics of the atom, including its length, number // of zeroes and number of unique distinct bytes. Atom 00 00 has a very low // quality, because it's only two bytes long and both bytes are zeroes. Atom // 01 01 01 01 is better but still not optimal, because the same byte is // repeated. Atom 01 02 03 04 is an optimal one. // // Args: // uint8_t* atom - Pointer to the atom's bytes. // int atom_length - Atom's length. // // Returns: // An integer indicating the atom's quality // int _yr_atoms_quality( uint8_t* atom, int atom_length) { int null_bytes = 0; int unique_bytes = 0; int is_unique; int i, j; for (i = 0; i < atom_length; i++) { if (atom[i] == 0) null_bytes++; is_unique = TRUE; for (j = i + 1; j < atom_length; j++) if (atom[i] == atom[j]) { is_unique = FALSE; break; } if (is_unique) unique_bytes += 1; } return atom_length + unique_bytes - null_bytes; } // // _yr_atoms_min_quality // // Returns the quality for the worst quality atom in a list. // int _yr_atoms_min_quality( YR_ATOM_LIST_ITEM* atom_list) { YR_ATOM_LIST_ITEM* atom; int quality; int min_quality = 100000; if (atom_list == NULL) return 0; atom = atom_list; while (atom != NULL) { quality = _yr_atoms_quality(atom->atom, atom->atom_length); if (quality < min_quality) min_quality = quality; atom = atom->next; } return min_quality; } // // _yr_atoms_tree_node_create // // Creates a new node for an atoms tree. // ATOM_TREE_NODE* _yr_atoms_tree_node_create( uint8_t type) { ATOM_TREE_NODE* new_node; new_node = (ATOM_TREE_NODE*) yr_malloc(sizeof(ATOM_TREE_NODE)); new_node->type = type; new_node->atom_length = 0; new_node->next_sibling = NULL; new_node->children_head = NULL; new_node->children_tail = NULL; new_node->forward_code = NULL; new_node->backward_code = NULL; return new_node; } // // _yr_atoms_tree_node_destroy // // Destroys a node from an atoms tree. // void _yr_atoms_tree_node_destroy( ATOM_TREE_NODE* node) { ATOM_TREE_NODE* child; ATOM_TREE_NODE* next_child; if (node == NULL) return; if (node->type == ATOM_TREE_OR || node->type == ATOM_TREE_AND) { child = node->children_head; while (child != NULL) { next_child = child->next_sibling; _yr_atoms_tree_node_destroy(child); child = next_child; } } yr_free(node); } // // _yr_atoms_tree_node_append // // Appends a new child node to another atoms tree node. // void _yr_atoms_tree_node_append( ATOM_TREE_NODE* dest, ATOM_TREE_NODE* node) { if (dest->children_head == NULL) dest->children_head = node; if (dest->children_tail != NULL) dest->children_tail->next_sibling = node; dest->children_tail = node; } // // _yr_atoms_tree_destroy // // Destroys an atoms tree. // void _yr_atoms_tree_destroy( ATOM_TREE* atom_tree) { _yr_atoms_tree_node_destroy(atom_tree->root_node); yr_free(atom_tree); } // // yr_atoms_list_destroy // // Destroys an atoms list. // void yr_atoms_list_destroy( YR_ATOM_LIST_ITEM* list_head) { YR_ATOM_LIST_ITEM* item = list_head; YR_ATOM_LIST_ITEM* next; while (item != NULL) { next = item->next; yr_free(item); item = next; } } // // yr_atoms_list_destroy // // Concats two atoms lists. // YR_ATOM_LIST_ITEM* _yr_atoms_list_concat( YR_ATOM_LIST_ITEM* list1, YR_ATOM_LIST_ITEM* list2) { YR_ATOM_LIST_ITEM* item; if (list1 == NULL) return list2; item = list1; while (item->next != NULL) { item = item->next; } item->next = list2; return list1; } // // _yr_atoms_choose // // Chooses which atoms from an atoms tree will be used to feed the // Aho-Corasick automaton, and puts them in a list. // int _yr_atoms_choose( ATOM_TREE_NODE* node, YR_ATOM_LIST_ITEM** choosen_atoms) { ATOM_TREE_NODE* child; YR_ATOM_LIST_ITEM* item; YR_ATOM_LIST_ITEM* tail; int i, quality; int max_quality = 0; int min_quality = 10000; *choosen_atoms = NULL; if (node == NULL) return 0; switch (node->type) { case ATOM_TREE_LEAF: item = yr_malloc(sizeof(YR_ATOM_LIST_ITEM)); for (i = 0; i < node->atom_length; i++) item->atom[i] = node->atom[i]; item->atom_length = node->atom_length; item->forward_code = node->forward_code; item->backward_code = node->backward_code; item->backtrack = 0; item->next = NULL; *choosen_atoms = item; return _yr_atoms_quality(node->atom, node->atom_length); case ATOM_TREE_OR: child = node->children_head; while (child != NULL) { quality = _yr_atoms_choose(child, &item); if (quality > max_quality) { max_quality = quality; yr_atoms_list_destroy(*choosen_atoms); *choosen_atoms = item; } else { yr_atoms_list_destroy(item); } child = child->next_sibling; } return max_quality; case ATOM_TREE_AND: child = node->children_head; while (child != NULL) { quality = _yr_atoms_choose(child, &item); if (quality < min_quality) min_quality = quality; tail = item; while (tail->next != NULL) tail = tail->next; tail->next = *choosen_atoms; *choosen_atoms = item; child = child->next_sibling; } return min_quality; } return 0; } // // _yr_atoms_case_combinations // // Returns all combinations of lower and upper cases for a given atom. For // atom "abc" the output would be "abc" "abC" "aBC" and so on. Resulting // atoms are written into the output buffer in this format: // // [size 1] [backtrack 1] [atom 1] ... [size N] [backtrack N] [atom N] [0] // // Notice the zero at the end to indicate where the output ends. // // The caller is responsible of providing a buffer large enough to hold the // returned atoms. // uint8_t* _yr_atoms_case_combinations( uint8_t* atom, int atom_length, int atom_offset, uint8_t* output_buffer) { uint8_t c; uint8_t* new_atom; if (atom_offset + 1 < atom_length) output_buffer = _yr_atoms_case_combinations( atom, atom_length, atom_offset + 1, output_buffer); c = atom[atom_offset]; if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) { // Write atom length. *((int*) output_buffer) = atom_length; output_buffer += sizeof(int); memcpy(output_buffer, atom, atom_length); new_atom = output_buffer; output_buffer += atom_length; // Swap character case. if (c >= 'a' && c <= 'z') new_atom[atom_offset] -= 32; else new_atom[atom_offset] += 32; if (atom_offset + 1 < atom_length) output_buffer = _yr_atoms_case_combinations( new_atom, atom_length, atom_offset + 1, output_buffer); } if (atom_offset == 0) *((int*) output_buffer) = 0; return output_buffer; } #define CASE_COMBINATIONS_BUFFER_SIZE \ MAX_ATOM_LENGTH * MAX_ATOM_LENGTH * MAX_ATOM_LENGTH + \ MAX_ATOM_LENGTH * MAX_ATOM_LENGTH * sizeof(int) + \ sizeof(int) // // _yr_atoms_case_insentive // // For a given list of atoms returns another list of atoms // with every case combination. // int _yr_atoms_case_insentive( YR_ATOM_LIST_ITEM* atoms, YR_ATOM_LIST_ITEM** case_insensitive_atoms) { YR_ATOM_LIST_ITEM* atom; YR_ATOM_LIST_ITEM* new_atom; uint8_t buffer[CASE_COMBINATIONS_BUFFER_SIZE]; uint8_t* atoms_cursor; int i, atom_length; *case_insensitive_atoms = NULL; atom = atoms; while (atom != NULL) { _yr_atoms_case_combinations( atom->atom, atom->atom_length, 0, buffer); atoms_cursor = buffer; atom_length = *((int*) atoms_cursor); atoms_cursor += sizeof(int); while (atom_length != 0) { new_atom = yr_malloc(sizeof(YR_ATOM_LIST_ITEM)); if (new_atom == NULL) return ERROR_INSUFICIENT_MEMORY; for (i = 0; i < atom_length; i++) new_atom->atom[i] = atoms_cursor[i]; new_atom->atom_length = atom_length; new_atom->forward_code = atom->forward_code; new_atom->backward_code = atom->backward_code; new_atom->backtrack = atom->backtrack; new_atom->next = *case_insensitive_atoms; *case_insensitive_atoms = new_atom; atoms_cursor += atom_length; atom_length = *((int*) atoms_cursor); atoms_cursor += sizeof(int); } atom = atom->next; } return ERROR_SUCCESS; } // // _yr_atoms_wide // // For a given list of atoms returns another list with the corresponding // wide atoms. Wide atoms are just the original atoms with interleaved zeroes, // for example: 01 02 -> 01 00 02 00 // int _yr_atoms_wide( YR_ATOM_LIST_ITEM* atoms, YR_ATOM_LIST_ITEM** wide_atoms) { YR_ATOM_LIST_ITEM* atom; YR_ATOM_LIST_ITEM* new_atom; int i; *wide_atoms = NULL; atom = atoms; while (atom != NULL) { new_atom = yr_malloc(sizeof(YR_ATOM_LIST_ITEM)); if (new_atom == NULL) return ERROR_INSUFICIENT_MEMORY; for (i = 0; i < MAX_ATOM_LENGTH; i++) new_atom->atom[i] = 0; for (i = 0; i < atom->atom_length; i++) { if (i * 2 < MAX_ATOM_LENGTH) new_atom->atom[i * 2] = atom->atom[i]; else break; } new_atom->atom_length = min(atom->atom_length * 2, MAX_ATOM_LENGTH); new_atom->forward_code = atom->forward_code; new_atom->backward_code = atom->backward_code; new_atom->backtrack = atom->backtrack * 2; new_atom->next = *wide_atoms; *wide_atoms = new_atom; atom = atom->next; } return ERROR_SUCCESS; } // // _yr_atoms_extract_from_re_node // // Extract atoms from a regular expression node. See description for // _yr_atoms_extract_from_re for more details. // ATOM_TREE_NODE* _yr_atoms_extract_from_re_node( RE_NODE* re_node, ATOM_TREE* atom_tree, ATOM_TREE_NODE* current_node) { ATOM_TREE_NODE* left_node; ATOM_TREE_NODE* right_node; ATOM_TREE_NODE* and_node; ATOM_TREE_NODE* current_leaf; ATOM_TREE_NODE* temp; int quality; int new_quality; int i; uint8_t new_atom[MAX_ATOM_LENGTH]; switch(re_node->type) { case RE_NODE_LITERAL: if (atom_tree->current_leaf == NULL) { atom_tree->current_leaf = _yr_atoms_tree_node_create(ATOM_TREE_LEAF); atom_tree->current_leaf->forward_code = re_node->forward_code; atom_tree->current_leaf->backward_code = re_node->backward_code; } current_leaf = atom_tree->current_leaf; if (current_leaf->atom_length < MAX_ATOM_LENGTH) { current_leaf->atom[current_leaf->atom_length] = re_node->value; current_leaf->recent_nodes[current_leaf->atom_length] = re_node; current_leaf->atom_length++; } else { for (i = 1; i < MAX_ATOM_LENGTH; i++) current_leaf->recent_nodes[i - 1] = current_leaf->recent_nodes[i]; current_leaf->recent_nodes[MAX_ATOM_LENGTH - 1] = re_node; for (i = 0; i < MAX_ATOM_LENGTH; i++) new_atom[i] = current_leaf->recent_nodes[i]->value; quality = _yr_atoms_quality( current_leaf->atom, MAX_ATOM_LENGTH); new_quality = _yr_atoms_quality( new_atom, MAX_ATOM_LENGTH); if (new_quality > quality) { for (i = 0; i < MAX_ATOM_LENGTH; i++) current_leaf->atom[i] = new_atom[i]; current_leaf->forward_code = \ current_leaf->recent_nodes[0]->forward_code; current_leaf->backward_code = \ current_leaf->recent_nodes[0]->backward_code; } } return current_node; case RE_NODE_CONCAT: current_node = _yr_atoms_extract_from_re_node( re_node->left, atom_tree, current_node); current_node = _yr_atoms_extract_from_re_node( re_node->right, atom_tree, current_node); return current_node; case RE_NODE_ALT: append_current_leaf_to_node(current_node); left_node = _yr_atoms_tree_node_create(ATOM_TREE_OR); left_node = _yr_atoms_extract_from_re_node( re_node->left, atom_tree, left_node); append_current_leaf_to_node(left_node); if (left_node->children_head == NULL) { _yr_atoms_tree_node_destroy(left_node); return current_node; } if (left_node->children_head == left_node->children_tail) { temp = left_node; left_node = left_node->children_head; yr_free(temp); } right_node = _yr_atoms_tree_node_create(ATOM_TREE_OR); right_node = _yr_atoms_extract_from_re_node( re_node->right, atom_tree, right_node); append_current_leaf_to_node(right_node); if (right_node->children_head == NULL) { _yr_atoms_tree_node_destroy(left_node); _yr_atoms_tree_node_destroy(right_node); return current_node; } if (right_node->children_head == right_node->children_tail) { temp = right_node; right_node = right_node->children_head; yr_free(temp); } and_node = _yr_atoms_tree_node_create(ATOM_TREE_AND); and_node->children_head = left_node; and_node->children_tail = right_node; left_node->next_sibling = right_node; _yr_atoms_tree_node_append(current_node, and_node); return current_node; case RE_NODE_RANGE: append_current_leaf_to_node(current_node); if (re_node->start > 0) { current_node = _yr_atoms_extract_from_re_node( re_node->left, atom_tree, current_node); append_current_leaf_to_node(current_node); } return current_node; case RE_NODE_PLUS: current_node = _yr_atoms_extract_from_re_node( re_node->left, atom_tree, current_node); append_current_leaf_to_node(current_node); return current_node; case RE_NODE_ANY: case RE_NODE_STAR: case RE_NODE_CLASS: case RE_NODE_MASKED_LITERAL: case RE_NODE_WORD_CHAR: case RE_NODE_NON_WORD_CHAR: case RE_NODE_SPACE: case RE_NODE_NON_SPACE: case RE_NODE_DIGIT: case RE_NODE_NON_DIGIT: case RE_NODE_EMPTY: case RE_NODE_ANCHOR_START: case RE_NODE_ANCHOR_END: append_current_leaf_to_node(current_node); return current_node; default: assert(FALSE); } return NULL; } // // yr_atoms_extract_triplets // // On certain cases YARA can not extract long enough atoms from a regexp, but // can infer them. For example, in the hex string { 01 ?? 02 } the only explict // atoms are 01 and 02, and both of them are too short to be efficiently used. // However YARA can use simultaneously atoms 01 00 02, 01 01 02, 01 02 02, // 01 03 02, and so on up to 01 FF 02. Searching for 256 three-bytes atoms is // faster than searching for a single one-byte atom. // // This function extracts these three-bytes atoms from a regexp node if // possible. // int yr_atoms_extract_triplets( RE_NODE* re_node, YR_ATOM_LIST_ITEM** atoms) { RE_NODE* left_child; RE_NODE* left_grand_child; *atoms = NULL; if (re_node->type == RE_NODE_CONCAT) left_child = re_node->left; else return ERROR_SUCCESS; if (left_child->type == RE_NODE_CONCAT) left_grand_child = left_child->left; else return ERROR_SUCCESS; if (re_node->right->type != RE_NODE_LITERAL) return yr_atoms_extract_triplets(left_child, atoms); if (left_child->left->type == RE_NODE_LITERAL && (left_child->right->type == RE_NODE_ANY)) { int i; YR_ATOM_LIST_ITEM* atom; for (i = 0; i < 256; i++) { atom = yr_malloc(sizeof(YR_ATOM_LIST_ITEM)); if (atom == NULL) return ERROR_INSUFICIENT_MEMORY; atom->atom[0] = left_child->left->value; atom->atom[1] = i; atom->atom[2] = re_node->right->value; atom->atom_length = 3; atom->forward_code = left_child->left->forward_code; atom->backward_code = left_child->left->backward_code; atom->backtrack = 0; atom->next = *atoms; *atoms = atom; } return ERROR_SUCCESS; } if (left_child->left->type == RE_NODE_LITERAL && (left_child->right->type == RE_NODE_MASKED_LITERAL)) { int i; int shift; YR_ATOM_LIST_ITEM* atom; for (i = 0; i < 16; i++) { atom = yr_malloc(sizeof(YR_ATOM_LIST_ITEM)); if (atom == NULL) return ERROR_INSUFICIENT_MEMORY; if (left_child->right->mask == 0xF0) shift = 0; else shift = 4; atom->atom[0] = left_child->left->value; atom->atom[1] = left_child->right->value | (i << shift); atom->atom[2] = re_node->right->value; atom->atom_length = 3; atom->forward_code = left_child->left->forward_code; atom->backward_code = left_child->left->backward_code; atom->backtrack = 0; atom->next = *atoms; *atoms = atom; } return ERROR_SUCCESS; } if (left_grand_child->type == RE_NODE_CONCAT && left_grand_child->right->type == RE_NODE_LITERAL && (left_child->right->type == RE_NODE_ANY)) { int i; YR_ATOM_LIST_ITEM* atom; for (i = 0; i < 256; i++) { atom = yr_malloc(sizeof(YR_ATOM_LIST_ITEM)); if (atom == NULL) return ERROR_INSUFICIENT_MEMORY; atom->atom[0] = left_grand_child->right->value; atom->atom[1] = i; atom->atom[2] = re_node->right->value; atom->atom_length = 3; atom->forward_code = left_grand_child->right->forward_code; atom->backward_code = left_grand_child->right->backward_code; atom->backtrack = 0; atom->next = *atoms; *atoms = atom; } return ERROR_SUCCESS; } if (left_grand_child->type == RE_NODE_CONCAT && left_grand_child->right->type == RE_NODE_LITERAL && (left_child->right->type == RE_NODE_MASKED_LITERAL)) { int i; int shift; YR_ATOM_LIST_ITEM* atom; for (i = 0; i < 16; i++) { atom = yr_malloc(sizeof(YR_ATOM_LIST_ITEM)); if (atom == NULL) return ERROR_INSUFICIENT_MEMORY; if (left_child->right->mask == 0xF0) shift = 0; else shift = 4; atom->atom[0] = left_grand_child->right->value; atom->atom[1] = left_child->right->value | (i << shift); atom->atom[2] = re_node->right->value; atom->atom_length = 3; atom->forward_code = left_grand_child->right->forward_code; atom->backward_code = left_grand_child->right->backward_code; atom->backtrack = 0; atom->next = *atoms; *atoms = atom; } return ERROR_SUCCESS; } return yr_atoms_extract_triplets(left_child, atoms);; } // // _yr_atoms_extract_from_re // // Extract atoms from a regular expression. // int yr_atoms_extract_from_re( RE* re, int flags, YR_ATOM_LIST_ITEM** atoms) { ATOM_TREE* atom_tree = yr_malloc(sizeof(ATOM_TREE)); ATOM_TREE_NODE* temp; YR_ATOM_LIST_ITEM* wide_atoms; YR_ATOM_LIST_ITEM* case_insentive_atoms; YR_ATOM_LIST_ITEM* triplet_atoms; int min_atom_quality = 0; atom_tree->root_node = _yr_atoms_tree_node_create(ATOM_TREE_OR);; atom_tree->current_leaf = NULL; atom_tree->root_node = _yr_atoms_extract_from_re_node( re->root_node, atom_tree, atom_tree->root_node); if (atom_tree->current_leaf != NULL) _yr_atoms_tree_node_append(atom_tree->root_node, atom_tree->current_leaf); if (atom_tree->root_node->children_head == atom_tree->root_node->children_tail) { // The root OR node has a single child, there's no need for the OR node so // we proceed to destroy it and use its child as root. temp = atom_tree->root_node; atom_tree->root_node = atom_tree->root_node->children_head; yr_free(temp); } // Choose the atoms that will be used. min_atom_quality = _yr_atoms_choose(atom_tree->root_node, atoms); _yr_atoms_tree_destroy(atom_tree); if (min_atom_quality <= 2) { // Choosen atoms contain low quality ones, let's try infering some higher // quality atoms. yr_atoms_extract_triplets(re->root_node, &triplet_atoms); if (min_atom_quality < _yr_atoms_min_quality(triplet_atoms)) { yr_atoms_list_destroy(*atoms); *atoms = triplet_atoms; } else { yr_atoms_list_destroy(triplet_atoms); } } if (flags & STRING_GFLAGS_WIDE) { FAIL_ON_ERROR(_yr_atoms_wide( *atoms, &wide_atoms)); if (flags & STRING_GFLAGS_ASCII) { *atoms = _yr_atoms_list_concat(*atoms, wide_atoms); } else { yr_atoms_list_destroy(*atoms); *atoms = wide_atoms; } } if (flags & STRING_GFLAGS_NO_CASE) { FAIL_ON_ERROR(_yr_atoms_case_insentive( *atoms, &case_insentive_atoms)); *atoms = _yr_atoms_list_concat(*atoms, case_insentive_atoms); } return ERROR_SUCCESS; } // // yr_atoms_extract_from_string // // Extract atoms from a string. // int yr_atoms_extract_from_string( uint8_t* string, int string_length, int flags, YR_ATOM_LIST_ITEM** atoms) { YR_ATOM_LIST_ITEM* item; YR_ATOM_LIST_ITEM* case_insentive_atoms; YR_ATOM_LIST_ITEM* wide_atoms; int max_quality; int quality; int i, j, length; item = yr_malloc(sizeof(YR_ATOM_LIST_ITEM)); if (item == NULL) return ERROR_INSUFICIENT_MEMORY; item->forward_code = NULL; item->backward_code = NULL; item->next = NULL; item->backtrack = 0; length = min(string_length, MAX_ATOM_LENGTH); for (i = 0; i < length; i++) item->atom[i] = string[i]; item->atom_length = i; max_quality = _yr_atoms_quality(string, length); for (i = MAX_ATOM_LENGTH; i < string_length; i++) { quality = _yr_atoms_quality( string + i - MAX_ATOM_LENGTH + 1, MAX_ATOM_LENGTH); if (quality > max_quality) { for (j = 0; j < MAX_ATOM_LENGTH; j++) item->atom[j] = string[i + j - MAX_ATOM_LENGTH + 1]; item->backtrack = i - MAX_ATOM_LENGTH + 1; max_quality = quality; } } if (flags & STRING_GFLAGS_WIDE) { FAIL_ON_ERROR(_yr_atoms_wide( item, &wide_atoms)); if (flags & STRING_GFLAGS_ASCII) { item = _yr_atoms_list_concat(item, wide_atoms); } else { yr_atoms_list_destroy(item); item = wide_atoms; } } if (flags & STRING_GFLAGS_NO_CASE) { FAIL_ON_ERROR(_yr_atoms_case_insentive( item, &case_insentive_atoms)); item = _yr_atoms_list_concat(item, case_insentive_atoms); } *atoms = item; return ERROR_SUCCESS; } // // yr_atoms_tree_node_print // // Prints an atom tree node. Used only for debugging purposes. // void yr_atoms_tree_node_print( ATOM_TREE_NODE* node) { ATOM_TREE_NODE* child; int i; if (node == NULL) { printf("Empty tree node\n"); return; } switch(node->type) { case ATOM_TREE_LEAF: for (i = 0; i < node->atom_length; i++) printf("%02X", node->atom[i]); break; case ATOM_TREE_AND: case ATOM_TREE_OR: if (node->type == ATOM_TREE_AND) printf("AND"); else printf("OR"); printf("("); child = node->children_head; while (child != NULL) { yr_atoms_tree_node_print(child); child = child->next_sibling; if (child != NULL) printf(","); } printf(")"); break; } }yara-2.0.0/libyara/atoms.h000066400000000000000000000026771225703323600154030ustar00rootroot00000000000000/* Copyright (c) 2013. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #ifndef _ATOMS_H #define _ATOMS_H #include "re.h" #include "yara.h" #define ATOM_TREE_LEAF 1 #define ATOM_TREE_AND 2 #define ATOM_TREE_OR 3 typedef struct _ATOM_TREE_NODE { uint8_t type; uint8_t atom_length; uint8_t atom[MAX_ATOM_LENGTH]; void* forward_code; void* backward_code; RE_NODE* recent_nodes[MAX_ATOM_LENGTH]; struct _ATOM_TREE_NODE* children_head; struct _ATOM_TREE_NODE* children_tail; struct _ATOM_TREE_NODE* next_sibling; } ATOM_TREE_NODE; typedef struct _ATOM_TREE { ATOM_TREE_NODE* current_leaf; ATOM_TREE_NODE* root_node; } ATOM_TREE; int yr_atoms_extract_from_re( RE* re, int flags, YR_ATOM_LIST_ITEM** atoms); int yr_atoms_extract_from_string( uint8_t* string, int string_length, int flags, YR_ATOM_LIST_ITEM** atoms); void yr_atoms_list_destroy( YR_ATOM_LIST_ITEM* list_head); #endifyara-2.0.0/libyara/compiler.c000066400000000000000000000427661225703323600160700ustar00rootroot00000000000000/* Copyright (c) 2013. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #include #include #include #include "ahocorasick.h" #include "arena.h" #include "exec.h" #include "filemap.h" #include "hash.h" #include "lexer.h" #include "mem.h" #include "utils.h" #include "yara.h" int yr_compiler_create( YR_COMPILER** compiler) { int result; YR_COMPILER* new_compiler; new_compiler = (YR_COMPILER*) yr_malloc(sizeof(YR_COMPILER)); if (new_compiler == NULL) return ERROR_INSUFICIENT_MEMORY; new_compiler->errors = 0; new_compiler->error_report_function = NULL; new_compiler->last_error = ERROR_SUCCESS; new_compiler->last_error_line = 0; new_compiler->error_line = 0; new_compiler->last_result = ERROR_SUCCESS; new_compiler->file_stack_ptr = 0; new_compiler->file_name_stack_ptr = 0; new_compiler->current_rule_flags = 0; new_compiler->allow_includes = 1; new_compiler->loop_depth = 0; new_compiler->compiled_rules_arena = NULL; new_compiler->externals_count = 0; new_compiler->namespaces_count = 0; result = yr_hash_table_create(10007, &new_compiler->rules_table); if (result == ERROR_SUCCESS) result = yr_arena_create(1024, 0, &new_compiler->sz_arena); if (result == ERROR_SUCCESS) result = yr_arena_create(1024, 0, &new_compiler->rules_arena); if (result == ERROR_SUCCESS) result = yr_arena_create(1024, 0, &new_compiler->strings_arena); if (result == ERROR_SUCCESS) result = yr_arena_create(1024, 0, &new_compiler->code_arena); if (result == ERROR_SUCCESS) result = yr_arena_create(1024, 0, &new_compiler->re_code_arena); if (result == ERROR_SUCCESS) result = yr_arena_create(1024, 0, &new_compiler->automaton_arena); if (result == ERROR_SUCCESS) result = yr_arena_create(1024, 0, &new_compiler->externals_arena); if (result == ERROR_SUCCESS) result = yr_arena_create(1024, 0, &new_compiler->namespaces_arena); if (result == ERROR_SUCCESS) result = yr_arena_create(1024, 0, &new_compiler->metas_arena); if (result == ERROR_SUCCESS) result = yr_ac_create_automaton( new_compiler->automaton_arena, &new_compiler->automaton); if (result == ERROR_SUCCESS) { *compiler = new_compiler; } else // if error, do cleanup { yr_compiler_destroy(new_compiler); } return result; } void yr_compiler_destroy( YR_COMPILER* compiler) { int i; if (compiler->compiled_rules_arena != NULL) yr_arena_destroy(compiler->compiled_rules_arena); if (compiler->sz_arena != NULL) yr_arena_destroy(compiler->sz_arena); if (compiler->rules_arena != NULL) yr_arena_destroy(compiler->rules_arena); if (compiler->strings_arena != NULL) yr_arena_destroy(compiler->strings_arena); if (compiler->code_arena != NULL) yr_arena_destroy(compiler->code_arena); if (compiler->re_code_arena != NULL) yr_arena_destroy(compiler->re_code_arena); if (compiler->automaton_arena != NULL) yr_arena_destroy(compiler->automaton_arena); if (compiler->externals_arena != NULL) yr_arena_destroy(compiler->externals_arena); if (compiler->namespaces_arena != NULL) yr_arena_destroy(compiler->namespaces_arena); if (compiler->metas_arena != NULL) yr_arena_destroy(compiler->metas_arena); yr_hash_table_destroy(compiler->rules_table); for (i = 0; i < compiler->file_name_stack_ptr; i++) yr_free(compiler->file_name_stack[i]); yr_free(compiler); } int _yr_compiler_push_file( YR_COMPILER* compiler, FILE* fh) { if (compiler->file_stack_ptr < MAX_INCLUDE_DEPTH) { compiler->file_stack[compiler->file_stack_ptr] = fh; compiler->file_stack_ptr++; return ERROR_SUCCESS; } else { compiler->last_result = ERROR_INCLUDE_DEPTH_EXCEEDED; return ERROR_INCLUDE_DEPTH_EXCEEDED; } } FILE* _yr_compiler_pop_file( YR_COMPILER* compiler) { FILE* result = NULL; if (compiler->file_stack_ptr > 0) { compiler->file_stack_ptr--; result = compiler->file_stack[compiler->file_stack_ptr]; } return result; } int yr_compiler_push_file_name( YR_COMPILER* compiler, const char* file_name) { int i; for (i = 0; i < compiler->file_name_stack_ptr; i++) { if (strcmp(file_name, compiler->file_name_stack[i]) == 0) { compiler->last_result = ERROR_INCLUDES_CIRCULAR_REFERENCE; return ERROR_INCLUDES_CIRCULAR_REFERENCE; } } if (compiler->file_name_stack_ptr < MAX_INCLUDE_DEPTH) { compiler->file_name_stack[compiler->file_name_stack_ptr] = yr_strdup( file_name); compiler->file_name_stack_ptr++; return ERROR_SUCCESS; } else { compiler->last_result = ERROR_INCLUDE_DEPTH_EXCEEDED; return ERROR_INCLUDE_DEPTH_EXCEEDED; } } void yr_compiler_pop_file_name( YR_COMPILER* compiler) { if (compiler->file_name_stack_ptr > 0) { compiler->file_name_stack_ptr--; yr_free(compiler->file_name_stack[compiler->file_name_stack_ptr]); compiler->file_name_stack[compiler->file_name_stack_ptr] = NULL; } } char* yr_compiler_get_current_file_name( YR_COMPILER* context) { if (context->file_name_stack_ptr > 0) { return context->file_name_stack[context->file_name_stack_ptr - 1]; } else { return NULL; } } int _yr_compiler_set_namespace( YR_COMPILER* compiler, const char* namespace) { YR_NAMESPACE* ns; char* ns_name; int result; int i; int found; ns = yr_arena_base_address(compiler->namespaces_arena); found = FALSE; for (i = 0; i < compiler->namespaces_count; i++) { if (strcmp(ns->name, namespace) == 0) { found = TRUE; break; } ns = yr_arena_next_address( compiler->namespaces_arena, ns, sizeof(YR_NAMESPACE)); } if (!found) { result = yr_arena_write_string( compiler->sz_arena, namespace, &ns_name); if (result == ERROR_SUCCESS) result = yr_arena_allocate_struct( compiler->namespaces_arena, sizeof(YR_NAMESPACE), (void*) &ns, offsetof(YR_NAMESPACE, name), EOL); if (result != ERROR_SUCCESS) return result; ns->name = ns_name; for (i = 0; i < MAX_THREADS; i++) ns->t_flags[i] = 0; compiler->namespaces_count++; } compiler->current_namespace = ns; return ERROR_SUCCESS; } int yr_compiler_add_file( YR_COMPILER* compiler, FILE* rules_file, const char* namespace) { if (namespace != NULL) _yr_compiler_set_namespace(compiler, namespace); else _yr_compiler_set_namespace(compiler, "default"); return yr_lex_parse_rules_file(rules_file, compiler); } int yr_compiler_add_string( YR_COMPILER* compiler, const char* rules_string, const char* namespace) { if (namespace != NULL) _yr_compiler_set_namespace(compiler, namespace); else _yr_compiler_set_namespace(compiler, "default"); return yr_lex_parse_rules_string(rules_string, compiler); } int _yr_compiler_compile_rules( YR_COMPILER* compiler) { YARA_RULES_FILE_HEADER* rules_file_header = NULL; YR_ARENA* arena; YR_RULE null_rule; YR_EXTERNAL_VARIABLE null_external; int8_t halt = HALT; int result; // Write halt instruction at the end of code. yr_arena_write_data( compiler->code_arena, &halt, sizeof(int8_t), NULL); // Write a null rule indicating the end. memset(&null_rule, 0xFA, sizeof(YR_RULE)); null_rule.g_flags = RULE_GFLAGS_NULL; yr_arena_write_data( compiler->rules_arena, &null_rule, sizeof(YR_RULE), NULL); // Write a null external the end. memset(&null_external, 0xFA, sizeof(YR_EXTERNAL_VARIABLE)); null_external.type = EXTERNAL_VARIABLE_TYPE_NULL; yr_arena_write_data( compiler->externals_arena, &null_external, sizeof(YR_EXTERNAL_VARIABLE), NULL); // Create Aho-Corasick automaton's failure links. yr_ac_create_failure_links( compiler->automaton_arena, compiler->automaton); result = yr_arena_create(1024, 0, &arena); if (result == ERROR_SUCCESS) result = yr_arena_allocate_struct( arena, sizeof(YARA_RULES_FILE_HEADER), (void**) &rules_file_header, offsetof(YARA_RULES_FILE_HEADER, rules_list_head), offsetof(YARA_RULES_FILE_HEADER, externals_list_head), offsetof(YARA_RULES_FILE_HEADER, code_start), offsetof(YARA_RULES_FILE_HEADER, automaton), EOL); if (result == ERROR_SUCCESS) { rules_file_header->rules_list_head = yr_arena_base_address( compiler->rules_arena); rules_file_header->externals_list_head = yr_arena_base_address( compiler->externals_arena); rules_file_header->code_start = yr_arena_base_address( compiler->code_arena); rules_file_header->automaton = yr_arena_base_address( compiler->automaton_arena); } if (result == ERROR_SUCCESS) result = yr_arena_append( arena, compiler->automaton_arena); if (result == ERROR_SUCCESS) { compiler->automaton_arena = NULL; result = yr_arena_append( arena, compiler->code_arena); } if (result == ERROR_SUCCESS) { compiler->code_arena = NULL; result = yr_arena_append( arena, compiler->re_code_arena); } if (result == ERROR_SUCCESS) { compiler->re_code_arena = NULL; result = yr_arena_append( arena, compiler->rules_arena); } if (result == ERROR_SUCCESS) { compiler->rules_arena = NULL; result = yr_arena_append( arena, compiler->strings_arena); } if (result == ERROR_SUCCESS) { compiler->strings_arena = NULL; result = yr_arena_append( arena, compiler->externals_arena); } if (result == ERROR_SUCCESS) { compiler->externals_arena = NULL; result = yr_arena_append( arena, compiler->namespaces_arena); } if (result == ERROR_SUCCESS) { compiler->namespaces_arena = NULL; result = yr_arena_append( arena, compiler->metas_arena); } if (result == ERROR_SUCCESS) { compiler->metas_arena = NULL; result = yr_arena_append( arena, compiler->sz_arena); } if (result == ERROR_SUCCESS) { compiler->sz_arena = NULL; compiler->compiled_rules_arena = arena; result = yr_arena_coalesce(arena); } return result; } int yr_compiler_get_rules( YR_COMPILER* compiler, YR_RULES** rules) { YR_RULES* yara_rules; YARA_RULES_FILE_HEADER* rules_file_header; int result = ERROR_SUCCESS; if (compiler->compiled_rules_arena == NULL) result = _yr_compiler_compile_rules(compiler); if (result != ERROR_SUCCESS) return result; yara_rules = yr_malloc(sizeof(YR_RULES)); if (yara_rules == NULL) return ERROR_INSUFICIENT_MEMORY; result = yr_arena_duplicate( compiler->compiled_rules_arena, &yara_rules->arena); if (result == ERROR_SUCCESS) { rules_file_header = (YARA_RULES_FILE_HEADER*) yr_arena_base_address( yara_rules->arena); yara_rules->externals_list_head = NULL; yara_rules->rules_list_head = rules_file_header->rules_list_head; yara_rules->externals_list_head = rules_file_header->externals_list_head; yara_rules->automaton = rules_file_header->automaton; yara_rules->code_start = rules_file_header->code_start; yara_rules->threads_count = 0; #if WIN32 yara_rules->mutex = CreateMutex(NULL, FALSE, NULL); #else pthread_mutex_init(&yara_rules->mutex, NULL); #endif *rules = yara_rules; } else { yr_free(yara_rules); *rules = NULL; } return result; } int yr_compiler_define_integer_variable( YR_COMPILER* compiler, const char* identifier, int64_t value) { YR_EXTERNAL_VARIABLE* external; char* id; int result; result = yr_arena_write_string( compiler->sz_arena, identifier, &id); if (result == ERROR_SUCCESS) result = yr_arena_allocate_struct( compiler->externals_arena, sizeof(YR_EXTERNAL_VARIABLE), (void**) &external, offsetof(YR_EXTERNAL_VARIABLE, identifier), offsetof(YR_EXTERNAL_VARIABLE, string), EOL); if (result == ERROR_SUCCESS) { external->type = EXTERNAL_VARIABLE_TYPE_INTEGER; external->identifier = id; external->integer = value; external->string = NULL; } compiler->externals_count++; compiler->last_result = result; return result; } int yr_compiler_define_boolean_variable( YR_COMPILER* compiler, const char* identifier, int value) { YR_EXTERNAL_VARIABLE* external; char* id; int result; result = yr_arena_write_string( compiler->sz_arena, identifier, &id); if (result == ERROR_SUCCESS) result = yr_arena_allocate_struct( compiler->externals_arena, sizeof(YR_EXTERNAL_VARIABLE), (void**) &external, offsetof(YR_EXTERNAL_VARIABLE, identifier), offsetof(YR_EXTERNAL_VARIABLE, string), EOL); if (result == ERROR_SUCCESS) { external->type = EXTERNAL_VARIABLE_TYPE_BOOLEAN; external->identifier = id; external->integer = value; external->string = NULL; } compiler->externals_count++; compiler->last_result = result; return result; } int yr_compiler_define_string_variable( YR_COMPILER* compiler, const char* identifier, const char* value) { YR_EXTERNAL_VARIABLE* external = NULL; char* id = NULL; char* val = NULL; int result; result = yr_arena_write_string( compiler->sz_arena, identifier, &id); if (result == ERROR_SUCCESS) result = yr_arena_write_string( compiler->sz_arena, value, &val); if (result == ERROR_SUCCESS) result = yr_arena_allocate_struct( compiler->externals_arena, sizeof(YR_EXTERNAL_VARIABLE), (void**) &external, offsetof(YR_EXTERNAL_VARIABLE, identifier), offsetof(YR_EXTERNAL_VARIABLE, string), EOL); if (result == ERROR_SUCCESS) { external->type = EXTERNAL_VARIABLE_TYPE_FIXED_STRING; external->identifier = id; external->integer = 0; external->string = val; } compiler->externals_count++; compiler->last_result = result; return result; } char* yr_compiler_get_error_message( YR_COMPILER* compiler, char* buffer, int buffer_size) { switch(compiler->last_error) { case ERROR_INSUFICIENT_MEMORY: snprintf(buffer, buffer_size, "not enough memory"); break; case ERROR_DUPLICATE_RULE_IDENTIFIER: snprintf( buffer, buffer_size, "duplicate rule identifier \"%s\"", compiler->last_error_extra_info); break; case ERROR_DUPLICATE_STRING_IDENTIFIER: snprintf( buffer, buffer_size, "duplicate string identifier \"%s\"", compiler->last_error_extra_info); break; case ERROR_DUPLICATE_TAG_IDENTIFIER: snprintf( buffer, buffer_size, "duplicate tag identifier \"%s\"", compiler->last_error_extra_info); break; case ERROR_DUPLICATE_META_IDENTIFIER: snprintf( buffer, buffer_size, "duplicate metadata identifier \"%s\"", compiler->last_error_extra_info); break; case ERROR_DUPLICATE_LOOP_IDENTIFIER: snprintf( buffer, buffer_size, "duplicate loop identifier \"%s\"", compiler->last_error_extra_info); break; case ERROR_UNDEFINED_STRING: snprintf( buffer, buffer_size, "undefined string \"%s\"", compiler->last_error_extra_info); break; case ERROR_UNDEFINED_IDENTIFIER: snprintf( buffer, buffer_size, "undefined identifier \"%s\"", compiler->last_error_extra_info); break; case ERROR_UNREFERENCED_STRING: snprintf( buffer, buffer_size, "unreferenced string \"%s\"", compiler->last_error_extra_info); break; case ERROR_INCORRECT_VARIABLE_TYPE: snprintf( buffer, buffer_size, "external variable \"%s\" has an incorrect type for this operation", compiler->last_error_extra_info); break; case ERROR_MISPLACED_ANONYMOUS_STRING: snprintf( buffer, buffer_size, "wrong use of anonymous string"); break; case ERROR_INVALID_HEX_STRING: case ERROR_INVALID_REGULAR_EXPRESSION: case ERROR_SYNTAX_ERROR: snprintf( buffer, buffer_size, "%s", compiler->last_error_extra_info); break; case ERROR_INCLUDES_CIRCULAR_REFERENCE: snprintf( buffer, buffer_size, "include circular reference"); break; case ERROR_INCLUDE_DEPTH_EXCEEDED: snprintf(buffer, buffer_size, "too many levels of included rules"); break; case ERROR_LOOP_NESTING_LIMIT_EXCEEDED: snprintf(buffer, buffer_size, "loop nesting limit exceeded"); break; case ERROR_INTERNAL_FATAL_ERROR: snprintf( buffer, buffer_size, "internal fatal error"); break; } return buffer; }yara-2.0.0/libyara/compiler.h000066400000000000000000000021031225703323600160520ustar00rootroot00000000000000/* Copyright (c) 2013. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #ifndef _COMPILER_H #define _COMPILER_H #include #include "yara.h" #define yr_compiler_set_error_extra_info(compiler, info) \ strncpy( \ compiler->last_error_extra_info, \ info, \ sizeof(compiler->last_error_extra_info)); \ compiler->last_error_extra_info[ \ sizeof(compiler->last_error_extra_info) - 1] = 0; int _yr_compiler_push_file( YR_COMPILER* compiler, FILE* fh); FILE* _yr_compiler_pop_file( YR_COMPILER* compiler); #endifyara-2.0.0/libyara/config.h000066400000000000000000000035011225703323600155100ustar00rootroot00000000000000/* config.h. Generated from config.h.in by configure. */ /* config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #define LT_OBJDIR ".libs/" /* Name of package */ #define PACKAGE "libyara" /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "vmalvarez@virustotal.com" /* Define to the full name of this package. */ #define PACKAGE_NAME "libyara" /* Define to the full name and version of this package. */ #define PACKAGE_STRING "libyara 2.0" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "libyara" /* Define to the version of this package. */ #define PACKAGE_VERSION "2.0" /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Version number of package */ #define VERSION "2.0" /* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a `char[]'. */ #define YYTEXT_POINTER 1 yara-2.0.0/libyara/configure.ac000066400000000000000000000012511225703323600163600ustar00rootroot00000000000000AC_INIT([libyara], [2.0], [vmalvarez@virustotal.com]) ${CFLAGS=""} # automake 1.12 seems to require AM_PROG_AR, but automake 1.11 doesn't # recognize it m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) LT_INIT AM_INIT_AUTOMAKE([-Wall -Werror foreign]) AC_PROG_CC AC_PROG_YACC AM_PROG_LEX AC_PROG_LIBTOOL AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_HEADERS([config.h]) AC_ARG_ENABLE([dmalloc], [AS_HELP_STRING([--enable-dmalloc], [enable dmalloc to debug heap-related issues])], [if test x$enableval = xyes; then AC_CHECK_LIB(dmalloc, dmalloc_malloc,, AC_MSG_ERROR(please install dmalloc library)) AC_DEFINE([DMALLOC], [], [enable dmalloc]) fi]) AC_CONFIG_FILES([Makefile]) AC_OUTPUT yara-2.0.0/libyara/elf.h000066400000000000000000000125261225703323600150200ustar00rootroot00000000000000/* Copyright (c) 2013. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #ifndef _ELF_H #define _ELF_H #ifdef _MSC_VER typedef __int8 int8_t; typedef unsigned __int8 uint8_t; typedef __int16 int16_t; typedef unsigned __int16 uint16_t; typedef __int32 int32_t; typedef unsigned __int32 uint32_t; typedef __int64 int64_t; typedef unsigned __int64 uint64_t; #else #include #endif // 32-bit ELF base types typedef uint32_t elf32_addr_t; typedef uint16_t elf32_half_t; typedef uint32_t elf32_off_t; typedef uint32_t elf32_word_t; // 64-bit ELF base types typedef uint64_t elf64_addr_t; typedef uint16_t elf64_half_t; typedef uint64_t elf64_off_t; typedef uint32_t elf64_word_t; typedef uint64_t elf64_xword_t; #define ELF_MAGIC 0x464C457F #define ELF_ET_NONE 0x0000 // no type #define ELF_ET_REL 0x0001 // relocatable #define ELF_ET_EXEC 0x0002 // executeable #define ELF_ET_DYN 0x0003 // Shared-Object-File #define ELF_ET_CORE 0x0004 // Corefile #define ELF_ET_LOPROC 0xFF00 // Processor-specific #define ELF_ET_HIPROC 0x00FF // Processor-specific #define ELF_EM_NONE 0x0000 // no type #define ELF_EM_M32 0x0001 // AT&T WE 32100 #define ELF_EM_SPARC 0x0002 // SPARC #define ELF_EM_386 0x0003 // Intel 80386 #define ELF_EM_68K 0x0004 // Motorola 68000 #define ELF_EM_88K 0x0005 // Motorola 88000 #define ELF_EM_860 0x0007 // Intel 80860 #define ELF_EM_MIPS 0x0008 // MIPS RS3000 #define ELF_EM_ARM 0x0032 // ARM #define ELF_EM_X86_64 0x003E // AMD/Intel x86_64 #define ELF_CLASS_NONE 0x0000 #define ELF_CLASS_32 0x0001 // 32bit file #define ELF_CLASS_64 0x0002 // 64bit file #define ELF_DATA_NONE 0x0000 #define ELF_DATA_2LSB 0x0001 #define ELF_DATA_2MSB 0x002 #define ELF_SHT_NULL 0 // Section header table entry unused #define ELF_SHT_PROGBITS 1 // Program data #define ELF_SHT_SYMTAB 2 // Symbol table #define ELF_SHT_STRTAB 3 // String table #define ELF_SHT_RELA 4 // Relocation entries with addends #define ELF_SHT_HASH 5 // Symbol hash table #define ELF_SHT_DYNAMIC 6 // Dynamic linking information #define ELF_SHT_NOTE 7 // Notes #define ELF_SHT_NOBITS 8 // Program space with no data (bss) #define ELF_SHT_REL 9 // Relocation entries, no addends #define ELF_SHT_SHLIB 10 // Reserved #define ELF_SHT_DYNSYM 11 // Dynamic linker symbol table #define ELF_SHT_NUM 12 // Number of defined types. typedef struct { uint32_t magic; uint8_t _class; uint8_t data; uint8_t version; uint8_t pad[8]; uint8_t nident; } elf_ident_t; typedef struct { elf_ident_t ident; elf32_half_t type; elf32_half_t machine; elf32_word_t version; elf32_addr_t entry; elf32_off_t ph_offset; elf32_off_t sh_offset; elf32_word_t flags; elf32_half_t header_size; elf32_half_t ph_entry_size; elf32_half_t ph_entry_count; elf32_half_t sh_entry_size; elf32_half_t sh_entry_count; elf32_half_t sh_str_table_index; } elf32_header_t; typedef struct { elf_ident_t ident; elf64_half_t type; elf64_half_t machine; elf64_word_t version; elf64_addr_t entry; elf64_off_t ph_offset; elf64_off_t sh_offset; elf64_word_t flags; elf64_half_t header_size; elf64_half_t ph_entry_size; elf64_half_t ph_entry_count; elf64_half_t sh_entry_size; elf64_half_t sh_entry_count; elf64_half_t sh_str_table_index; } elf64_header_t; typedef struct { elf32_word_t type; elf32_off_t offset; elf32_addr_t virt_addr; elf32_addr_t phys_addr; elf32_word_t file_size; elf32_word_t mem_size; elf32_word_t flags; elf32_word_t alignment; } elf32_program_header_t; typedef struct { elf64_word_t type; elf64_word_t flags; elf64_off_t offset; elf64_addr_t virt_addr; elf64_addr_t phys_addr; elf64_xword_t file_size; elf64_xword_t mem_size; elf64_xword_t alignment; } elf64_program_header_t; typedef struct { elf32_word_t name; elf32_word_t type; elf32_word_t flags; elf32_addr_t addr; elf32_off_t offset; elf32_word_t size; elf32_word_t link; elf32_word_t info; elf32_word_t align; elf32_word_t entry_size; } elf32_section_header_t; typedef struct { elf64_word_t name; elf64_word_t type; elf64_xword_t flags; elf64_addr_t addr; elf64_off_t offset; elf64_xword_t size; elf64_word_t link; elf64_word_t info; elf64_xword_t align; elf64_xword_t entry_size; } elf64_section_header_t; #endif yara-2.0.0/libyara/exec.c000066400000000000000000000256001225703323600151660ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #include #include #include "exec.h" #include "re.h" #define STACK_SIZE 16384 #define MEM_SIZE MAX_LOOP_NESTING * LOOP_LOCAL_VARS #define push(x) \ do { \ if (sp < STACK_SIZE) stack[sp++] = (x); \ else return ERROR_EXEC_STACK_OVERFLOW; \ } while(0) #define pop(x) x = stack[--sp] #define operation(operator, op1, op2) \ (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (UNDEFINED) : (op1 operator op2) #define comparison(operator, op1, op2) \ (IS_UNDEFINED(op1) || IS_UNDEFINED(op2)) ? (0) : (op1 operator op2) #define function_read(type) \ int64_t read_##type(YR_MEMORY_BLOCK* block, size_t offset) \ { \ while (block != NULL) \ { \ if (offset >= block->base && \ block->size >= sizeof(type) && \ offset <= block->base + block->size - sizeof(type)) \ { \ return *((type *) (block->data + offset - block->base)); \ } \ block = block->next; \ } \ return UNDEFINED; \ }; function_read(uint8_t) function_read(uint16_t) function_read(uint32_t) function_read(int8_t) function_read(int16_t) function_read(int32_t) int yr_execute_code( YR_RULES* rules, EVALUATION_CONTEXT* context) { int64_t r1; int64_t r2; int64_t r3; int64_t mem[MEM_SIZE]; int64_t stack[STACK_SIZE]; int32_t sp = 0; uint8_t* ip = rules->code_start; YR_RULE* rule; YR_STRING* string; YR_MATCH* match; YR_EXTERNAL_VARIABLE* external; int i; int found; int count; int result; int flags; int tidx = yr_get_tidx(); while(1) { switch(*ip) { case HALT: // When the halt instruction is reached the stack should be empty. assert(sp == 0); return ERROR_SUCCESS; case PUSH: r1 = *(uint64_t*)(ip + 1); ip += sizeof(uint64_t); push(r1); break; case POP: pop(r1); break; case CLEAR_M: r1 = *(uint64_t*)(ip + 1); ip += sizeof(uint64_t); mem[r1] = 0; break; case ADD_M: r1 = *(uint64_t*)(ip + 1); ip += sizeof(uint64_t); pop(r2); mem[r1] += r2; break; case INCR_M: r1 = *(uint64_t*)(ip + 1); ip += sizeof(uint64_t); mem[r1]++; break; case PUSH_M: r1 = *(uint64_t*)(ip + 1); ip += sizeof(uint64_t); push(mem[r1]); break; case POP_M: r1 = *(uint64_t*)(ip + 1); ip += sizeof(uint64_t); pop(mem[r1]); break; case SWAPUNDEF: r1 = *(uint64_t*)(ip + 1); ip += sizeof(uint64_t); pop(r2); if (r2 != UNDEFINED) push(r2); else push(mem[r1]); break; case JNUNDEF: pop(r1); push(r1); if (r1 != UNDEFINED) { ip = *(uint8_t**)(ip + 1); // ip will be incremented at the end of the loop, // decrement it here to compensate. ip--; } else { ip += sizeof(uint64_t); } break; case JLE: pop(r2); pop(r1); push(r1); push(r2); if (r1 <= r2) { ip = *(uint8_t**)(ip + 1); // ip will be incremented at the end of the loop, // decrement it here to compensate. ip--; } else { ip += sizeof(uint64_t); } break; case AND: pop(r2); pop(r1); push(r1 & r2); break; case OR: pop(r2); pop(r1); push(r1 | r2); break; case NOT: pop(r1); push(!r1); break; case LT: pop(r2); pop(r1); push(comparison(<, r1, r2)); break; case GT: pop(r2); pop(r1); push(comparison(>, r1, r2)); break; case LE: pop(r2); pop(r1); push(comparison(<=, r1, r2)); break; case GE: pop(r2); pop(r1); push(comparison(>=, r1, r2)); break; case EQ: pop(r2); pop(r1); push(comparison(==, r1, r2)); break; case NEQ: pop(r2); pop(r1); push(comparison(!=, r1, r2)); break; case ADD: pop(r2); pop(r1); push(operation(+, r1, r2)); break; case SUB: pop(r2); pop(r1); push(operation(-, r1, r2)); break; case MUL: pop(r2); pop(r1); push(operation(*, r1, r2)); break; case DIV: pop(r2); pop(r1); push(operation(/, r1, r2)); break; case MOD: pop(r2); pop(r1); push(operation(%, r1, r2)); break; case NEG: pop(r1); push(IS_UNDEFINED(r1) ? UNDEFINED : ~r1); break; case SHR: pop(r2); pop(r1); push(operation(>>, r1, r2)); break; case SHL: pop(r2); pop(r1); push(operation(<<, r1, r2)); break; case XOR: pop(r2); pop(r1); push(operation(^, r1, r2)); break; case RULE_PUSH: rule = *(YR_RULE**)(ip + 1); ip += sizeof(uint64_t); push(rule->t_flags[tidx] & RULE_TFLAGS_MATCH ? 1 : 0); break; case RULE_POP: pop(r1); rule = *(YR_RULE**)(ip + 1); ip += sizeof(uint64_t); if (r1) rule->t_flags[tidx] |= RULE_TFLAGS_MATCH; break; case EXT_INT: external = *(YR_EXTERNAL_VARIABLE**)(ip + 1); ip += sizeof(uint64_t); push(external->integer); break; case EXT_STR: external = *(YR_EXTERNAL_VARIABLE**)(ip + 1); ip += sizeof(uint64_t); push(PTR_TO_UINT64(external->string)); break; case EXT_BOOL: external = *(YR_EXTERNAL_VARIABLE**)(ip + 1); ip += sizeof(uint64_t); if (external->type == EXTERNAL_VARIABLE_TYPE_FIXED_STRING || external->type == EXTERNAL_VARIABLE_TYPE_MALLOC_STRING) push(strlen(external->string) > 0); else push(external->integer); break; case SFOUND: pop(r1); string = UINT64_TO_PTR(YR_STRING*, r1); push(string->matches[tidx].tail != NULL ? 1 : 0); break; case SFOUND_AT: pop(r2); pop(r1); if (IS_UNDEFINED(r1)) { push(0); break; } string = UINT64_TO_PTR(YR_STRING*, r2); match = string->matches[tidx].head; found = 0; while (match != NULL) { if (r1 == match->offset) { push(1); found = 1; break; } if (r1 < match->offset) break; match = match->next; } if (!found) push(0); break; case SFOUND_IN: pop(r3); pop(r2); pop(r1); if (IS_UNDEFINED(r1) || IS_UNDEFINED(r2)) { push(0); break; } string = UINT64_TO_PTR(YR_STRING*, r3); match = string->matches[tidx].head; found = FALSE; while (match != NULL && !found) { if (match->offset >= r1 && match->offset <= r2) { push(1); found = TRUE; } if (match->offset > r2) break; match = match->next; } if (!found) push(0); break; case SCOUNT: pop(r1); string = UINT64_TO_PTR(YR_STRING*, r1); match = string->matches[tidx].head; found = 0; while (match != NULL) { found++; match = match->next; } push(found); break; case SOFFSET: pop(r2); pop(r1); if (IS_UNDEFINED(r1)) { push(UNDEFINED); break; } string = UINT64_TO_PTR(YR_STRING*, r2); match = string->matches[tidx].head; i = 1; found = FALSE; while (match != NULL && !found) { if (r1 == i) { push(match->offset); found = TRUE; } i++; match = match->next; } if (!found) push(UNDEFINED); break; case OF: found = 0; count = 0; pop(r1); while (r1 != UNDEFINED) { string = UINT64_TO_PTR(YR_STRING*, r1); if (string->matches[tidx].tail != NULL) found++; count++; pop(r1); } pop(r2); if (r2 != UNDEFINED) push(found >= r2 ? 1 : 0); else push(found >= count ? 1 : 0); break; case SIZE: push(context->file_size); break; case ENTRYPOINT: push(context->entry_point); break; case INT8: pop(r1); push(read_int8_t(context->mem_block, r1)); break; case INT16: pop(r1); push(read_int16_t(context->mem_block, r1)); break; case INT32: pop(r1); push(read_int32_t(context->mem_block, r1)); break; case UINT8: pop(r1); push(read_uint8_t(context->mem_block, r1)); break; case UINT16: pop(r1); push(read_uint16_t(context->mem_block, r1)); break; case UINT32: pop(r1); push(read_uint32_t(context->mem_block, r1)); break; case CONTAINS: pop(r2); pop(r1); push(strstr(UINT64_TO_PTR(char*, r1), UINT64_TO_PTR(char*, r2)) != NULL); break; case MATCHES: pop(r3); pop(r2); pop(r1); flags = (int) r3; count = strlen(UINT64_TO_PTR(char*, r1)); if (count == 0) { push(FALSE); break; } result = yr_re_exec( UINT64_TO_PTR(uint8_t*, r2), UINT64_TO_PTR(uint8_t*, r1), count, flags | RE_FLAGS_SCAN, NULL, NULL); push(result >= 0); break; default: // Unknown instruction, this shouldn't happen. assert(FALSE); } ip++; } // After executing the code the stack should be empty. assert(sp == 0); }yara-2.0.0/libyara/exec.h000066400000000000000000000041001225703323600151630ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #ifndef _EXEC_H #define _EXEC_H #include "yara.h" #define UNDEFINED 0xFABADAFABADALL #define IS_UNDEFINED(x) ((x) == UNDEFINED) #define HALT 255 #define AND 4 #define OR 5 #define XOR 6 #define NOT 7 #define LT 8 #define GT 9 #define LE 10 #define GE 11 #define EQ 12 #define NEQ 13 #define ADD 14 #define SUB 15 #define MUL 16 #define DIV 17 #define MOD 18 #define NEG 19 #define SHL 20 #define SHR 21 #define PUSH 22 #define POP 23 #define RULE_PUSH 24 #define RULE_POP 25 #define SCOUNT 26 #define SFOUND 27 #define SFOUND_AT 28 #define SFOUND_IN 29 #define SOFFSET 30 #define OF 31 #define EXT_BOOL 32 #define EXT_INT 33 #define EXT_STR 34 #define INCR_M 35 #define CLEAR_M 36 #define ADD_M 37 #define POP_M 38 #define PUSH_M 39 #define SWAPUNDEF 40 #define JNUNDEF 41 #define JLE 42 #define SIZE 43 #define ENTRYPOINT 44 #define INT8 45 #define INT16 46 #define INT32 47 #define UINT8 48 #define UINT16 49 #define UINT32 50 #define CONTAINS 51 #define MATCHES 52 typedef struct _EVALUATION_CONTEXT { uint64_t file_size; uint64_t entry_point; YR_MEMORY_BLOCK* mem_block; } EVALUATION_CONTEXT; int yr_execute_code( YR_RULES* rules, EVALUATION_CONTEXT* context); #endif yara-2.0.0/libyara/exefiles.c000066400000000000000000000151671225703323600160550ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #include #ifdef WIN32 #include #else #include "pe.h" #endif #include "elf.h" #include "exec.h" #ifndef NULL #define NULL 0 #endif #ifndef MIN #define MIN(x,y) ((x < y)?(x):(y)) #endif PIMAGE_NT_HEADERS yr_get_pe_header( uint8_t* buffer, size_t buffer_length) { PIMAGE_DOS_HEADER mz_header; PIMAGE_NT_HEADERS pe_header; size_t headers_size = 0; if (buffer_length < sizeof(IMAGE_DOS_HEADER)) return NULL; mz_header = (PIMAGE_DOS_HEADER) buffer; if (mz_header->e_magic != IMAGE_DOS_SIGNATURE) return NULL; if (mz_header->e_lfanew < 0) return NULL; headers_size = mz_header->e_lfanew + \ sizeof(pe_header->Signature) + \ sizeof(IMAGE_FILE_HEADER); if (buffer_length < headers_size) return NULL; pe_header = (PIMAGE_NT_HEADERS) (buffer + mz_header->e_lfanew); headers_size += pe_header->FileHeader.SizeOfOptionalHeader; if (pe_header->Signature == IMAGE_NT_SIGNATURE && pe_header->FileHeader.Machine == IMAGE_FILE_MACHINE_I386 && buffer_length > headers_size) { return pe_header; } else { return NULL; } } uint64_t yr_pe_rva_to_offset( PIMAGE_NT_HEADERS pe_header, uint64_t rva, size_t buffer_length) { int i = 0; PIMAGE_SECTION_HEADER section; section = IMAGE_FIRST_SECTION(pe_header); while(i < MIN(pe_header->FileHeader.NumberOfSections, 60)) { if ((uint8_t*) section - \ (uint8_t*) pe_header + sizeof(IMAGE_SECTION_HEADER) < buffer_length) { if (rva >= section->VirtualAddress && rva < section->VirtualAddress + section->SizeOfRawData) { return section->PointerToRawData + (rva - section->VirtualAddress); } section++; i++; } else { break; } } return 0; } int yr_get_elf_type( uint8_t* buffer, size_t buffer_length) { elf_ident_t* elf_ident; if (buffer_length < sizeof(elf_ident_t)) return 0; elf_ident = (elf_ident_t*) buffer; if (elf_ident->magic == ELF_MAGIC) { return elf_ident->_class; } else { return 0; } } uint64_t yr_elf_rva_to_offset_32( elf32_header_t* elf_header, uint64_t rva, size_t buffer_length) { int i; elf32_section_header_t* section; if (elf_header->sh_offset == 0 || elf_header->sh_entry_count == 0) return 0; // check to prevent integer wraps if(ULONG_MAX - elf_header->sh_entry_count < sizeof(elf32_section_header_t) * elf_header->sh_entry_count) return 0; if (elf_header->sh_offset + \ sizeof(elf32_section_header_t) * \ elf_header->sh_entry_count > buffer_length) return 0; section = (elf32_section_header_t*) \ ((unsigned char*) elf_header + elf_header->sh_offset); for (i = 0; i < elf_header->sh_entry_count; i++) { if (section->type != ELF_SHT_NULL && section->type != ELF_SHT_NOBITS && rva >= section->addr && rva < section->addr + section->size) { // prevent integer wrapping with the return value if (ULONG_MAX - section->offset < (rva - section->addr)) return 0; else return section->offset + (rva - section->addr); } section++; } return 0; } uint64_t yr_elf_rva_to_offset_64( elf64_header_t* elf_header, uint64_t rva, size_t buffer_length) { int i; elf64_section_header_t* section; if (elf_header->sh_offset == 0 || elf_header->sh_entry_count == 0) return 0; if (elf_header->sh_offset + \ sizeof(elf64_section_header_t) * \ elf_header->sh_entry_count > buffer_length) return 0; section = (elf64_section_header_t*) \ ((uint8_t*) elf_header + elf_header->sh_offset); for (i = 0; i < elf_header->sh_entry_count; i++) { if (section->type != ELF_SHT_NULL && section->type != ELF_SHT_NOBITS && rva >= section->addr && rva < section->addr + section->size) { return section->offset + (rva - section->addr); } section++; } return 0; } uint64_t yr_get_entry_point_offset( uint8_t* buffer, size_t buffer_length) { PIMAGE_NT_HEADERS pe_header; elf32_header_t* elf_header32; elf64_header_t* elf_header64; pe_header = yr_get_pe_header(buffer, buffer_length); if (pe_header != NULL) { return yr_pe_rva_to_offset( pe_header, pe_header->OptionalHeader.AddressOfEntryPoint, buffer_length - ((uint8_t*) pe_header - buffer)); } switch(yr_get_elf_type(buffer, buffer_length)) { case ELF_CLASS_32: elf_header32 = (elf32_header_t*) buffer; return yr_elf_rva_to_offset_32( elf_header32, elf_header32->entry, buffer_length); case ELF_CLASS_64: elf_header64 = (elf64_header_t*) buffer; return yr_elf_rva_to_offset_64( elf_header64, elf_header64->entry, buffer_length); } return UNDEFINED; } uint64_t yr_get_entry_point_address( uint8_t* buffer, size_t buffer_length, size_t base_address) { PIMAGE_NT_HEADERS pe_header; elf32_header_t* elf_header32; elf64_header_t* elf_header64; pe_header = yr_get_pe_header(buffer, buffer_length); // If file is PE but not a DLL. if (pe_header != NULL && !(pe_header->FileHeader.Characteristics & IMAGE_FILE_DLL)) return base_address + pe_header->OptionalHeader.AddressOfEntryPoint; // If file is executable ELF, not shared library. switch(yr_get_elf_type(buffer, buffer_length)) { case ELF_CLASS_32: elf_header32 = (elf32_header_t*) buffer; if (elf_header32->type == ELF_ET_EXEC) return elf_header32->entry; break; case ELF_CLASS_64: elf_header64 = (elf64_header_t*) buffer; if (elf_header64->type == ELF_ET_EXEC) return elf_header64->entry; break; } return UNDEFINED; } int yr_file_is_pe( uint8_t* buffer, size_t buffer_length) { return (yr_get_pe_header(buffer, buffer_length) != NULL); } int yr_file_is_elf( uint8_t* buffer, size_t buffer_length) { int type = yr_get_elf_type(buffer, buffer_length); return (type == ELF_CLASS_32 || type == ELF_CLASS_64); } yara-2.0.0/libyara/exefiles.h000066400000000000000000000016751225703323600160610ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #ifndef _EXEFILES_H #define _EXEFILES_H int yr_file_is_pe( uint8_t* buffer, size_t buffer_length); int yr_file_is_elf( uint8_t* buffer, size_t buffer_length); uint64_t yr_get_entry_point_offset( uint8_t* buffer, size_t buffer_length); uint64_t yr_get_entry_point_address( uint8_t* buffer, size_t buffer_length, size_t base_address); #endif yara-2.0.0/libyara/filemap.c000077500000000000000000000061021225703323600156560ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #include #ifdef WIN32 #include #else #include #include #include #endif #include "filemap.h" #include "yara.h" #ifdef WIN32 // // Win32 implementation // int yr_filemap_map( const char* file_path, MAPPED_FILE* pmapped_file) { if (file_path == NULL) return ERROR_INVALID_ARGUMENT; pmapped_file->file = CreateFile( file_path, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL); if (pmapped_file->file == INVALID_HANDLE_VALUE) return ERROR_COULD_NOT_OPEN_FILE; pmapped_file->size = GetFileSize(pmapped_file->file, NULL); if (pmapped_file->size == 0) { CloseHandle(pmapped_file->file); return ERROR_ZERO_LENGTH_FILE; } pmapped_file->mapping = CreateFileMapping( pmapped_file->file, NULL, PAGE_READONLY, 0, 0, NULL); if (pmapped_file->mapping == INVALID_HANDLE_VALUE) { CloseHandle(pmapped_file->file); return ERROR_COULD_NOT_MAP_FILE; } pmapped_file->data = (uint8_t*) MapViewOfFile( pmapped_file->mapping, FILE_MAP_READ, 0, 0, 0); if (pmapped_file->data == NULL) { CloseHandle(pmapped_file->mapping); CloseHandle(pmapped_file->file); return ERROR_COULD_NOT_MAP_FILE; } return ERROR_SUCCESS; } void yr_filemap_unmap(MAPPED_FILE* pmapped_file) { UnmapViewOfFile(pmapped_file->data); CloseHandle(pmapped_file->mapping); CloseHandle(pmapped_file->file); } #else // // POSIX implementation // int yr_filemap_map( const char* file_path, MAPPED_FILE* pmapped_file) { struct stat fstat; if (file_path == NULL) return ERROR_INVALID_ARGUMENT; if (stat(file_path,&fstat) != 0 || S_ISDIR(fstat.st_mode)) return ERROR_COULD_NOT_OPEN_FILE; pmapped_file->file = open(file_path, O_RDONLY); if (pmapped_file->file == -1) return ERROR_COULD_NOT_OPEN_FILE; pmapped_file->size = fstat.st_size; if (pmapped_file->size == 0) { close(pmapped_file->file); return ERROR_ZERO_LENGTH_FILE; } pmapped_file->data = (uint8_t*) mmap( 0, pmapped_file->size, PROT_READ, MAP_PRIVATE, pmapped_file->file, 0); if (pmapped_file->data == MAP_FAILED) { close(pmapped_file->file); return ERROR_COULD_NOT_MAP_FILE; } return ERROR_SUCCESS; } void yr_filemap_unmap(MAPPED_FILE* pmapped_file) { munmap(pmapped_file->data, pmapped_file->size); close(pmapped_file->file); } #endif yara-2.0.0/libyara/filemap.h000077500000000000000000000020651225703323600156670ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #ifdef WIN32 #include #define FILE_DESCRIPTOR HANDLE #else #define FILE_DESCRIPTOR int #endif #include #include typedef struct _MAPPED_FILE { FILE_DESCRIPTOR file; size_t size; uint8_t* data; #ifdef WIN32 HANDLE mapping; #endif } MAPPED_FILE; int yr_filemap_map( const char* file_path, MAPPED_FILE* pmapped_file); void yr_filemap_unmap( MAPPED_FILE* pmapped_file); yara-2.0.0/libyara/grammar.c000066400000000000000000002724431225703323600157010ustar00rootroot00000000000000/* A Bison parser, made by GNU Bison 2.3. */ /* Skeleton implementation for Bison's Yacc-like parsers in C Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. 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, 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. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ #define YYBISON_VERSION "2.3" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 1 /* Using locations. */ #define YYLSP_NEEDED 0 /* Substitute the variable and function names. */ #define yyparse yara_yyparse #define yylex yara_yylex #define yyerror yara_yyerror #define yylval yara_yylval #define yychar yara_yychar #define yydebug yara_yydebug #define yynerrs yara_yynerrs /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { _RULE_ = 258, _PRIVATE_ = 259, _GLOBAL_ = 260, _META_ = 261, _STRINGS_ = 262, _CONDITION_ = 263, _END_ = 264, _IDENTIFIER_ = 265, _STRING_IDENTIFIER_ = 266, _STRING_COUNT_ = 267, _STRING_OFFSET_ = 268, _STRING_IDENTIFIER_WITH_WILDCARD_ = 269, _ANONYMOUS_STRING_ = 270, _NUMBER_ = 271, _UNKNOWN_ = 272, _TEXTSTRING_ = 273, _HEXSTRING_ = 274, _REGEXP_ = 275, _ASCII_ = 276, _WIDE_ = 277, _NOCASE_ = 278, _FULLWORD_ = 279, _AT_ = 280, _SIZE_ = 281, _ENTRYPOINT_ = 282, _ALL_ = 283, _ANY_ = 284, _RVA_ = 285, _OFFSET_ = 286, _FILE_ = 287, _IN_ = 288, _OF_ = 289, _FOR_ = 290, _THEM_ = 291, _SECTION_ = 292, _INT8_ = 293, _INT16_ = 294, _INT32_ = 295, _UINT8_ = 296, _UINT16_ = 297, _UINT32_ = 298, _MATCHES_ = 299, _CONTAINS_ = 300, _INDEX_ = 301, _MZ_ = 302, _PE_ = 303, _DLL_ = 304, _TRUE_ = 305, _FALSE_ = 306, _OR_ = 307, _AND_ = 308, _IS_ = 309, _NEQ_ = 310, _EQ_ = 311, _GE_ = 312, _GT_ = 313, _LE_ = 314, _LT_ = 315, _SHIFT_RIGHT_ = 316, _SHIFT_LEFT_ = 317, _NOT_ = 318 }; #endif /* Tokens. */ #define _RULE_ 258 #define _PRIVATE_ 259 #define _GLOBAL_ 260 #define _META_ 261 #define _STRINGS_ 262 #define _CONDITION_ 263 #define _END_ 264 #define _IDENTIFIER_ 265 #define _STRING_IDENTIFIER_ 266 #define _STRING_COUNT_ 267 #define _STRING_OFFSET_ 268 #define _STRING_IDENTIFIER_WITH_WILDCARD_ 269 #define _ANONYMOUS_STRING_ 270 #define _NUMBER_ 271 #define _UNKNOWN_ 272 #define _TEXTSTRING_ 273 #define _HEXSTRING_ 274 #define _REGEXP_ 275 #define _ASCII_ 276 #define _WIDE_ 277 #define _NOCASE_ 278 #define _FULLWORD_ 279 #define _AT_ 280 #define _SIZE_ 281 #define _ENTRYPOINT_ 282 #define _ALL_ 283 #define _ANY_ 284 #define _RVA_ 285 #define _OFFSET_ 286 #define _FILE_ 287 #define _IN_ 288 #define _OF_ 289 #define _FOR_ 290 #define _THEM_ 291 #define _SECTION_ 292 #define _INT8_ 293 #define _INT16_ 294 #define _INT32_ 295 #define _UINT8_ 296 #define _UINT16_ 297 #define _UINT32_ 298 #define _MATCHES_ 299 #define _CONTAINS_ 300 #define _INDEX_ 301 #define _MZ_ 302 #define _PE_ 303 #define _DLL_ 304 #define _TRUE_ 305 #define _FALSE_ 306 #define _OR_ 307 #define _AND_ 308 #define _IS_ 309 #define _NEQ_ 310 #define _EQ_ 311 #define _GE_ 312 #define _GT_ 313 #define _LE_ 314 #define _LT_ 315 #define _SHIFT_RIGHT_ 316 #define _SHIFT_LEFT_ 317 #define _NOT_ 318 /* Copy the first part of user declarations. */ #line 17 "grammar.y" #include #include #include #include #include #include "exec.h" #include "hash.h" #include "sizedstr.h" #include "mem.h" #include "lexer.h" #include "parser.h" #include "re.h" #include "utils.h" #include "yara.h" #include "config.h" #ifdef DMALLOC #include #endif #define YYERROR_VERBOSE #define INTEGER_SET_ENUMERATION 1 #define INTEGER_SET_RANGE 2 #define ERROR_IF(x) \ if (x) \ { \ yyerror(yyscanner, NULL); \ YYERROR; \ } \ /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 1 #endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 0 #endif /* Enabling the token table. */ #ifndef YYTOKEN_TABLE # define YYTOKEN_TABLE 0 #endif #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE #line 154 "grammar.y" { SIZED_STRING* sized_string; char* c_string; int64_t integer; YR_STRING* string; YR_META* meta; } /* Line 193 of yacc.c. */ #line 276 "grammar.c" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 #endif /* Copy the second part of user declarations. */ /* Line 216 of yacc.c. */ #line 289 "grammar.c" #ifdef short # undef short #endif #ifdef YYTYPE_UINT8 typedef YYTYPE_UINT8 yytype_uint8; #else typedef unsigned char yytype_uint8; #endif #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; #elif (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; #else typedef short int yytype_int8; #endif #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else typedef short int yytype_int16; #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned int # endif #endif #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(msgid) dgettext ("bison-runtime", msgid) # endif # endif # ifndef YY_ # define YY_(msgid) msgid # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(e) ((void) (e)) #else # define YYUSE(e) /* empty */ #endif /* Identity function, used to suppress warnings about constant conditions. */ #ifndef lint # define YYID(n) (n) #else #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static int YYID (int i) #else static int YYID (i) int i; #endif { return i; } #endif #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's `empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined _STDLIB_H \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yytype_int16 yyss; YYSTYPE yyvs; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) /* Copy COUNT objects from FROM to TO. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(To, From, Count) \ __builtin_memcpy (To, From, (Count) * sizeof (*(From))) # else # define YYCOPY(To, From, Count) \ do \ { \ YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (To)[yyi] = (From)[yyi]; \ } \ while (YYID (0)) # endif # endif /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack) \ do \ { \ YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack, Stack, yysize); \ Stack = &yyptr->Stack; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (YYID (0)) #endif /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 416 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 84 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 32 /* YYNRULES -- Number of rules. */ #define YYNRULES 110 /* YYNRULES -- Number of states. */ #define YYNSTATES 212 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 318 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 70, 54, 2, 78, 79, 68, 66, 81, 67, 80, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 76, 2, 2, 77, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 82, 69, 83, 56, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 73, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 74, 55, 75, 72, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 57, 58, 59, 60, 61, 62, 63, 64, 65, 71 }; #if YYDEBUG /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ static const yytype_uint16 yyprhs[] = { 0, 0, 3, 4, 7, 11, 15, 25, 26, 30, 31, 35, 39, 40, 43, 45, 47, 48, 51, 53, 56, 58, 61, 65, 69, 73, 77, 79, 82, 87, 88, 94, 98, 99, 102, 104, 106, 108, 110, 114, 116, 118, 120, 124, 128, 130, 134, 139, 143, 150, 151, 152, 164, 165, 175, 179, 183, 186, 190, 194, 198, 202, 206, 210, 214, 218, 222, 224, 226, 230, 232, 239, 241, 245, 246, 251, 253, 255, 259, 261, 263, 265, 267, 269, 273, 275, 277, 282, 287, 292, 297, 302, 307, 309, 311, 316, 318, 320, 324, 328, 332, 336, 340, 344, 348, 352, 355, 359, 363, 365, 367 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int8 yyrhs[] = { 85, 0, -1, -1, 85, 86, -1, 85, 1, 86, -1, 85, 1, 73, -1, 90, 3, 10, 92, 74, 87, 88, 89, 75, -1, -1, 6, 76, 94, -1, -1, 7, 76, 96, -1, 8, 76, 101, -1, -1, 90, 91, -1, 4, -1, 5, -1, -1, 76, 93, -1, 10, -1, 93, 10, -1, 95, -1, 94, 95, -1, 10, 77, 18, -1, 10, 77, 16, -1, 10, 77, 50, -1, 10, 77, 51, -1, 97, -1, 96, 97, -1, 11, 77, 18, 99, -1, -1, 11, 77, 98, 20, 99, -1, 11, 77, 19, -1, -1, 99, 100, -1, 22, -1, 21, -1, 23, -1, 24, -1, 78, 101, 79, -1, 50, -1, 51, -1, 10, -1, 105, 44, 20, -1, 105, 45, 105, -1, 11, -1, 11, 25, 114, -1, 11, 25, 30, 114, -1, 11, 33, 107, -1, 11, 33, 37, 78, 18, 79, -1, -1, -1, 35, 113, 10, 33, 102, 106, 76, 103, 78, 101, 79, -1, -1, 35, 113, 34, 109, 76, 104, 78, 101, 79, -1, 113, 34, 109, -1, 32, 57, 115, -1, 71, 101, -1, 101, 53, 101, -1, 101, 52, 101, -1, 114, 63, 114, -1, 114, 61, 114, -1, 114, 62, 114, -1, 114, 60, 114, -1, 114, 59, 114, -1, 114, 57, 114, -1, 114, 58, 114, -1, 18, -1, 10, -1, 78, 108, 79, -1, 107, -1, 78, 114, 80, 80, 114, 79, -1, 114, -1, 108, 81, 114, -1, -1, 78, 110, 111, 79, -1, 36, -1, 112, -1, 111, 81, 112, -1, 11, -1, 14, -1, 114, -1, 28, -1, 29, -1, 78, 114, 79, -1, 26, -1, 27, -1, 38, 78, 114, 79, -1, 39, 78, 114, 79, -1, 40, 78, 114, 79, -1, 41, 78, 114, 79, -1, 42, 78, 114, 79, -1, 43, 78, 114, 79, -1, 16, -1, 12, -1, 13, 82, 114, 83, -1, 13, -1, 10, -1, 114, 66, 114, -1, 114, 67, 114, -1, 114, 68, 114, -1, 114, 69, 114, -1, 114, 70, 114, -1, 114, 56, 114, -1, 114, 54, 114, -1, 114, 55, 114, -1, 72, 114, -1, 114, 65, 114, -1, 114, 64, 114, -1, 47, -1, 48, -1, 49, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 165, 165, 166, 167, 168, 172, 189, 190, 218, 222, 250, 254, 255, 259, 260, 264, 265, 280, 290, 324, 325, 329, 345, 358, 371, 387, 388, 392, 406, 405, 423, 439, 440, 444, 445, 446, 447, 451, 452, 456, 460, 490, 528, 532, 543, 554, 558, 569, 575, 612, 574, 711, 710, 779, 783, 786, 790, 794, 798, 802, 806, 810, 814, 818, 822, 829, 848, 862, 863, 867, 871, 872, 876, 875, 880, 887, 888, 891, 896, 903, 904, 908, 915, 916, 920, 924, 928, 932, 936, 940, 944, 948, 952, 963, 974, 988, 1015, 1019, 1023, 1027, 1031, 1035, 1039, 1043, 1047, 1051, 1055, 1061, 1062, 1063 }; #endif #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "$end", "error", "$undefined", "_RULE_", "_PRIVATE_", "_GLOBAL_", "_META_", "_STRINGS_", "_CONDITION_", "_END_", "_IDENTIFIER_", "_STRING_IDENTIFIER_", "_STRING_COUNT_", "_STRING_OFFSET_", "_STRING_IDENTIFIER_WITH_WILDCARD_", "_ANONYMOUS_STRING_", "_NUMBER_", "_UNKNOWN_", "_TEXTSTRING_", "_HEXSTRING_", "_REGEXP_", "_ASCII_", "_WIDE_", "_NOCASE_", "_FULLWORD_", "_AT_", "_SIZE_", "_ENTRYPOINT_", "_ALL_", "_ANY_", "_RVA_", "_OFFSET_", "_FILE_", "_IN_", "_OF_", "_FOR_", "_THEM_", "_SECTION_", "_INT8_", "_INT16_", "_INT32_", "_UINT8_", "_UINT16_", "_UINT32_", "_MATCHES_", "_CONTAINS_", "_INDEX_", "_MZ_", "_PE_", "_DLL_", "_TRUE_", "_FALSE_", "_OR_", "_AND_", "'&'", "'|'", "'^'", "_IS_", "_NEQ_", "_EQ_", "_GE_", "_GT_", "_LE_", "_LT_", "_SHIFT_RIGHT_", "_SHIFT_LEFT_", "'+'", "'-'", "'*'", "'\\\\'", "'%'", "_NOT_", "'~'", "'include'", "'{'", "'}'", "':'", "'='", "'('", "')'", "'.'", "','", "'['", "']'", "$accept", "rules", "rule", "meta", "strings", "condition", "rule_modifiers", "rule_modifier", "tags", "tag_list", "meta_declarations", "meta_declaration", "string_declarations", "string_declaration", "@1", "string_modifiers", "string_modifier", "boolean_expression", "@2", "@3", "@4", "text", "integer_set", "range", "integer_enumeration", "string_set", "@5", "string_enumeration", "string_enumeration_item", "for_expression", "expression", "type", 0 }; #endif # ifdef YYPRINT /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to token YYLEX-NUM. */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 38, 124, 94, 309, 310, 311, 312, 313, 314, 315, 316, 317, 43, 45, 42, 92, 37, 318, 126, 105, 123, 125, 58, 61, 40, 41, 46, 44, 91, 93 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 84, 85, 85, 85, 85, 86, 87, 87, 88, 88, 89, 90, 90, 91, 91, 92, 92, 93, 93, 94, 94, 95, 95, 95, 95, 96, 96, 97, 98, 97, 97, 99, 99, 100, 100, 100, 100, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 102, 103, 101, 104, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 105, 105, 106, 106, 107, 108, 108, 110, 109, 109, 111, 111, 112, 112, 113, 113, 113, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 115, 115, 115 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 0, 2, 3, 3, 9, 0, 3, 0, 3, 3, 0, 2, 1, 1, 0, 2, 1, 2, 1, 2, 3, 3, 3, 3, 1, 2, 4, 0, 5, 3, 0, 2, 1, 1, 1, 1, 3, 1, 1, 1, 3, 3, 1, 3, 4, 3, 6, 0, 0, 11, 0, 9, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 6, 1, 3, 0, 4, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 1, 4, 4, 4, 4, 4, 4, 1, 1, 4, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 1, 1, 1 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state STATE-NUM when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const yytype_uint8 yydefact[] = { 2, 0, 1, 12, 3, 0, 5, 4, 0, 14, 15, 13, 16, 0, 0, 18, 17, 7, 19, 0, 9, 0, 0, 0, 0, 8, 20, 0, 0, 0, 0, 21, 0, 10, 26, 0, 6, 23, 22, 24, 25, 29, 27, 96, 44, 93, 95, 92, 66, 84, 85, 81, 82, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, 0, 0, 0, 11, 0, 0, 80, 32, 31, 0, 0, 0, 0, 0, 96, 0, 0, 80, 0, 0, 0, 0, 0, 0, 56, 105, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 32, 0, 45, 0, 0, 47, 0, 108, 109, 110, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 83, 58, 57, 42, 67, 43, 75, 73, 54, 103, 104, 102, 64, 65, 63, 62, 60, 61, 59, 107, 106, 97, 98, 99, 100, 101, 35, 34, 36, 37, 33, 30, 46, 0, 0, 94, 49, 0, 86, 87, 88, 89, 90, 91, 0, 0, 0, 0, 52, 78, 79, 0, 76, 48, 0, 0, 0, 69, 0, 74, 0, 0, 0, 71, 50, 0, 77, 70, 68, 0, 0, 0, 72, 0, 53, 0, 51 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 1, 4, 20, 23, 29, 5, 11, 14, 16, 25, 26, 33, 34, 72, 113, 165, 66, 182, 205, 193, 67, 191, 119, 197, 143, 179, 186, 187, 68, 69, 124 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -77 static const yytype_int16 yypact[] = { -77, 120, -77, -35, -77, 188, -77, -77, 6, -77, -77, -77, -43, 30, -12, -77, 50, 70, -77, 3, 78, 81, 23, 114, 52, 81, -77, 131, 56, 74, -14, -77, 93, 131, -77, 55, -77, -77, -77, -77, -77, 134, -77, 25, -7, -77, 73, -77, -77, -77, -77, -77, -77, 130, 118, 110, 116, 128, 150, 152, 158, -77, -77, 55, 76, 55, 121, 139, 193, 329, -77, -77, 238, 159, -15, 76, 160, -77, 76, -9, 346, 76, 76, 76, 76, 76, 76, -77, -77, -40, 184, 55, 55, 239, 62, -19, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 141, -77, 76, 346, 182, 76, -77, 112, -77, -77, -77, -77, 156, 228, -19, 201, 218, 235, 252, 269, 286, -77, -77, 209, -77, -77, -77, -77, -77, -77, -77, 43, 43, 43, 346, 346, 346, 346, 346, 346, 346, 71, 71, 164, 164, -77, -77, -77, -77, -77, -77, -77, -77, 141, 346, 246, 149, -77, -77, 199, -77, -77, -77, -77, -77, -77, 9, 197, 198, 203, -77, -77, -77, -76, -77, -77, 76, 76, 216, -77, 215, -77, 9, 303, -72, 149, -77, 55, -77, -77, -77, 76, 217, -38, 346, 55, -77, 22, -77 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -77, -77, 274, -77, -77, -77, -77, -77, -77, -77, -77, 254, -77, 261, -77, 195, -77, -57, -77, -77, -77, 202, -77, 129, -77, 171, -77, -77, 115, 258, -54, -77 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -68 static const yytype_int16 yytable[] = { 80, 126, 37, 194, 38, 195, 87, 203, 89, 204, 88, 90, 91, 92, 91, 92, 12, 141, 73, 116, 184, 120, 117, 185, 125, 127, 74, 128, 129, 130, 131, 132, 133, 13, 136, 137, 39, 40, 6, 134, 15, 209, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 142, 18, 167, 17, 118, 169, 43, 44, 45, 46, -67, -67, 47, 139, 48, 91, 92, 19, -41, -41, 21, 48, 49, 50, 51, 52, 22, 77, 53, 45, 46, 54, 24, 47, 55, 56, 57, 58, 59, 60, 27, -41, 211, 49, 50, -41, 61, 62, 106, 107, 108, 109, 110, 111, 112, 55, 56, 57, 58, 59, 60, 2, 3, 28, -12, -12, -12, 63, 64, 77, 30, 45, 46, 35, 65, 47, 196, 198, 108, 109, 110, 111, 112, 32, 206, 49, 50, 51, 52, 64, 36, 207, 210, 70, 71, 78, 75, 55, 56, 57, 58, 59, 60, 161, 162, 163, 164, 96, 97, 98, 77, 41, 45, 46, 91, 92, 47, 106, 107, 108, 109, 110, 111, 112, 93, 94, 49, 50, 76, 81, 115, 64, 8, 9, 10, 82, 170, 78, 55, 56, 57, 58, 59, 60, 96, 97, 98, 83, 121, 122, 123, 96, 97, 98, 106, 107, 108, 109, 110, 111, 112, 106, 107, 108, 109, 110, 111, 112, 95, 84, 181, 85, 64, 110, 111, 112, 135, 86, 78, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 96, 97, 98, 114, 138, 168, 171, 92, 135, 180, 106, 107, 108, 109, 110, 111, 112, 96, 97, 98, 183, 188, 7, 189, 31, 173, 190, 106, 107, 108, 109, 110, 111, 112, 96, 97, 98, 199, 200, 42, 208, 140, 174, 172, 106, 107, 108, 109, 110, 111, 112, 96, 97, 98, 166, 201, 192, 79, 0, 175, 0, 106, 107, 108, 109, 110, 111, 112, 96, 97, 98, 0, 0, 0, 0, 0, 176, 0, 106, 107, 108, 109, 110, 111, 112, 96, 97, 98, 0, 0, 0, 0, 0, 177, 0, 106, 107, 108, 109, 110, 111, 112, 96, 97, 98, 0, 0, 0, 0, 0, 178, 0, 106, 107, 108, 109, 110, 111, 112, 0, 0, 0, 0, 0, 0, 0, 0, 202, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, 106, 107, 108, 109, 110, 111, 112 }; static const yytype_int16 yycheck[] = { 54, 10, 16, 79, 18, 81, 63, 79, 65, 81, 64, 65, 52, 53, 52, 53, 10, 36, 25, 73, 11, 75, 37, 14, 78, 34, 33, 81, 82, 83, 84, 85, 86, 76, 91, 92, 50, 51, 73, 79, 10, 79, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 78, 10, 115, 74, 78, 118, 10, 11, 12, 13, 44, 45, 16, 10, 18, 52, 53, 6, 52, 53, 76, 18, 26, 27, 28, 29, 7, 10, 32, 12, 13, 35, 10, 16, 38, 39, 40, 41, 42, 43, 76, 75, 79, 26, 27, 79, 50, 51, 64, 65, 66, 67, 68, 69, 70, 38, 39, 40, 41, 42, 43, 0, 1, 8, 3, 4, 5, 71, 72, 10, 77, 12, 13, 76, 78, 16, 189, 190, 66, 67, 68, 69, 70, 11, 200, 26, 27, 28, 29, 72, 75, 204, 208, 18, 19, 78, 82, 38, 39, 40, 41, 42, 43, 21, 22, 23, 24, 54, 55, 56, 10, 77, 12, 13, 52, 53, 16, 64, 65, 66, 67, 68, 69, 70, 44, 45, 26, 27, 57, 78, 30, 72, 3, 4, 5, 78, 83, 78, 38, 39, 40, 41, 42, 43, 54, 55, 56, 78, 47, 48, 49, 54, 55, 56, 64, 65, 66, 67, 68, 69, 70, 64, 65, 66, 67, 68, 69, 70, 34, 78, 80, 78, 72, 68, 69, 70, 79, 78, 78, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 54, 55, 56, 20, 20, 78, 33, 53, 79, 18, 64, 65, 66, 67, 68, 69, 70, 54, 55, 56, 76, 79, 3, 80, 25, 79, 78, 64, 65, 66, 67, 68, 69, 70, 54, 55, 56, 76, 78, 33, 78, 94, 79, 127, 64, 65, 66, 67, 68, 69, 70, 54, 55, 56, 114, 195, 182, 54, -1, 79, -1, 64, 65, 66, 67, 68, 69, 70, 54, 55, 56, -1, -1, -1, -1, -1, 79, -1, 64, 65, 66, 67, 68, 69, 70, 54, 55, 56, -1, -1, -1, -1, -1, 79, -1, 64, 65, 66, 67, 68, 69, 70, 54, 55, 56, -1, -1, -1, -1, -1, 79, -1, 64, 65, 66, 67, 68, 69, 70, -1, -1, -1, -1, -1, -1, -1, -1, 79, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 54, 55, 56, -1, -1, -1, -1, -1, -1, -1, 64, 65, 66, 67, 68, 69, 70 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 85, 0, 1, 86, 90, 73, 86, 3, 4, 5, 91, 10, 76, 92, 10, 93, 74, 10, 6, 87, 76, 7, 88, 10, 94, 95, 76, 8, 89, 77, 95, 11, 96, 97, 76, 75, 16, 18, 50, 51, 77, 97, 10, 11, 12, 13, 16, 18, 26, 27, 28, 29, 32, 35, 38, 39, 40, 41, 42, 43, 50, 51, 71, 72, 78, 101, 105, 113, 114, 18, 19, 98, 25, 33, 82, 57, 10, 78, 113, 114, 78, 78, 78, 78, 78, 78, 101, 114, 101, 114, 52, 53, 44, 45, 34, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 99, 20, 30, 114, 37, 78, 107, 114, 47, 48, 49, 115, 114, 10, 34, 114, 114, 114, 114, 114, 114, 79, 79, 101, 101, 20, 10, 105, 36, 78, 109, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 21, 22, 23, 24, 100, 99, 114, 78, 114, 83, 33, 109, 79, 79, 79, 79, 79, 79, 110, 18, 80, 102, 76, 11, 14, 111, 112, 79, 80, 78, 106, 107, 104, 79, 81, 114, 108, 114, 76, 78, 112, 79, 79, 81, 103, 101, 114, 78, 79, 101, 79 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY (-2) #define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. */ #define YYFAIL goto yyerrlab #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY && yylen == 1) \ { \ yychar = (Token); \ yylval = (Value); \ yytoken = YYTRANSLATE (yychar); \ YYPOPSTACK (1); \ goto yybackup; \ } \ else \ { \ yyerror (yyscanner, YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (YYID (0)) #define YYTERROR 1 #define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ #define YYRHSLOC(Rhs, K) ((Rhs)[K]) #ifndef YYLLOC_DEFAULT # define YYLLOC_DEFAULT(Current, Rhs, N) \ do \ if (YYID (N)) \ { \ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ } \ else \ { \ (Current).first_line = (Current).last_line = \ YYRHSLOC (Rhs, 0).last_line; \ (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ while (YYID (0)) #endif /* YY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ #ifndef YY_LOCATION_PRINT # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL # define YY_LOCATION_PRINT(File, Loc) \ fprintf (File, "%d.%d-%d.%d", \ (Loc).first_line, (Loc).first_column, \ (Loc).last_line, (Loc).last_column) # else # define YY_LOCATION_PRINT(File, Loc) ((void) 0) # endif #endif /* YYLEX -- calling `yylex' with the right arguments. */ #ifdef YYLEX_PARAM # define YYLEX yylex (&yylval, YYLEX_PARAM) #else # define YYLEX yylex (&yylval, yyscanner) #endif /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (YYID (0)) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Type, Value, yyscanner); \ YYFPRINTF (stderr, "\n"); \ } \ } while (YYID (0)) /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, void *yyscanner) #else static void yy_symbol_value_print (yyoutput, yytype, yyvaluep, yyscanner) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; void *yyscanner; #endif { if (!yyvaluep) return; YYUSE (yyscanner); # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # else YYUSE (yyoutput); # endif switch (yytype) { default: break; } } /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, void *yyscanner) #else static void yy_symbol_print (yyoutput, yytype, yyvaluep, yyscanner) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; void *yyscanner; #endif { if (yytype < YYNTOKENS) YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); else YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep, yyscanner); YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) #else static void yy_stack_print (bottom, top) yytype_int16 *bottom; yytype_int16 *top; #endif { YYFPRINTF (stderr, "Stack now"); for (; bottom <= top; ++bottom) YYFPRINTF (stderr, " %d", *bottom); YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_reduce_print (YYSTYPE *yyvsp, int yyrule, void *yyscanner) #else static void yy_reduce_print (yyvsp, yyrule, yyscanner) YYSTYPE *yyvsp; int yyrule; void *yyscanner; #endif { int yynrhs = yyr2[yyrule]; int yyi; unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { fprintf (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) , yyscanner); fprintf (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyvsp, Rule, yyscanner); \ } while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif #if YYERROR_VERBOSE # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen strlen # else /* Return the length of YYSTR. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) #else static YYSIZE_T yystrlen (yystr) const char *yystr; #endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif # endif # ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) #else static char * yystpcpy (yydest, yysrc) char *yydest; const char *yysrc; #endif { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif # endif # ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (! yyres) return yystrlen (yystr); return yystpcpy (yyres, yystr) - yyres; } # endif /* Copy into YYRESULT an error message about the unexpected token YYCHAR while in state YYSTATE. Return the number of bytes copied, including the terminating null byte. If YYRESULT is null, do not copy anything; just return the number of bytes that would be copied. As a special case, return 0 if an ordinary "syntax error" message will do. Return YYSIZE_MAXIMUM if overflow occurs during size calculation. */ static YYSIZE_T yysyntax_error (char *yyresult, int yystate, int yychar) { int yyn = yypact[yystate]; if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) return 0; else { int yytype = YYTRANSLATE (yychar); YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); YYSIZE_T yysize = yysize0; YYSIZE_T yysize1; int yysize_overflow = 0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; int yyx; # if 0 /* This is so xgettext sees the translatable formats that are constructed on the fly. */ YY_("syntax error, unexpected %s"); YY_("syntax error, unexpected %s, expecting %s"); YY_("syntax error, unexpected %s, expecting %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); # endif char *yyfmt; char const *yyf; static char const yyunexpected[] = "syntax error, unexpected %s"; static char const yyexpecting[] = ", expecting %s"; static char const yyor[] = " or %s"; char yyformat[sizeof yyunexpected + sizeof yyexpecting - 1 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) * (sizeof yyor - 1))]; char const *yyprefix = yyexpecting; /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yycount = 1; yyarg[0] = yytname[yytype]; yyfmt = yystpcpy (yyformat, yyunexpected); for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) { if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { yycount = 1; yysize = yysize0; yyformat[sizeof yyunexpected - 1] = '\0'; break; } yyarg[yycount++] = yytname[yyx]; yysize1 = yysize + yytnamerr (0, yytname[yyx]); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; yyfmt = yystpcpy (yyfmt, yyprefix); yyprefix = yyor; } yyf = YY_(yyformat); yysize1 = yysize + yystrlen (yyf); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; if (yysize_overflow) return YYSIZE_MAXIMUM; if (yyresult) { /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ char *yyp = yyresult; int yyi = 0; while ((*yyp = *yyf) != '\0') { if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yyarg[yyi++]); yyf += 2; } else { yyp++; yyf++; } } } return yysize; } } #endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, void *yyscanner) #else static void yydestruct (yymsg, yytype, yyvaluep, yyscanner) const char *yymsg; int yytype; YYSTYPE *yyvaluep; void *yyscanner; #endif { YYUSE (yyvaluep); YYUSE (yyscanner); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); switch (yytype) { case 10: /* "_IDENTIFIER_" */ #line 144 "grammar.y" { yr_free((yyvaluep->c_string)); }; #line 1433 "grammar.c" break; case 11: /* "_STRING_IDENTIFIER_" */ #line 145 "grammar.y" { yr_free((yyvaluep->c_string)); }; #line 1438 "grammar.c" break; case 12: /* "_STRING_COUNT_" */ #line 146 "grammar.y" { yr_free((yyvaluep->c_string)); }; #line 1443 "grammar.c" break; case 13: /* "_STRING_OFFSET_" */ #line 147 "grammar.y" { yr_free((yyvaluep->c_string)); }; #line 1448 "grammar.c" break; case 14: /* "_STRING_IDENTIFIER_WITH_WILDCARD_" */ #line 148 "grammar.y" { yr_free((yyvaluep->c_string)); }; #line 1453 "grammar.c" break; case 15: /* "_ANONYMOUS_STRING_" */ #line 149 "grammar.y" { yr_free((yyvaluep->c_string)); }; #line 1458 "grammar.c" break; case 18: /* "_TEXTSTRING_" */ #line 150 "grammar.y" { yr_free((yyvaluep->sized_string)); }; #line 1463 "grammar.c" break; case 19: /* "_HEXSTRING_" */ #line 151 "grammar.y" { yr_free((yyvaluep->sized_string)); }; #line 1468 "grammar.c" break; case 20: /* "_REGEXP_" */ #line 152 "grammar.y" { yr_free((yyvaluep->sized_string)); }; #line 1473 "grammar.c" break; default: break; } } /* Prevent warnings from -Wmissing-prototypes. */ #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); #else int yyparse (); #endif #else /* ! YYPARSE_PARAM */ #if defined __STDC__ || defined __cplusplus int yyparse (void *yyscanner); #else int yyparse (); #endif #endif /* ! YYPARSE_PARAM */ /*----------. | yyparse. | `----------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void *YYPARSE_PARAM) #else int yyparse (YYPARSE_PARAM) void *YYPARSE_PARAM; #endif #else /* ! YYPARSE_PARAM */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void *yyscanner) #else int yyparse (yyscanner) void *yyscanner; #endif #endif { /* The look-ahead symbol. */ int yychar; /* The semantic value of the look-ahead symbol. */ YYSTYPE yylval; /* Number of syntax errors so far. */ int yynerrs; int yystate; int yyn; int yyresult; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* Look-ahead token as an internal (translated) token number. */ int yytoken = 0; #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif /* Three stacks and their tools: `yyss': related to states, `yyvs': related to semantic values, `yyls': related to locations. Refer to the stacks thru separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ yytype_int16 yyssa[YYINITDEPTH]; yytype_int16 *yyss = yyssa; yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs = yyvsa; YYSTYPE *yyvsp; #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) YYSIZE_T yystacksize = YYINITDEPTH; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ yyssp = yyss; yyvsp = yyvs; goto yysetstate; /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; yysetstate: *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE goto yyexhaustedlab; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss); YYSTACK_RELOCATE (yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a look-ahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to look-ahead token. */ yyn = yypact[yystate]; if (yyn == YYPACT_NINF) goto yydefault; /* Not known => get a look-ahead token if don't already have one. */ /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yyn == 0 || yyn == YYTABLE_NINF) goto yyerrlab; yyn = -yyn; goto yyreduce; } if (yyn == YYFINAL) YYACCEPT; /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the look-ahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the shifted token unless it is eof. */ if (yychar != YYEOF) yychar = YYEMPTY; yystate = yyn; *++yyvsp = yylval; goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 6: #line 173 "grammar.y" { int result = yr_parser_reduce_rule_declaration( yyscanner, (yyvsp[(1) - (9)].integer), (yyvsp[(3) - (9)].c_string), (yyvsp[(4) - (9)].c_string), (yyvsp[(7) - (9)].string), (yyvsp[(6) - (9)].meta)); yr_free((yyvsp[(3) - (9)].c_string)); ERROR_IF(result != ERROR_SUCCESS); } break; case 7: #line 189 "grammar.y" { (yyval.meta) = NULL; } break; case 8: #line 191 "grammar.y" { // Each rule have a list of meta-data info, consisting in a // sequence of YR_META structures. The last YR_META structure does // not represent a real meta-data, it's just a end-of-list marker // identified by a specific type (META_TYPE_NULL). Here we // write the end-of-list marker. YR_META null_meta; YR_COMPILER* compiler; compiler = yyget_extra(yyscanner); memset(&null_meta, 0xFF, sizeof(YR_META)); null_meta.type = META_TYPE_NULL; yr_arena_write_data( compiler->metas_arena, &null_meta, sizeof(YR_META), NULL); (yyval.meta) = (yyvsp[(3) - (3)].meta); } break; case 9: #line 218 "grammar.y" { (yyval.string) = NULL; yyget_extra(yyscanner)->current_rule_strings = (yyval.string); } break; case 10: #line 223 "grammar.y" { // Each rule have a list of strings, consisting in a sequence // of YR_STRING structures. The last YR_STRING structure does not // represent a real string, it's just a end-of-list marker // identified by a specific flag (STRING_FLAGS_NULL). Here we // write the end-of-list marker. YR_STRING null_string; YR_COMPILER* compiler; compiler = yyget_extra(yyscanner); memset(&null_string, 0xFF, sizeof(YR_STRING)); null_string.g_flags = STRING_GFLAGS_NULL; yr_arena_write_data( compiler->strings_arena, &null_string, sizeof(YR_STRING), NULL); (yyval.string) = (yyvsp[(3) - (3)].string); compiler->current_rule_strings = (yyval.string); } break; case 12: #line 254 "grammar.y" { (yyval.integer) = 0; } break; case 13: #line 255 "grammar.y" { (yyval.integer) = (yyvsp[(1) - (2)].integer) | (yyvsp[(2) - (2)].integer); } break; case 14: #line 259 "grammar.y" { (yyval.integer) = RULE_GFLAGS_PRIVATE; } break; case 15: #line 260 "grammar.y" { (yyval.integer) = RULE_GFLAGS_GLOBAL; } break; case 16: #line 264 "grammar.y" { (yyval.c_string) = NULL; } break; case 17: #line 266 "grammar.y" { // Tags list is represented in the arena as a sequence // of null-terminated strings, the sequence ends with an // additional null character. Here we write the ending null //character. Example: tag1\0tag2\0tag3\0\0 yr_arena_write_string( yyget_extra(yyscanner)->sz_arena, "", NULL); (yyval.c_string) = (yyvsp[(2) - (2)].c_string); } break; case 18: #line 281 "grammar.y" { char* identifier; yr_arena_write_string( yyget_extra(yyscanner)->sz_arena, (yyvsp[(1) - (1)].c_string), &identifier); yr_free((yyvsp[(1) - (1)].c_string)); (yyval.c_string) = identifier; } break; case 19: #line 291 "grammar.y" { YR_COMPILER* compiler = yyget_extra(yyscanner); char* tag_name = (yyvsp[(1) - (2)].c_string); size_t tag_length = tag_name != NULL ? strlen(tag_name) : 0; while (tag_length > 0) { if (strcmp(tag_name, (yyvsp[(2) - (2)].c_string)) == 0) { yr_compiler_set_error_extra_info(compiler, tag_name); compiler->last_result = ERROR_DUPLICATE_TAG_IDENTIFIER; break; } tag_name = yr_arena_next_address( yyget_extra(yyscanner)->sz_arena, tag_name, tag_length + 1); tag_length = tag_name != NULL ? strlen(tag_name) : 0; } if (compiler->last_result == ERROR_SUCCESS) compiler->last_result = yr_arena_write_string( yyget_extra(yyscanner)->sz_arena, (yyvsp[(2) - (2)].c_string), NULL); yr_free((yyvsp[(2) - (2)].c_string)); (yyval.c_string) = (yyvsp[(1) - (2)].c_string); ERROR_IF(compiler->last_result != ERROR_SUCCESS); } break; case 20: #line 324 "grammar.y" { (yyval.meta) = (yyvsp[(1) - (1)].meta); } break; case 21: #line 325 "grammar.y" { (yyval.meta) = (yyvsp[(1) - (2)].meta); } break; case 22: #line 330 "grammar.y" { SIZED_STRING* sized_string = (yyvsp[(3) - (3)].sized_string); (yyval.meta) = yr_parser_reduce_meta_declaration( yyscanner, META_TYPE_STRING, (yyvsp[(1) - (3)].c_string), sized_string->c_string, 0); yr_free((yyvsp[(1) - (3)].c_string)); yr_free((yyvsp[(3) - (3)].sized_string)); ERROR_IF((yyval.meta) == NULL); } break; case 23: #line 346 "grammar.y" { (yyval.meta) = yr_parser_reduce_meta_declaration( yyscanner, META_TYPE_INTEGER, (yyvsp[(1) - (3)].c_string), NULL, (yyvsp[(3) - (3)].integer)); yr_free((yyvsp[(1) - (3)].c_string)); ERROR_IF((yyval.meta) == NULL); } break; case 24: #line 359 "grammar.y" { (yyval.meta) = yr_parser_reduce_meta_declaration( yyscanner, META_TYPE_BOOLEAN, (yyvsp[(1) - (3)].c_string), NULL, TRUE); yr_free((yyvsp[(1) - (3)].c_string)); ERROR_IF((yyval.meta) == NULL); } break; case 25: #line 372 "grammar.y" { (yyval.meta) = yr_parser_reduce_meta_declaration( yyscanner, META_TYPE_BOOLEAN, (yyvsp[(1) - (3)].c_string), NULL, FALSE); yr_free((yyvsp[(1) - (3)].c_string)); ERROR_IF((yyval.meta) == NULL); } break; case 26: #line 387 "grammar.y" { (yyval.string) = (yyvsp[(1) - (1)].string); } break; case 27: #line 388 "grammar.y" { (yyval.string) = (yyvsp[(1) - (2)].string); } break; case 28: #line 393 "grammar.y" { (yyval.string) = yr_parser_reduce_string_declaration( yyscanner, (yyvsp[(4) - (4)].integer), (yyvsp[(1) - (4)].c_string), (yyvsp[(3) - (4)].sized_string)); yr_free((yyvsp[(1) - (4)].c_string)); yr_free((yyvsp[(3) - (4)].sized_string)); ERROR_IF((yyval.string) == NULL); } break; case 29: #line 406 "grammar.y" { YR_COMPILER* compiler = yyget_extra(yyscanner); compiler->error_line = yyget_lineno(yyscanner); } break; case 30: #line 411 "grammar.y" { (yyval.string) = yr_parser_reduce_string_declaration( yyscanner, (yyvsp[(5) - (5)].integer) | STRING_GFLAGS_REGEXP, (yyvsp[(1) - (5)].c_string), (yyvsp[(4) - (5)].sized_string)); yr_free((yyvsp[(1) - (5)].c_string)); yr_free((yyvsp[(4) - (5)].sized_string)); ERROR_IF((yyval.string) == NULL); } break; case 31: #line 424 "grammar.y" { (yyval.string) = yr_parser_reduce_string_declaration( yyscanner, STRING_GFLAGS_HEXADECIMAL, (yyvsp[(1) - (3)].c_string), (yyvsp[(3) - (3)].sized_string)); yr_free((yyvsp[(1) - (3)].c_string)); yr_free((yyvsp[(3) - (3)].sized_string)); ERROR_IF((yyval.string) == NULL); } break; case 32: #line 439 "grammar.y" { (yyval.integer) = 0; } break; case 33: #line 440 "grammar.y" { (yyval.integer) = (yyvsp[(1) - (2)].integer) | (yyvsp[(2) - (2)].integer); } break; case 34: #line 444 "grammar.y" { (yyval.integer) = STRING_GFLAGS_WIDE; } break; case 35: #line 445 "grammar.y" { (yyval.integer) = STRING_GFLAGS_ASCII; } break; case 36: #line 446 "grammar.y" { (yyval.integer) = STRING_GFLAGS_NO_CASE; } break; case 37: #line 447 "grammar.y" { (yyval.integer) = STRING_GFLAGS_FULL_WORD; } break; case 39: #line 453 "grammar.y" { yr_parser_emit_with_arg(yyscanner, PUSH, 1, NULL); } break; case 40: #line 457 "grammar.y" { yr_parser_emit_with_arg(yyscanner, PUSH, 0, NULL); } break; case 41: #line 461 "grammar.y" { YR_COMPILER* compiler = yyget_extra(yyscanner); YR_RULE* rule; rule = (YR_RULE*) yr_hash_table_lookup( compiler->rules_table, (yyvsp[(1) - (1)].c_string), compiler->current_namespace->name); if (rule != NULL) { compiler->last_result = yr_parser_emit_with_arg_reloc( yyscanner, RULE_PUSH, PTR_TO_UINT64(rule), NULL); } else { compiler->last_result = yr_parser_reduce_external( yyscanner, (yyvsp[(1) - (1)].c_string), EXT_BOOL); } yr_free((yyvsp[(1) - (1)].c_string)); ERROR_IF(compiler->last_result != ERROR_SUCCESS); } break; case 42: #line 491 "grammar.y" { YR_COMPILER* compiler = yyget_extra(yyscanner); SIZED_STRING* sized_string = (yyvsp[(3) - (3)].sized_string); RE* re; compiler->last_result = yr_re_compile( sized_string->c_string, &re); if (sized_string->flags & SIZED_STRING_FLAGS_NO_CASE) re->flags |= RE_FLAGS_NO_CASE; ERROR_IF(compiler->last_result != ERROR_SUCCESS); compiler->last_result = yr_re_emit_code( re, compiler->re_code_arena); ERROR_IF(compiler->last_result != ERROR_SUCCESS); yr_parser_emit_with_arg_reloc( yyscanner, PUSH, PTR_TO_UINT64(re->root_node->forward_code), NULL); yr_parser_emit_with_arg( yyscanner, PUSH, re->flags, NULL); yr_parser_emit(yyscanner, MATCHES, NULL); yr_re_destroy(re); yr_free((yyvsp[(3) - (3)].sized_string)); ERROR_IF(compiler->last_result != ERROR_SUCCESS); } break; case 43: #line 529 "grammar.y" { yr_parser_emit(yyscanner, CONTAINS, NULL); } break; case 44: #line 533 "grammar.y" { int result = yr_parser_reduce_string_identifier( yyscanner, (yyvsp[(1) - (1)].c_string), SFOUND); yr_free((yyvsp[(1) - (1)].c_string)); ERROR_IF(result != ERROR_SUCCESS); } break; case 45: #line 544 "grammar.y" { int result = yr_parser_reduce_string_identifier( yyscanner, (yyvsp[(1) - (3)].c_string), SFOUND_AT); yr_free((yyvsp[(1) - (3)].c_string)); ERROR_IF(result != ERROR_SUCCESS); } break; case 46: #line 555 "grammar.y" { yr_free((yyvsp[(1) - (4)].c_string)); } break; case 47: #line 559 "grammar.y" { int result = yr_parser_reduce_string_identifier( yyscanner, (yyvsp[(1) - (3)].c_string), SFOUND_IN); yr_free((yyvsp[(1) - (3)].c_string)); ERROR_IF(result != ERROR_SUCCESS); } break; case 48: #line 570 "grammar.y" { yr_free((yyvsp[(1) - (6)].c_string)); yr_free((yyvsp[(5) - (6)].sized_string)); } break; case 49: #line 575 "grammar.y" { YR_COMPILER* compiler = yyget_extra(yyscanner); int result = ERROR_SUCCESS; int var_index; if (compiler->loop_depth == MAX_LOOP_NESTING) compiler->last_result = \ ERROR_LOOP_NESTING_LIMIT_EXCEEDED; ERROR_IF(compiler->last_result != ERROR_SUCCESS); var_index = yr_parser_lookup_loop_variable( yyscanner, (yyvsp[(3) - (4)].c_string)); if (var_index >= 0) { yr_compiler_set_error_extra_info( compiler, (yyvsp[(3) - (4)].c_string)); compiler->last_result = \ ERROR_DUPLICATE_LOOP_IDENTIFIER; } ERROR_IF(compiler->last_result != ERROR_SUCCESS); // Push end-of-list marker result = yr_parser_emit_with_arg( yyscanner, PUSH, UNDEFINED, NULL); ERROR_IF(result != ERROR_SUCCESS); } break; case 50: #line 612 "grammar.y" { YR_COMPILER* compiler = yyget_extra(yyscanner); int mem_offset = LOOP_LOCAL_VARS * compiler->loop_depth; int8_t* addr; // Clear counter for number of expressions evaluating // to TRUE. yr_parser_emit_with_arg( yyscanner, CLEAR_M, mem_offset + 1, NULL); // Clear iterations counter yr_parser_emit_with_arg( yyscanner, CLEAR_M, mem_offset + 2, NULL); if ((yyvsp[(6) - (7)].integer) == INTEGER_SET_ENUMERATION) { // Pop the first integer yr_parser_emit_with_arg( yyscanner, POP_M, mem_offset, &addr); } else // INTEGER_SET_RANGE { yr_parser_emit_with_arg( yyscanner, POP_M, mem_offset + 3, &addr); yr_parser_emit_with_arg( yyscanner, POP_M, mem_offset, NULL); } compiler->loop_address[compiler->loop_depth] = addr; compiler->loop_identifier[compiler->loop_depth] = (yyvsp[(3) - (7)].c_string); compiler->loop_depth++; } break; case 51: #line 646 "grammar.y" { YR_COMPILER* compiler = yyget_extra(yyscanner); int mem_offset; compiler->loop_depth--; mem_offset = LOOP_LOCAL_VARS * compiler->loop_depth; yr_parser_emit_with_arg( yyscanner, ADD_M, mem_offset + 1, NULL); yr_parser_emit_with_arg( yyscanner, INCR_M, mem_offset + 2, NULL); if ((yyvsp[(6) - (11)].integer) == INTEGER_SET_ENUMERATION) { yr_parser_emit_with_arg_reloc( yyscanner, JNUNDEF, PTR_TO_UINT64( compiler->loop_address[compiler->loop_depth]), NULL); } else // INTEGER_SET_RANGE { yr_parser_emit_with_arg( yyscanner, INCR_M, mem_offset, NULL); yr_parser_emit_with_arg( yyscanner, PUSH_M, mem_offset, NULL); yr_parser_emit_with_arg( yyscanner, PUSH_M, mem_offset + 3, NULL); yr_parser_emit_with_arg_reloc( yyscanner, JLE, PTR_TO_UINT64( compiler->loop_address[compiler->loop_depth]), NULL); yr_parser_emit(yyscanner, POP, NULL); yr_parser_emit(yyscanner, POP, NULL); } // Pop end-of-list marker. yr_parser_emit(yyscanner, POP, NULL); // At this point the loop quantifier (any, all, 1, 2,..) // is at the top of the stack. Check if the quantifier // is undefined (meaning "all") and replace it with the // iterations counter in that case. yr_parser_emit_with_arg( yyscanner, SWAPUNDEF, mem_offset + 2, NULL); // Compare the loop quantifier with the number of // expressions evaluating to TRUE. yr_parser_emit_with_arg( yyscanner, PUSH_M, mem_offset + 1, NULL); yr_parser_emit(yyscanner, LE, NULL); compiler->loop_identifier[compiler->loop_depth] = NULL; yr_free((yyvsp[(3) - (11)].c_string)); } break; case 52: #line 711 "grammar.y" { YR_COMPILER* compiler = yyget_extra(yyscanner); int mem_offset = LOOP_LOCAL_VARS * compiler->loop_depth; int8_t* addr; if (compiler->loop_depth == MAX_LOOP_NESTING) compiler->last_result = \ ERROR_LOOP_NESTING_LIMIT_EXCEEDED; ERROR_IF(compiler->last_result != ERROR_SUCCESS); yr_parser_emit_with_arg( yyscanner, CLEAR_M, mem_offset + 1, NULL); yr_parser_emit_with_arg( yyscanner, CLEAR_M, mem_offset + 2, NULL); // Pop the first string. yr_parser_emit_with_arg( yyscanner, POP_M, mem_offset, &addr); compiler->loop_address[compiler->loop_depth] = addr; compiler->loop_depth++; } break; case 53: #line 736 "grammar.y" { YR_COMPILER* compiler = yyget_extra(yyscanner); int mem_offset; compiler->loop_depth--; mem_offset = LOOP_LOCAL_VARS * compiler->loop_depth; // Increment counter by the value returned by the // boolean expression (0 or 1). yr_parser_emit_with_arg( yyscanner, ADD_M, mem_offset + 1, NULL); // Increment iterations counter. yr_parser_emit_with_arg( yyscanner, INCR_M, mem_offset + 2, NULL); // If next string is not undefined, go back to the // begining of the loop. yr_parser_emit_with_arg_reloc( yyscanner, JNUNDEF, PTR_TO_UINT64( compiler->loop_address[compiler->loop_depth]), NULL); // Pop end-of-list marker. yr_parser_emit(yyscanner, POP, NULL); // At this point the loop quantifier (any, all, 1, 2,..) // is at top of the stack. Check if the quantifier is // undefined (meaning "all") and replace it with the // iterations counter in that case. yr_parser_emit_with_arg( yyscanner, SWAPUNDEF, mem_offset + 2, NULL); // Compare the loop quantifier with the number of // expressions evaluating to TRUE. yr_parser_emit_with_arg( yyscanner, PUSH_M, mem_offset + 1, NULL); yr_parser_emit(yyscanner, LE, NULL); } break; case 54: #line 780 "grammar.y" { yr_parser_emit(yyscanner, OF, NULL); } break; case 55: #line 784 "grammar.y" { } break; case 56: #line 787 "grammar.y" { yr_parser_emit(yyscanner, NOT, NULL); } break; case 57: #line 791 "grammar.y" { yr_parser_emit(yyscanner, AND, NULL); } break; case 58: #line 795 "grammar.y" { yr_parser_emit(yyscanner, OR, NULL); } break; case 59: #line 799 "grammar.y" { yr_parser_emit(yyscanner, LT, NULL); } break; case 60: #line 803 "grammar.y" { yr_parser_emit(yyscanner, GT, NULL); } break; case 61: #line 807 "grammar.y" { yr_parser_emit(yyscanner, LE, NULL); } break; case 62: #line 811 "grammar.y" { yr_parser_emit(yyscanner, GE, NULL); } break; case 63: #line 815 "grammar.y" { yr_parser_emit(yyscanner, EQ, NULL); } break; case 64: #line 819 "grammar.y" { yr_parser_emit(yyscanner, EQ, NULL); } break; case 65: #line 823 "grammar.y" { yr_parser_emit(yyscanner, NEQ, NULL); } break; case 66: #line 830 "grammar.y" { YR_COMPILER* compiler = yyget_extra(yyscanner); SIZED_STRING* sized_string = (yyvsp[(1) - (1)].sized_string); char* string; yr_arena_write_string( compiler->sz_arena, sized_string->c_string, &string); yr_parser_emit_with_arg_reloc( yyscanner, PUSH, PTR_TO_UINT64(string), NULL); yr_free((yyvsp[(1) - (1)].sized_string)); } break; case 67: #line 849 "grammar.y" { int result = yr_parser_reduce_external( yyscanner, (yyvsp[(1) - (1)].c_string), EXT_STR); yr_free((yyvsp[(1) - (1)].c_string)); ERROR_IF(result != ERROR_SUCCESS); } break; case 68: #line 862 "grammar.y" { (yyval.integer) = INTEGER_SET_ENUMERATION; } break; case 69: #line 863 "grammar.y" { (yyval.integer) = INTEGER_SET_RANGE; } break; case 73: #line 876 "grammar.y" { yr_parser_emit_with_arg(yyscanner, PUSH, UNDEFINED, NULL); } break; case 75: #line 881 "grammar.y" { yr_parser_emit_with_arg(yyscanner, PUSH, UNDEFINED, NULL); yr_parser_emit_pushes_for_strings(yyscanner, "$*"); } break; case 78: #line 892 "grammar.y" { yr_parser_emit_pushes_for_strings(yyscanner, (yyvsp[(1) - (1)].c_string)); yr_free((yyvsp[(1) - (1)].c_string)); } break; case 79: #line 897 "grammar.y" { yr_parser_emit_pushes_for_strings(yyscanner, (yyvsp[(1) - (1)].c_string)); yr_free((yyvsp[(1) - (1)].c_string)); } break; case 81: #line 905 "grammar.y" { yr_parser_emit_with_arg(yyscanner, PUSH, UNDEFINED, NULL); } break; case 82: #line 909 "grammar.y" { yr_parser_emit_with_arg(yyscanner, PUSH, 1, NULL); } break; case 84: #line 917 "grammar.y" { yr_parser_emit(yyscanner, SIZE, NULL); } break; case 85: #line 921 "grammar.y" { yr_parser_emit(yyscanner, ENTRYPOINT, NULL); } break; case 86: #line 925 "grammar.y" { yr_parser_emit(yyscanner, INT8, NULL); } break; case 87: #line 929 "grammar.y" { yr_parser_emit(yyscanner, INT16, NULL); } break; case 88: #line 933 "grammar.y" { yr_parser_emit(yyscanner, INT32, NULL); } break; case 89: #line 937 "grammar.y" { yr_parser_emit(yyscanner, UINT8, NULL); } break; case 90: #line 941 "grammar.y" { yr_parser_emit(yyscanner, UINT16, NULL); } break; case 91: #line 945 "grammar.y" { yr_parser_emit(yyscanner, UINT32, NULL); } break; case 92: #line 949 "grammar.y" { yr_parser_emit_with_arg(yyscanner, PUSH, (yyvsp[(1) - (1)].integer), NULL); } break; case 93: #line 953 "grammar.y" { int result = yr_parser_reduce_string_identifier( yyscanner, (yyvsp[(1) - (1)].c_string), SCOUNT); yr_free((yyvsp[(1) - (1)].c_string)); ERROR_IF(result != ERROR_SUCCESS); } break; case 94: #line 964 "grammar.y" { int result = yr_parser_reduce_string_identifier( yyscanner, (yyvsp[(1) - (4)].c_string), SOFFSET); yr_free((yyvsp[(1) - (4)].c_string)); ERROR_IF(result != ERROR_SUCCESS); } break; case 95: #line 975 "grammar.y" { int result = yr_parser_emit_with_arg(yyscanner, PUSH, 1, NULL); if (result == ERROR_SUCCESS) result = yr_parser_reduce_string_identifier( yyscanner, (yyvsp[(1) - (1)].c_string), SOFFSET); yr_free((yyvsp[(1) - (1)].c_string)); ERROR_IF(result != ERROR_SUCCESS); } break; case 96: #line 989 "grammar.y" { YR_COMPILER* compiler = yyget_extra(yyscanner); int var_index; var_index = yr_parser_lookup_loop_variable(yyscanner, (yyvsp[(1) - (1)].c_string)); if (var_index >= 0) { yr_parser_emit_with_arg( yyscanner, PUSH_M, LOOP_LOCAL_VARS * var_index, NULL); } else { compiler->last_result = yr_parser_reduce_external( yyscanner, (yyvsp[(1) - (1)].c_string), EXT_INT); } yr_free((yyvsp[(1) - (1)].c_string)); ERROR_IF(compiler->last_result != ERROR_SUCCESS); } break; case 97: #line 1016 "grammar.y" { yr_parser_emit(yyscanner, ADD, NULL); } break; case 98: #line 1020 "grammar.y" { yr_parser_emit(yyscanner, SUB, NULL); } break; case 99: #line 1024 "grammar.y" { yr_parser_emit(yyscanner, MUL, NULL); } break; case 100: #line 1028 "grammar.y" { yr_parser_emit(yyscanner, DIV, NULL); } break; case 101: #line 1032 "grammar.y" { yr_parser_emit(yyscanner, MOD, NULL); } break; case 102: #line 1036 "grammar.y" { yr_parser_emit(yyscanner, XOR, NULL); } break; case 103: #line 1040 "grammar.y" { yr_parser_emit(yyscanner, AND, NULL); } break; case 104: #line 1044 "grammar.y" { yr_parser_emit(yyscanner, OR, NULL); } break; case 105: #line 1048 "grammar.y" { yr_parser_emit(yyscanner, NEG, NULL); } break; case 106: #line 1052 "grammar.y" { yr_parser_emit(yyscanner, SHL, NULL); } break; case 107: #line 1056 "grammar.y" { yr_parser_emit(yyscanner, SHR, NULL); } break; /* Line 1267 of yacc.c. */ #line 2890 "grammar.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; /*------------------------------------. | yyerrlab -- here on detecting error | `------------------------------------*/ yyerrlab: /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; #if ! YYERROR_VERBOSE yyerror (yyscanner, YY_("syntax error")); #else { YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) { YYSIZE_T yyalloc = 2 * yysize; if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) yyalloc = YYSTACK_ALLOC_MAXIMUM; if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = (char *) YYSTACK_ALLOC (yyalloc); if (yymsg) yymsg_alloc = yyalloc; else { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; } } if (0 < yysize && yysize <= yymsg_alloc) { (void) yysyntax_error (yymsg, yystate, yychar); yyerror (yyscanner, yymsg); } else { yyerror (yyscanner, YY_("syntax error")); if (yysize != 0) goto yyexhaustedlab; } } #endif } if (yyerrstatus == 3) { /* If just tried and failed to reuse look-ahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval, yyscanner); yychar = YYEMPTY; } } /* Else will try to reuse look-ahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers like GCC when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (/*CONSTCOND*/ 0) goto yyerrorlab; /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (yyn != YYPACT_NINF) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yydestruct ("Error: popping", yystos[yystate], yyvsp, yyscanner); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } if (yyn == YYFINAL) YYACCEPT; *++yyvsp = yylval; /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturn; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturn; #ifndef yyoverflow /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (yyscanner, YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif yyreturn: if (yychar != YYEOF && yychar != YYEMPTY) yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval, yyscanner); /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", yystos[*yyssp], yyvsp, yyscanner); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif /* Make sure YYID is used. */ return YYID (yyresult); } #line 1066 "grammar.y" yara-2.0.0/libyara/grammar.h000066400000000000000000000113251225703323600156740ustar00rootroot00000000000000/* A Bison parser, made by GNU Bison 2.3. */ /* Skeleton interface for Bison's Yacc-like parsers in C Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. 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, 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. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { _RULE_ = 258, _PRIVATE_ = 259, _GLOBAL_ = 260, _META_ = 261, _STRINGS_ = 262, _CONDITION_ = 263, _END_ = 264, _IDENTIFIER_ = 265, _STRING_IDENTIFIER_ = 266, _STRING_COUNT_ = 267, _STRING_OFFSET_ = 268, _STRING_IDENTIFIER_WITH_WILDCARD_ = 269, _ANONYMOUS_STRING_ = 270, _NUMBER_ = 271, _UNKNOWN_ = 272, _TEXTSTRING_ = 273, _HEXSTRING_ = 274, _REGEXP_ = 275, _ASCII_ = 276, _WIDE_ = 277, _NOCASE_ = 278, _FULLWORD_ = 279, _AT_ = 280, _SIZE_ = 281, _ENTRYPOINT_ = 282, _ALL_ = 283, _ANY_ = 284, _RVA_ = 285, _OFFSET_ = 286, _FILE_ = 287, _IN_ = 288, _OF_ = 289, _FOR_ = 290, _THEM_ = 291, _SECTION_ = 292, _INT8_ = 293, _INT16_ = 294, _INT32_ = 295, _UINT8_ = 296, _UINT16_ = 297, _UINT32_ = 298, _MATCHES_ = 299, _CONTAINS_ = 300, _INDEX_ = 301, _MZ_ = 302, _PE_ = 303, _DLL_ = 304, _TRUE_ = 305, _FALSE_ = 306, _OR_ = 307, _AND_ = 308, _IS_ = 309, _NEQ_ = 310, _EQ_ = 311, _GE_ = 312, _GT_ = 313, _LE_ = 314, _LT_ = 315, _SHIFT_RIGHT_ = 316, _SHIFT_LEFT_ = 317, _NOT_ = 318 }; #endif /* Tokens. */ #define _RULE_ 258 #define _PRIVATE_ 259 #define _GLOBAL_ 260 #define _META_ 261 #define _STRINGS_ 262 #define _CONDITION_ 263 #define _END_ 264 #define _IDENTIFIER_ 265 #define _STRING_IDENTIFIER_ 266 #define _STRING_COUNT_ 267 #define _STRING_OFFSET_ 268 #define _STRING_IDENTIFIER_WITH_WILDCARD_ 269 #define _ANONYMOUS_STRING_ 270 #define _NUMBER_ 271 #define _UNKNOWN_ 272 #define _TEXTSTRING_ 273 #define _HEXSTRING_ 274 #define _REGEXP_ 275 #define _ASCII_ 276 #define _WIDE_ 277 #define _NOCASE_ 278 #define _FULLWORD_ 279 #define _AT_ 280 #define _SIZE_ 281 #define _ENTRYPOINT_ 282 #define _ALL_ 283 #define _ANY_ 284 #define _RVA_ 285 #define _OFFSET_ 286 #define _FILE_ 287 #define _IN_ 288 #define _OF_ 289 #define _FOR_ 290 #define _THEM_ 291 #define _SECTION_ 292 #define _INT8_ 293 #define _INT16_ 294 #define _INT32_ 295 #define _UINT8_ 296 #define _UINT16_ 297 #define _UINT32_ 298 #define _MATCHES_ 299 #define _CONTAINS_ 300 #define _INDEX_ 301 #define _MZ_ 302 #define _PE_ 303 #define _DLL_ 304 #define _TRUE_ 305 #define _FALSE_ 306 #define _OR_ 307 #define _AND_ 308 #define _IS_ 309 #define _NEQ_ 310 #define _EQ_ 311 #define _GE_ 312 #define _GT_ 313 #define _LE_ 314 #define _LT_ 315 #define _SHIFT_RIGHT_ 316 #define _SHIFT_LEFT_ 317 #define _NOT_ 318 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE #line 154 "grammar.y" { SIZED_STRING* sized_string; char* c_string; int64_t integer; YR_STRING* string; YR_META* meta; } /* Line 1529 of yacc.c. */ #line 183 "grammar.h" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 #endif yara-2.0.0/libyara/grammar.y000066400000000000000000001025361225703323600157220ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ %{ #include #include #include #include #include #include "exec.h" #include "hash.h" #include "sizedstr.h" #include "mem.h" #include "lexer.h" #include "parser.h" #include "re.h" #include "utils.h" #include "yara.h" #include "config.h" #ifdef DMALLOC #include #endif #define YYERROR_VERBOSE #define INTEGER_SET_ENUMERATION 1 #define INTEGER_SET_RANGE 2 #define ERROR_IF(x) \ if (x) \ { \ yyerror(yyscanner, NULL); \ YYERROR; \ } \ %} %debug %name-prefix="yara_yy" %pure-parser %parse-param {void *yyscanner} %lex-param {yyscan_t yyscanner} %token _RULE_ %token _PRIVATE_ %token _GLOBAL_ %token _META_ %token _STRINGS_ %token _CONDITION_ %token _END_ %token _IDENTIFIER_ %token _STRING_IDENTIFIER_ %token _STRING_COUNT_ %token _STRING_OFFSET_ %token _STRING_IDENTIFIER_WITH_WILDCARD_ %token _ANONYMOUS_STRING_ %token _NUMBER_ %token _UNKNOWN_ %token _TEXTSTRING_ %token _HEXSTRING_ %token _REGEXP_ %token _ASCII_ %token _WIDE_ %token _NOCASE_ %token _FULLWORD_ %token _AT_ %token _SIZE_ %token _ENTRYPOINT_ %token _ALL_ %token _ANY_ %token _RVA_ %token _OFFSET_ %token _FILE_ %token _IN_ %token _OF_ %token _FOR_ %token _THEM_ %token _SECTION_ %token _INT8_ %token _INT16_ %token _INT32_ %token _UINT8_ %token _UINT16_ %token _UINT32_ %token _MATCHES_ %token _CONTAINS_ %token _INDEX_ %token _MZ_ %token _PE_ %token _DLL_ %token _TRUE_ %token _FALSE_ %left _OR_ %left _AND_ %left '&' '|' '^' %left _LT_ _LE_ _GT_ _GE_ _EQ_ _NEQ_ _IS_ %left _SHIFT_LEFT_ _SHIFT_RIGHT_ %left '+' '-' %left '*' '\\' '%' %right _NOT_ %right '~' %type strings %type string_declaration %type string_declarations %type meta %type meta_declaration %type meta_declarations %type tags %type tag_list %type string_modifier %type string_modifiers %type integer_set %type rule_modifier %type rule_modifiers %destructor { yr_free($$); } _IDENTIFIER_ %destructor { yr_free($$); } _STRING_IDENTIFIER_ %destructor { yr_free($$); } _STRING_COUNT_ %destructor { yr_free($$); } _STRING_OFFSET_ %destructor { yr_free($$); } _STRING_IDENTIFIER_WITH_WILDCARD_ %destructor { yr_free($$); } _ANONYMOUS_STRING_ %destructor { yr_free($$); } _TEXTSTRING_ %destructor { yr_free($$); } _HEXSTRING_ %destructor { yr_free($$); } _REGEXP_ %union { SIZED_STRING* sized_string; char* c_string; int64_t integer; YR_STRING* string; YR_META* meta; } %% rules : /* empty */ | rules rule | rules error rule /* on error skip until next rule..*/ | rules error 'include' /* .. or include statement */ ; rule : rule_modifiers _RULE_ _IDENTIFIER_ tags '{' meta strings condition '}' { int result = yr_parser_reduce_rule_declaration( yyscanner, $1, $3, $4, $7, $6); yr_free($3); ERROR_IF(result != ERROR_SUCCESS); } ; meta : /* empty */ { $$ = NULL; } | _META_ ':' meta_declarations { // Each rule have a list of meta-data info, consisting in a // sequence of YR_META structures. The last YR_META structure does // not represent a real meta-data, it's just a end-of-list marker // identified by a specific type (META_TYPE_NULL). Here we // write the end-of-list marker. YR_META null_meta; YR_COMPILER* compiler; compiler = yyget_extra(yyscanner); memset(&null_meta, 0xFF, sizeof(YR_META)); null_meta.type = META_TYPE_NULL; yr_arena_write_data( compiler->metas_arena, &null_meta, sizeof(YR_META), NULL); $$ = $3; } ; strings : /* empty */ { $$ = NULL; yyget_extra(yyscanner)->current_rule_strings = $$; } | _STRINGS_ ':' string_declarations { // Each rule have a list of strings, consisting in a sequence // of YR_STRING structures. The last YR_STRING structure does not // represent a real string, it's just a end-of-list marker // identified by a specific flag (STRING_FLAGS_NULL). Here we // write the end-of-list marker. YR_STRING null_string; YR_COMPILER* compiler; compiler = yyget_extra(yyscanner); memset(&null_string, 0xFF, sizeof(YR_STRING)); null_string.g_flags = STRING_GFLAGS_NULL; yr_arena_write_data( compiler->strings_arena, &null_string, sizeof(YR_STRING), NULL); $$ = $3; compiler->current_rule_strings = $$; } ; condition : _CONDITION_ ':' boolean_expression ; rule_modifiers : /* empty */ { $$ = 0; } | rule_modifiers rule_modifier { $$ = $1 | $2; } ; rule_modifier : _PRIVATE_ { $$ = RULE_GFLAGS_PRIVATE; } | _GLOBAL_ { $$ = RULE_GFLAGS_GLOBAL; } ; tags : /* empty */ { $$ = NULL; } | ':' tag_list { // Tags list is represented in the arena as a sequence // of null-terminated strings, the sequence ends with an // additional null character. Here we write the ending null //character. Example: tag1\0tag2\0tag3\0\0 yr_arena_write_string( yyget_extra(yyscanner)->sz_arena, "", NULL); $$ = $2; } ; tag_list : _IDENTIFIER_ { char* identifier; yr_arena_write_string( yyget_extra(yyscanner)->sz_arena, $1, &identifier); yr_free($1); $$ = identifier; } | tag_list _IDENTIFIER_ { YR_COMPILER* compiler = yyget_extra(yyscanner); char* tag_name = $1; size_t tag_length = tag_name != NULL ? strlen(tag_name) : 0; while (tag_length > 0) { if (strcmp(tag_name, $2) == 0) { yr_compiler_set_error_extra_info(compiler, tag_name); compiler->last_result = ERROR_DUPLICATE_TAG_IDENTIFIER; break; } tag_name = yr_arena_next_address( yyget_extra(yyscanner)->sz_arena, tag_name, tag_length + 1); tag_length = tag_name != NULL ? strlen(tag_name) : 0; } if (compiler->last_result == ERROR_SUCCESS) compiler->last_result = yr_arena_write_string( yyget_extra(yyscanner)->sz_arena, $2, NULL); yr_free($2); $$ = $1; ERROR_IF(compiler->last_result != ERROR_SUCCESS); } meta_declarations : meta_declaration { $$ = $1; } | meta_declarations meta_declaration { $$ = $1; } ; meta_declaration : _IDENTIFIER_ '=' _TEXTSTRING_ { SIZED_STRING* sized_string = $3; $$ = yr_parser_reduce_meta_declaration( yyscanner, META_TYPE_STRING, $1, sized_string->c_string, 0); yr_free($1); yr_free($3); ERROR_IF($$ == NULL); } | _IDENTIFIER_ '=' _NUMBER_ { $$ = yr_parser_reduce_meta_declaration( yyscanner, META_TYPE_INTEGER, $1, NULL, $3); yr_free($1); ERROR_IF($$ == NULL); } | _IDENTIFIER_ '=' _TRUE_ { $$ = yr_parser_reduce_meta_declaration( yyscanner, META_TYPE_BOOLEAN, $1, NULL, TRUE); yr_free($1); ERROR_IF($$ == NULL); } | _IDENTIFIER_ '=' _FALSE_ { $$ = yr_parser_reduce_meta_declaration( yyscanner, META_TYPE_BOOLEAN, $1, NULL, FALSE); yr_free($1); ERROR_IF($$ == NULL); } ; string_declarations : string_declaration { $$ = $1; } | string_declarations string_declaration { $$ = $1; } ; string_declaration : _STRING_IDENTIFIER_ '=' _TEXTSTRING_ string_modifiers { $$ = yr_parser_reduce_string_declaration( yyscanner, $4, $1, $3); yr_free($1); yr_free($3); ERROR_IF($$ == NULL); } | _STRING_IDENTIFIER_ '=' { YR_COMPILER* compiler = yyget_extra(yyscanner); compiler->error_line = yyget_lineno(yyscanner); } _REGEXP_ string_modifiers { $$ = yr_parser_reduce_string_declaration( yyscanner, $5 | STRING_GFLAGS_REGEXP, $1, $4); yr_free($1); yr_free($4); ERROR_IF($$ == NULL); } | _STRING_IDENTIFIER_ '=' _HEXSTRING_ { $$ = yr_parser_reduce_string_declaration( yyscanner, STRING_GFLAGS_HEXADECIMAL, $1, $3); yr_free($1); yr_free($3); ERROR_IF($$ == NULL); } ; string_modifiers : /* empty */ { $$ = 0; } | string_modifiers string_modifier { $$ = $1 | $2; } ; string_modifier : _WIDE_ { $$ = STRING_GFLAGS_WIDE; } | _ASCII_ { $$ = STRING_GFLAGS_ASCII; } | _NOCASE_ { $$ = STRING_GFLAGS_NO_CASE; } | _FULLWORD_ { $$ = STRING_GFLAGS_FULL_WORD; } ; boolean_expression : '(' boolean_expression ')' | _TRUE_ { yr_parser_emit_with_arg(yyscanner, PUSH, 1, NULL); } | _FALSE_ { yr_parser_emit_with_arg(yyscanner, PUSH, 0, NULL); } | _IDENTIFIER_ { YR_COMPILER* compiler = yyget_extra(yyscanner); YR_RULE* rule; rule = (YR_RULE*) yr_hash_table_lookup( compiler->rules_table, $1, compiler->current_namespace->name); if (rule != NULL) { compiler->last_result = yr_parser_emit_with_arg_reloc( yyscanner, RULE_PUSH, PTR_TO_UINT64(rule), NULL); } else { compiler->last_result = yr_parser_reduce_external( yyscanner, $1, EXT_BOOL); } yr_free($1); ERROR_IF(compiler->last_result != ERROR_SUCCESS); } | text _MATCHES_ _REGEXP_ { YR_COMPILER* compiler = yyget_extra(yyscanner); SIZED_STRING* sized_string = $3; RE* re; compiler->last_result = yr_re_compile( sized_string->c_string, &re); if (sized_string->flags & SIZED_STRING_FLAGS_NO_CASE) re->flags |= RE_FLAGS_NO_CASE; ERROR_IF(compiler->last_result != ERROR_SUCCESS); compiler->last_result = yr_re_emit_code( re, compiler->re_code_arena); ERROR_IF(compiler->last_result != ERROR_SUCCESS); yr_parser_emit_with_arg_reloc( yyscanner, PUSH, PTR_TO_UINT64(re->root_node->forward_code), NULL); yr_parser_emit_with_arg( yyscanner, PUSH, re->flags, NULL); yr_parser_emit(yyscanner, MATCHES, NULL); yr_re_destroy(re); yr_free($3); ERROR_IF(compiler->last_result != ERROR_SUCCESS); } | text _CONTAINS_ text { yr_parser_emit(yyscanner, CONTAINS, NULL); } | _STRING_IDENTIFIER_ { int result = yr_parser_reduce_string_identifier( yyscanner, $1, SFOUND); yr_free($1); ERROR_IF(result != ERROR_SUCCESS); } | _STRING_IDENTIFIER_ _AT_ expression { int result = yr_parser_reduce_string_identifier( yyscanner, $1, SFOUND_AT); yr_free($1); ERROR_IF(result != ERROR_SUCCESS); } | _STRING_IDENTIFIER_ _AT_ _RVA_ expression { yr_free($1); } | _STRING_IDENTIFIER_ _IN_ range { int result = yr_parser_reduce_string_identifier( yyscanner, $1, SFOUND_IN); yr_free($1); ERROR_IF(result != ERROR_SUCCESS); } | _STRING_IDENTIFIER_ _IN_ _SECTION_ '(' _TEXTSTRING_ ')' { yr_free($1); yr_free($5); } | _FOR_ for_expression _IDENTIFIER_ _IN_ { YR_COMPILER* compiler = yyget_extra(yyscanner); int result = ERROR_SUCCESS; int var_index; if (compiler->loop_depth == MAX_LOOP_NESTING) compiler->last_result = \ ERROR_LOOP_NESTING_LIMIT_EXCEEDED; ERROR_IF(compiler->last_result != ERROR_SUCCESS); var_index = yr_parser_lookup_loop_variable( yyscanner, $3); if (var_index >= 0) { yr_compiler_set_error_extra_info( compiler, $3); compiler->last_result = \ ERROR_DUPLICATE_LOOP_IDENTIFIER; } ERROR_IF(compiler->last_result != ERROR_SUCCESS); // Push end-of-list marker result = yr_parser_emit_with_arg( yyscanner, PUSH, UNDEFINED, NULL); ERROR_IF(result != ERROR_SUCCESS); } integer_set ':' { YR_COMPILER* compiler = yyget_extra(yyscanner); int mem_offset = LOOP_LOCAL_VARS * compiler->loop_depth; int8_t* addr; // Clear counter for number of expressions evaluating // to TRUE. yr_parser_emit_with_arg( yyscanner, CLEAR_M, mem_offset + 1, NULL); // Clear iterations counter yr_parser_emit_with_arg( yyscanner, CLEAR_M, mem_offset + 2, NULL); if ($6 == INTEGER_SET_ENUMERATION) { // Pop the first integer yr_parser_emit_with_arg( yyscanner, POP_M, mem_offset, &addr); } else // INTEGER_SET_RANGE { yr_parser_emit_with_arg( yyscanner, POP_M, mem_offset + 3, &addr); yr_parser_emit_with_arg( yyscanner, POP_M, mem_offset, NULL); } compiler->loop_address[compiler->loop_depth] = addr; compiler->loop_identifier[compiler->loop_depth] = $3; compiler->loop_depth++; } '(' boolean_expression ')' { YR_COMPILER* compiler = yyget_extra(yyscanner); int mem_offset; compiler->loop_depth--; mem_offset = LOOP_LOCAL_VARS * compiler->loop_depth; yr_parser_emit_with_arg( yyscanner, ADD_M, mem_offset + 1, NULL); yr_parser_emit_with_arg( yyscanner, INCR_M, mem_offset + 2, NULL); if ($6 == INTEGER_SET_ENUMERATION) { yr_parser_emit_with_arg_reloc( yyscanner, JNUNDEF, PTR_TO_UINT64( compiler->loop_address[compiler->loop_depth]), NULL); } else // INTEGER_SET_RANGE { yr_parser_emit_with_arg( yyscanner, INCR_M, mem_offset, NULL); yr_parser_emit_with_arg( yyscanner, PUSH_M, mem_offset, NULL); yr_parser_emit_with_arg( yyscanner, PUSH_M, mem_offset + 3, NULL); yr_parser_emit_with_arg_reloc( yyscanner, JLE, PTR_TO_UINT64( compiler->loop_address[compiler->loop_depth]), NULL); yr_parser_emit(yyscanner, POP, NULL); yr_parser_emit(yyscanner, POP, NULL); } // Pop end-of-list marker. yr_parser_emit(yyscanner, POP, NULL); // At this point the loop quantifier (any, all, 1, 2,..) // is at the top of the stack. Check if the quantifier // is undefined (meaning "all") and replace it with the // iterations counter in that case. yr_parser_emit_with_arg( yyscanner, SWAPUNDEF, mem_offset + 2, NULL); // Compare the loop quantifier with the number of // expressions evaluating to TRUE. yr_parser_emit_with_arg( yyscanner, PUSH_M, mem_offset + 1, NULL); yr_parser_emit(yyscanner, LE, NULL); compiler->loop_identifier[compiler->loop_depth] = NULL; yr_free($3); } | _FOR_ for_expression _OF_ string_set ':' { YR_COMPILER* compiler = yyget_extra(yyscanner); int mem_offset = LOOP_LOCAL_VARS * compiler->loop_depth; int8_t* addr; if (compiler->loop_depth == MAX_LOOP_NESTING) compiler->last_result = \ ERROR_LOOP_NESTING_LIMIT_EXCEEDED; ERROR_IF(compiler->last_result != ERROR_SUCCESS); yr_parser_emit_with_arg( yyscanner, CLEAR_M, mem_offset + 1, NULL); yr_parser_emit_with_arg( yyscanner, CLEAR_M, mem_offset + 2, NULL); // Pop the first string. yr_parser_emit_with_arg( yyscanner, POP_M, mem_offset, &addr); compiler->loop_address[compiler->loop_depth] = addr; compiler->loop_depth++; } '(' boolean_expression ')' { YR_COMPILER* compiler = yyget_extra(yyscanner); int mem_offset; compiler->loop_depth--; mem_offset = LOOP_LOCAL_VARS * compiler->loop_depth; // Increment counter by the value returned by the // boolean expression (0 or 1). yr_parser_emit_with_arg( yyscanner, ADD_M, mem_offset + 1, NULL); // Increment iterations counter. yr_parser_emit_with_arg( yyscanner, INCR_M, mem_offset + 2, NULL); // If next string is not undefined, go back to the // begining of the loop. yr_parser_emit_with_arg_reloc( yyscanner, JNUNDEF, PTR_TO_UINT64( compiler->loop_address[compiler->loop_depth]), NULL); // Pop end-of-list marker. yr_parser_emit(yyscanner, POP, NULL); // At this point the loop quantifier (any, all, 1, 2,..) // is at top of the stack. Check if the quantifier is // undefined (meaning "all") and replace it with the // iterations counter in that case. yr_parser_emit_with_arg( yyscanner, SWAPUNDEF, mem_offset + 2, NULL); // Compare the loop quantifier with the number of // expressions evaluating to TRUE. yr_parser_emit_with_arg( yyscanner, PUSH_M, mem_offset + 1, NULL); yr_parser_emit(yyscanner, LE, NULL); } | for_expression _OF_ string_set { yr_parser_emit(yyscanner, OF, NULL); } | _FILE_ _IS_ type { } | _NOT_ boolean_expression { yr_parser_emit(yyscanner, NOT, NULL); } | boolean_expression _AND_ boolean_expression { yr_parser_emit(yyscanner, AND, NULL); } | boolean_expression _OR_ boolean_expression { yr_parser_emit(yyscanner, OR, NULL); } | expression _LT_ expression { yr_parser_emit(yyscanner, LT, NULL); } | expression _GT_ expression { yr_parser_emit(yyscanner, GT, NULL); } | expression _LE_ expression { yr_parser_emit(yyscanner, LE, NULL); } | expression _GE_ expression { yr_parser_emit(yyscanner, GE, NULL); } | expression _EQ_ expression { yr_parser_emit(yyscanner, EQ, NULL); } | expression _IS_ expression { yr_parser_emit(yyscanner, EQ, NULL); } | expression _NEQ_ expression { yr_parser_emit(yyscanner, NEQ, NULL); } ; text : _TEXTSTRING_ { YR_COMPILER* compiler = yyget_extra(yyscanner); SIZED_STRING* sized_string = $1; char* string; yr_arena_write_string( compiler->sz_arena, sized_string->c_string, &string); yr_parser_emit_with_arg_reloc( yyscanner, PUSH, PTR_TO_UINT64(string), NULL); yr_free($1); } | _IDENTIFIER_ { int result = yr_parser_reduce_external( yyscanner, $1, EXT_STR); yr_free($1); ERROR_IF(result != ERROR_SUCCESS); } ; integer_set : '(' integer_enumeration ')' { $$ = INTEGER_SET_ENUMERATION; } | range { $$ = INTEGER_SET_RANGE; } ; range : '(' expression '.' '.' expression ')' ; integer_enumeration : expression | integer_enumeration ',' expression ; string_set : '(' { yr_parser_emit_with_arg(yyscanner, PUSH, UNDEFINED, NULL); } string_enumeration ')' | _THEM_ { yr_parser_emit_with_arg(yyscanner, PUSH, UNDEFINED, NULL); yr_parser_emit_pushes_for_strings(yyscanner, "$*"); } ; string_enumeration : string_enumeration_item | string_enumeration ',' string_enumeration_item ; string_enumeration_item : _STRING_IDENTIFIER_ { yr_parser_emit_pushes_for_strings(yyscanner, $1); yr_free($1); } | _STRING_IDENTIFIER_WITH_WILDCARD_ { yr_parser_emit_pushes_for_strings(yyscanner, $1); yr_free($1); } ; for_expression : expression | _ALL_ { yr_parser_emit_with_arg(yyscanner, PUSH, UNDEFINED, NULL); } | _ANY_ { yr_parser_emit_with_arg(yyscanner, PUSH, 1, NULL); } ; expression : '(' expression ')' | _SIZE_ { yr_parser_emit(yyscanner, SIZE, NULL); } | _ENTRYPOINT_ { yr_parser_emit(yyscanner, ENTRYPOINT, NULL); } | _INT8_ '(' expression ')' { yr_parser_emit(yyscanner, INT8, NULL); } | _INT16_ '(' expression ')' { yr_parser_emit(yyscanner, INT16, NULL); } | _INT32_ '(' expression ')' { yr_parser_emit(yyscanner, INT32, NULL); } | _UINT8_ '(' expression ')' { yr_parser_emit(yyscanner, UINT8, NULL); } | _UINT16_ '(' expression ')' { yr_parser_emit(yyscanner, UINT16, NULL); } | _UINT32_ '(' expression ')' { yr_parser_emit(yyscanner, UINT32, NULL); } | _NUMBER_ { yr_parser_emit_with_arg(yyscanner, PUSH, $1, NULL); } | _STRING_COUNT_ { int result = yr_parser_reduce_string_identifier( yyscanner, $1, SCOUNT); yr_free($1); ERROR_IF(result != ERROR_SUCCESS); } | _STRING_OFFSET_ '[' expression ']' { int result = yr_parser_reduce_string_identifier( yyscanner, $1, SOFFSET); yr_free($1); ERROR_IF(result != ERROR_SUCCESS); } | _STRING_OFFSET_ { int result = yr_parser_emit_with_arg(yyscanner, PUSH, 1, NULL); if (result == ERROR_SUCCESS) result = yr_parser_reduce_string_identifier( yyscanner, $1, SOFFSET); yr_free($1); ERROR_IF(result != ERROR_SUCCESS); } | _IDENTIFIER_ { YR_COMPILER* compiler = yyget_extra(yyscanner); int var_index; var_index = yr_parser_lookup_loop_variable(yyscanner, $1); if (var_index >= 0) { yr_parser_emit_with_arg( yyscanner, PUSH_M, LOOP_LOCAL_VARS * var_index, NULL); } else { compiler->last_result = yr_parser_reduce_external( yyscanner, $1, EXT_INT); } yr_free($1); ERROR_IF(compiler->last_result != ERROR_SUCCESS); } | expression '+' expression { yr_parser_emit(yyscanner, ADD, NULL); } | expression '-' expression { yr_parser_emit(yyscanner, SUB, NULL); } | expression '*' expression { yr_parser_emit(yyscanner, MUL, NULL); } | expression '\\' expression { yr_parser_emit(yyscanner, DIV, NULL); } | expression '%' expression { yr_parser_emit(yyscanner, MOD, NULL); } | expression '^' expression { yr_parser_emit(yyscanner, XOR, NULL); } | expression '&' expression { yr_parser_emit(yyscanner, AND, NULL); } | expression '|' expression { yr_parser_emit(yyscanner, OR, NULL); } | '~' expression { yr_parser_emit(yyscanner, NEG, NULL); } | expression _SHIFT_LEFT_ expression { yr_parser_emit(yyscanner, SHL, NULL); } | expression _SHIFT_RIGHT_ expression { yr_parser_emit(yyscanner, SHR, NULL); } ; type : _MZ_ | _PE_ | _DLL_ ; %% yara-2.0.0/libyara/hash.c000066400000000000000000000141631225703323600151670ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #include #include #include "hash.h" #include "mem.h" #define ROTATE_INT32(x, shift) \ ((x << (shift % 32)) | (x >> (32 - (shift % 32)))) uint32_t byte_to_int32[] = { 0xC3113E7F,0x4C353C5F,0x7423810B,0x258D264E,0xDAD39DED,0x75D0B694,0x98CE1216, 0x93334482,0xC5C48EA5,0xF57E0E8B,0x5D7F3723,0x396B1B24,0xA8883D9F,0xB2A74A00, 0xF8E171AE,0x3F01FBAB,0x5C1840CB,0xDDD833C4,0x8D8CCA34,0x32EF223A,0x1A05B871, 0x9A9B6BFC,0x50406A0C,0xE7E1FC04,0x5E07D7F6,0x80B83660,0x20892A62,0xB2C6FEA6, 0x6CEC7CAA,0x182F764B,0x3B0353E7,0x57FC2520,0x4B6812D4,0xACB654E4,0x23C75C04, 0xB1DCD731,0xE3AF0733,0xF2366D39,0xC729671B,0xFF3BE6F2,0xABA37E34,0x3CDAFA38, 0xAAD18D03,0xA8D35345,0x08E9A92C,0xF9324059,0x42D821BE,0x1BC152DD,0x5588811C, 0x874A1F9A,0x6E83E9CD,0xDA6F3AF8,0x965D4670,0xA7A565C0,0x68D8A9AF,0xFC8FD8FD, 0x8FF99FF9,0x4C9B42AE,0x2D066A8D,0x4D1802F7,0x557032B2,0x12BCF371,0xDC29D5AE, 0x72EA361F,0xE2835B0B,0xDFC58966,0x13B0F34D,0x3FA02BCD,0xBF282E3D,0x7DC877F5, 0xF4848A32,0x861E35F5,0x7FFA0D7F,0x515F2E4E,0x6B235D5C,0x55F46E24,0x35AD2C99, 0x072654A8,0x05163F0F,0x9317B11A,0xAED1FC10,0x989444F0,0xDB3E1814,0x446C0CF1, 0x660BF511,0x2F227D3A,0xFDBA0539,0xC649E621,0x5204D7CE,0x5FA386D0,0xE5F22005, 0x97B6C8A1,0x4AB69EC2,0x5C7CA70D,0x39A48EC6,0x7BACF378,0x8D0ED3D1,0xE39DE582, 0xC5FBE2AB,0x37E3D2D0,0x06F44724,0x73144144,0xBA57E905,0xB05B4307,0xAEED8D97, 0xA68CCAC4,0xE30DA57E,0xED0F194B,0x8C2B9B7A,0x814575D5,0x79588493,0x81D3712A, 0x3FA892F2,0x80F0BB94,0x44EAF51A,0x4E05F1D4,0xFC69F858,0x775E8D60,0x22B20DD7, 0x170A87EA,0x1077DE52,0x3D5EC9FB,0x0B6EB1E5,0xF2F9CCAF,0xA76C7DEB,0xD8C2D873, 0xF438C592,0x6239FEEC,0x26D3D2A9,0x30F6FADF,0x4B2984CC,0x6257F3DA,0x0E0583E2, 0x143E5E61,0xBB2732BF,0x9653217A,0x027A84EA,0x95C9AE8B,0x89B8B82B,0x9F286485, 0x29F622FE,0x52A3196B,0x8392D95F,0x33A79167,0xF5DEE92A,0x6E397DB9,0x11931C01, 0x8DD2CD3B,0xF9E6003D,0xAB955AF4,0xD38725F9,0xDCF6F8AE,0x7667A958,0xE67AD995, 0xB7CF979A,0xD88EBE5B,0x5BA889F0,0x078BDD90,0x447238F9,0x3135F672,0x187B95A8, 0x0B7D5751,0xACD59D2A,0x9C5D1929,0x579E5022,0xEA90499B,0x59901800,0x82237DB5, 0x7A375509,0xACA9A22A,0xEC96E649,0x69339DB0,0x081D0D9B,0xD72FB8B9,0xA4184653, 0xC057321D,0xED19CAB9,0xB48F1E3E,0xB9DAC51E,0xDAED2FC7,0x7598CBBD,0x208DF346, 0x044BE6EC,0x1C63E6EB,0xA15F64C1,0xE024A061,0x68309584,0x0758A68D,0xF274E9AE, 0x0ABEA0CC,0xED4FB267,0x63D6EC46,0x9F28E026,0xF0694A17,0x9D6E9115,0xC4600FAD, 0x5B121E99,0xD6B4A13B,0xF5364B8A,0x8514B254,0x0182F8DD,0xDB09F90B,0x78C70B32, 0xD8EC3B02,0x8CD7084D,0xA4439838,0x72F35A3D,0x200B48A5,0xE2351444,0xA5552F5F, 0xD8C1E746,0x0FE5EF3C,0xB6A47063,0x61F4E68B,0x08FED99B,0x7E461445,0x43CB8380, 0x28BA03C8,0x21A7A2E2,0x43437ED6,0x2A9E6670,0x89B4A106,0xC6C2F4EE,0x9C4063CC, 0x2FA0DF6C,0xB54DC409,0xCF01538F,0x616431D7,0x02CB0E4D,0x44FFF425,0xAAD5188E, 0x0742E9BC,0xFFF41353,0x130F0A15,0x787BDC10,0x4A327B72,0x702989F7,0x5F704798, 0x8156A1BB,0x2BCA3E74,0x1911A8C4,0x5E1F27D3,0x07949DC7,0xF24C2056,0xB4299EE6, 0x9C7045D9,0xA8BF6307,0x7454AAD2,0x256425E5,0xD87DEF67,0xCFE95452,0xE7548DF7, 0xA84956C7,0xD8402C60,0xCFBD0373,0x6B6CDAFE }; uint32_t hash( uint32_t seed, uint8_t* buffer, int len) { int i; uint32_t result = seed; for (i = len - 1; i > 0; i--) { result ^= ROTATE_INT32(byte_to_int32[*buffer], i); buffer++; } result ^= byte_to_int32[*buffer]; return result; } int yr_hash_table_create( int size, YR_HASH_TABLE** table) { YR_HASH_TABLE* new_table; int i; new_table = yr_malloc( sizeof(YR_HASH_TABLE) + size * sizeof(YR_HASH_TABLE_ENTRY*)); if (new_table == NULL) return ERROR_INSUFICIENT_MEMORY; new_table->size = size; for (i = 0; i < size; i++) new_table->buckets[i] = NULL; *table = new_table; return ERROR_SUCCESS; } void yr_hash_table_destroy( YR_HASH_TABLE* table) { YR_HASH_TABLE_ENTRY* entry; YR_HASH_TABLE_ENTRY* next_entry; int i; for (i = 0; i < table->size; i++) { entry = table->buckets[i]; while (entry != NULL) { next_entry = entry->next; if (entry->ns != NULL) yr_free(entry->ns); yr_free(entry->key); yr_free(entry); entry = next_entry; } } yr_free(table); } void* yr_hash_table_lookup( YR_HASH_TABLE* table, const char* key, const char* ns) { YR_HASH_TABLE_ENTRY* entry; uint32_t bucket_index; bucket_index = hash(0, (uint8_t*) key, strlen(key)); if (ns != NULL) bucket_index = hash(bucket_index, (uint8_t*) ns, strlen(ns)); bucket_index = bucket_index % table->size; entry = table->buckets[bucket_index]; while (entry != NULL) { if (strcmp(entry->key, key) == 0 && (entry->ns == ns || strcmp(entry->ns, ns) == 0)) { return entry->value; } entry = entry->next; } return NULL; } int yr_hash_table_add( YR_HASH_TABLE* table, const char* key, const char* ns, void* value) { YR_HASH_TABLE_ENTRY* entry; uint32_t bucket_index; entry = (YR_HASH_TABLE_ENTRY*) yr_malloc(sizeof(YR_HASH_TABLE_ENTRY)); if (entry == NULL) return ERROR_INSUFICIENT_MEMORY; entry->key = yr_strdup(key); if (entry->key == NULL) { yr_free(entry); return ERROR_INSUFICIENT_MEMORY; } if (ns != NULL) entry->ns = yr_strdup(ns); else entry->ns = NULL; entry->value = value; bucket_index = hash(0, (uint8_t*) key, strlen(key)); if (ns != NULL) bucket_index = hash(bucket_index, (uint8_t*) ns, strlen(ns)); bucket_index = bucket_index % table->size; entry->next = table->buckets[bucket_index]; table->buckets[bucket_index] = entry; return ERROR_SUCCESS; } yara-2.0.0/libyara/hash.h000066400000000000000000000017271225703323600151760ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #ifndef _HASH_H #define _HASH_H #include "yara.h" int yr_hash_table_create( int size, YR_HASH_TABLE** table); void yr_hash_table_destroy( YR_HASH_TABLE* table); void* yr_hash_table_lookup( YR_HASH_TABLE* table, const char* key, const char* ns); int yr_hash_table_add( YR_HASH_TABLE* table, const char* key, const char* ns, void* value); #endif yara-2.0.0/libyara/hex_grammar.c000066400000000000000000001426751225703323600165500ustar00rootroot00000000000000/* A Bison parser, made by GNU Bison 2.3. */ /* Skeleton implementation for Bison's Yacc-like parsers in C Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. 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, 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. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ #define YYBISON_VERSION "2.3" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 1 /* Using locations. */ #define YYLSP_NEEDED 0 /* Substitute the variable and function names. */ #define yyparse hex_yyparse #define yylex hex_yylex #define yyerror hex_yyerror #define yylval hex_yylval #define yychar hex_yychar #define yydebug hex_yydebug #define yynerrs hex_yynerrs /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { _BYTE_ = 258, _MASKED_BYTE_ = 259, _NUMBER_ = 260 }; #endif /* Tokens. */ #define _BYTE_ 258 #define _MASKED_BYTE_ 259 #define _NUMBER_ 260 /* Copy the first part of user declarations. */ #line 17 "hex_grammar.y" #include #include #include "hex_lexer.h" #include "mem.h" #include "re.h" #include "yara.h" #include "config.h" #ifdef DMALLOC #include #endif #define STR_EXPAND(tok) #tok #define STR(tok) STR_EXPAND(tok) #define YYERROR_VERBOSE #define YYDEBUG 0 #define mark_as_not_fast_hex_regexp() \ ((RE*) yyget_extra(yyscanner))->flags &= ~RE_FLAGS_FAST_HEX_REGEXP #if YYDEBUG yydebug = 1; #endif #define ERROR_IF(x, error) \ if (x) \ { \ RE* re = yyget_extra(yyscanner); \ re->error_code = error; \ YYABORT; \ } \ #define DESTROY_NODE_IF(x, node) \ if (x) \ { \ yr_re_node_destroy(node); \ } \ /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 1 #endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 0 #endif /* Enabling the token table. */ #ifndef YYTOKEN_TABLE # define YYTOKEN_TABLE 0 #endif #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE #line 74 "hex_grammar.y" { int integer; RE_NODE *re_node; } /* Line 193 of yacc.c. */ #line 165 "hex_grammar.c" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 #endif /* Copy the second part of user declarations. */ /* Line 216 of yacc.c. */ #line 178 "hex_grammar.c" #ifdef short # undef short #endif #ifdef YYTYPE_UINT8 typedef YYTYPE_UINT8 yytype_uint8; #else typedef unsigned char yytype_uint8; #endif #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; #elif (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; #else typedef short int yytype_int8; #endif #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else typedef short int yytype_int16; #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned int # endif #endif #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(msgid) dgettext ("bison-runtime", msgid) # endif # endif # ifndef YY_ # define YY_(msgid) msgid # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(e) ((void) (e)) #else # define YYUSE(e) /* empty */ #endif /* Identity function, used to suppress warnings about constant conditions. */ #ifndef lint # define YYID(n) (n) #else #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static int YYID (int i) #else static int YYID (i) int i; #endif { return i; } #endif #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's `empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined _STDLIB_H \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yytype_int16 yyss; YYSTYPE yyvs; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) /* Copy COUNT objects from FROM to TO. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(To, From, Count) \ __builtin_memcpy (To, From, (Count) * sizeof (*(From))) # else # define YYCOPY(To, From, Count) \ do \ { \ YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (To)[yyi] = (From)[yyi]; \ } \ while (YYID (0)) # endif # endif /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack) \ do \ { \ YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack, Stack, yysize); \ Stack = &yyptr->Stack; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (YYID (0)) #endif /* YYFINAL -- State number of the termination state. */ #define YYFINAL 10 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 25 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 14 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 8 /* YYNRULES -- Number of rules. */ #define YYNRULES 16 /* YYNRULES -- Number of states. */ #define YYNSTATES 25 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 260 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 8, 9, 2, 2, 2, 12, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 10, 2, 11, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 13, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5 }; #if YYDEBUG /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ static const yytype_uint8 yyprhs[] = { 0, 0, 3, 7, 9, 12, 14, 15, 20, 24, 26, 30, 33, 35, 37, 41, 43 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int8 yyrhs[] = { 15, 0, -1, 6, 16, 7, -1, 17, -1, 16, 17, -1, 21, -1, -1, 8, 18, 20, 9, -1, 10, 19, 11, -1, 5, -1, 5, 12, 5, -1, 5, 12, -1, 12, -1, 16, -1, 20, 13, 16, -1, 3, -1, 4, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 93, 93, 101, 105, 116, 121, 120, 129, 137, 164, 201, 226, 253, 257, 269, 277 }; #endif #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "$end", "error", "$undefined", "_BYTE_", "_MASKED_BYTE_", "_NUMBER_", "'{'", "'}'", "'('", "')'", "'['", "']'", "'-'", "'|'", "$accept", "hex_string", "tokens", "token", "@1", "range", "alternatives", "byte", 0 }; #endif # ifdef YYPRINT /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to token YYLEX-NUM. */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 123, 125, 40, 41, 91, 93, 45, 124 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 14, 15, 16, 16, 17, 18, 17, 17, 19, 19, 19, 19, 20, 20, 21, 21 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 3, 1, 2, 1, 0, 4, 3, 1, 3, 2, 1, 1, 3, 1, 1 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state STATE-NUM when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const yytype_uint8 yydefact[] = { 0, 0, 0, 15, 16, 6, 0, 0, 3, 5, 1, 0, 9, 12, 0, 2, 4, 13, 0, 11, 8, 7, 0, 10, 14 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int8 yydefgoto[] = { -1, 2, 7, 8, 11, 14, 18, 9 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -11 static const yytype_int8 yypact[] = { -2, 10, 5, -11, -11, -11, 3, -1, -11, -11, -11, 10, 4, -11, 0, -11, -11, 10, 12, 14, -11, -11, 10, -11, 10 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { -11, -11, -10, -7, -11, -11, -11, -11 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -1 static const yytype_uint8 yytable[] = { 16, 17, 3, 4, 1, 10, 15, 5, 12, 6, 16, 20, 24, 3, 4, 13, 19, 16, 5, 23, 6, 21, 0, 0, 0, 22 }; static const yytype_int8 yycheck[] = { 7, 11, 3, 4, 6, 0, 7, 8, 5, 10, 17, 11, 22, 3, 4, 12, 12, 24, 8, 5, 10, 9, -1, -1, -1, 13 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 6, 15, 3, 4, 8, 10, 16, 17, 21, 0, 18, 5, 12, 19, 7, 17, 16, 20, 12, 11, 9, 13, 5, 16 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY (-2) #define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. */ #define YYFAIL goto yyerrlab #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY && yylen == 1) \ { \ yychar = (Token); \ yylval = (Value); \ yytoken = YYTRANSLATE (yychar); \ YYPOPSTACK (1); \ goto yybackup; \ } \ else \ { \ yyerror (yyscanner, lex_env, YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (YYID (0)) #define YYTERROR 1 #define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ #define YYRHSLOC(Rhs, K) ((Rhs)[K]) #ifndef YYLLOC_DEFAULT # define YYLLOC_DEFAULT(Current, Rhs, N) \ do \ if (YYID (N)) \ { \ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ } \ else \ { \ (Current).first_line = (Current).last_line = \ YYRHSLOC (Rhs, 0).last_line; \ (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ while (YYID (0)) #endif /* YY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ #ifndef YY_LOCATION_PRINT # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL # define YY_LOCATION_PRINT(File, Loc) \ fprintf (File, "%d.%d-%d.%d", \ (Loc).first_line, (Loc).first_column, \ (Loc).last_line, (Loc).last_column) # else # define YY_LOCATION_PRINT(File, Loc) ((void) 0) # endif #endif /* YYLEX -- calling `yylex' with the right arguments. */ #ifdef YYLEX_PARAM # define YYLEX yylex (&yylval, YYLEX_PARAM) #else # define YYLEX yylex (&yylval, yyscanner, lex_env) #endif /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (YYID (0)) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Type, Value, yyscanner, lex_env); \ YYFPRINTF (stderr, "\n"); \ } \ } while (YYID (0)) /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, void *yyscanner, LEX_ENVIRONMENT *lex_env) #else static void yy_symbol_value_print (yyoutput, yytype, yyvaluep, yyscanner, lex_env) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; void *yyscanner; LEX_ENVIRONMENT *lex_env; #endif { if (!yyvaluep) return; YYUSE (yyscanner); YYUSE (lex_env); # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # else YYUSE (yyoutput); # endif switch (yytype) { default: break; } } /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, void *yyscanner, LEX_ENVIRONMENT *lex_env) #else static void yy_symbol_print (yyoutput, yytype, yyvaluep, yyscanner, lex_env) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; void *yyscanner; LEX_ENVIRONMENT *lex_env; #endif { if (yytype < YYNTOKENS) YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); else YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep, yyscanner, lex_env); YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) #else static void yy_stack_print (bottom, top) yytype_int16 *bottom; yytype_int16 *top; #endif { YYFPRINTF (stderr, "Stack now"); for (; bottom <= top; ++bottom) YYFPRINTF (stderr, " %d", *bottom); YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_reduce_print (YYSTYPE *yyvsp, int yyrule, void *yyscanner, LEX_ENVIRONMENT *lex_env) #else static void yy_reduce_print (yyvsp, yyrule, yyscanner, lex_env) YYSTYPE *yyvsp; int yyrule; void *yyscanner; LEX_ENVIRONMENT *lex_env; #endif { int yynrhs = yyr2[yyrule]; int yyi; unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { fprintf (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) , yyscanner, lex_env); fprintf (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyvsp, Rule, yyscanner, lex_env); \ } while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif #if YYERROR_VERBOSE # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen strlen # else /* Return the length of YYSTR. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) #else static YYSIZE_T yystrlen (yystr) const char *yystr; #endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif # endif # ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) #else static char * yystpcpy (yydest, yysrc) char *yydest; const char *yysrc; #endif { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif # endif # ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (! yyres) return yystrlen (yystr); return yystpcpy (yyres, yystr) - yyres; } # endif /* Copy into YYRESULT an error message about the unexpected token YYCHAR while in state YYSTATE. Return the number of bytes copied, including the terminating null byte. If YYRESULT is null, do not copy anything; just return the number of bytes that would be copied. As a special case, return 0 if an ordinary "syntax error" message will do. Return YYSIZE_MAXIMUM if overflow occurs during size calculation. */ static YYSIZE_T yysyntax_error (char *yyresult, int yystate, int yychar) { int yyn = yypact[yystate]; if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) return 0; else { int yytype = YYTRANSLATE (yychar); YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); YYSIZE_T yysize = yysize0; YYSIZE_T yysize1; int yysize_overflow = 0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; int yyx; # if 0 /* This is so xgettext sees the translatable formats that are constructed on the fly. */ YY_("syntax error, unexpected %s"); YY_("syntax error, unexpected %s, expecting %s"); YY_("syntax error, unexpected %s, expecting %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); # endif char *yyfmt; char const *yyf; static char const yyunexpected[] = "syntax error, unexpected %s"; static char const yyexpecting[] = ", expecting %s"; static char const yyor[] = " or %s"; char yyformat[sizeof yyunexpected + sizeof yyexpecting - 1 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) * (sizeof yyor - 1))]; char const *yyprefix = yyexpecting; /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yycount = 1; yyarg[0] = yytname[yytype]; yyfmt = yystpcpy (yyformat, yyunexpected); for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) { if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { yycount = 1; yysize = yysize0; yyformat[sizeof yyunexpected - 1] = '\0'; break; } yyarg[yycount++] = yytname[yyx]; yysize1 = yysize + yytnamerr (0, yytname[yyx]); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; yyfmt = yystpcpy (yyfmt, yyprefix); yyprefix = yyor; } yyf = YY_(yyformat); yysize1 = yysize + yystrlen (yyf); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; if (yysize_overflow) return YYSIZE_MAXIMUM; if (yyresult) { /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ char *yyp = yyresult; int yyi = 0; while ((*yyp = *yyf) != '\0') { if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yyarg[yyi++]); yyf += 2; } else { yyp++; yyf++; } } } return yysize; } } #endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, void *yyscanner, LEX_ENVIRONMENT *lex_env) #else static void yydestruct (yymsg, yytype, yyvaluep, yyscanner, lex_env) const char *yymsg; int yytype; YYSTYPE *yyvaluep; void *yyscanner; LEX_ENVIRONMENT *lex_env; #endif { YYUSE (yyvaluep); YYUSE (yyscanner); YYUSE (lex_env); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); switch (yytype) { case 16: /* "tokens" */ #line 85 "hex_grammar.y" { yr_re_node_destroy((yyvaluep->re_node)); }; #line 1085 "hex_grammar.c" break; case 17: /* "token" */ #line 86 "hex_grammar.y" { yr_re_node_destroy((yyvaluep->re_node)); }; #line 1090 "hex_grammar.c" break; case 19: /* "range" */ #line 89 "hex_grammar.y" { yr_re_node_destroy((yyvaluep->re_node)); }; #line 1095 "hex_grammar.c" break; case 20: /* "alternatives" */ #line 88 "hex_grammar.y" { yr_re_node_destroy((yyvaluep->re_node)); }; #line 1100 "hex_grammar.c" break; case 21: /* "byte" */ #line 87 "hex_grammar.y" { yr_re_node_destroy((yyvaluep->re_node)); }; #line 1105 "hex_grammar.c" break; default: break; } } /* Prevent warnings from -Wmissing-prototypes. */ #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); #else int yyparse (); #endif #else /* ! YYPARSE_PARAM */ #if defined __STDC__ || defined __cplusplus int yyparse (void *yyscanner, LEX_ENVIRONMENT *lex_env); #else int yyparse (); #endif #endif /* ! YYPARSE_PARAM */ /*----------. | yyparse. | `----------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void *YYPARSE_PARAM) #else int yyparse (YYPARSE_PARAM) void *YYPARSE_PARAM; #endif #else /* ! YYPARSE_PARAM */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void *yyscanner, LEX_ENVIRONMENT *lex_env) #else int yyparse (yyscanner, lex_env) void *yyscanner; LEX_ENVIRONMENT *lex_env; #endif #endif { /* The look-ahead symbol. */ int yychar; /* The semantic value of the look-ahead symbol. */ YYSTYPE yylval; /* Number of syntax errors so far. */ int yynerrs; int yystate; int yyn; int yyresult; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* Look-ahead token as an internal (translated) token number. */ int yytoken = 0; #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif /* Three stacks and their tools: `yyss': related to states, `yyvs': related to semantic values, `yyls': related to locations. Refer to the stacks thru separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ yytype_int16 yyssa[YYINITDEPTH]; yytype_int16 *yyss = yyssa; yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs = yyvsa; YYSTYPE *yyvsp; #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) YYSIZE_T yystacksize = YYINITDEPTH; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ yyssp = yyss; yyvsp = yyvs; goto yysetstate; /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; yysetstate: *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE goto yyexhaustedlab; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss); YYSTACK_RELOCATE (yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a look-ahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to look-ahead token. */ yyn = yypact[yystate]; if (yyn == YYPACT_NINF) goto yydefault; /* Not known => get a look-ahead token if don't already have one. */ /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yyn == 0 || yyn == YYTABLE_NINF) goto yyerrlab; yyn = -yyn; goto yyreduce; } if (yyn == YYFINAL) YYACCEPT; /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the look-ahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the shifted token unless it is eof. */ if (yychar != YYEOF) yychar = YYEMPTY; yystate = yyn; *++yyvsp = yylval; goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 2: #line 94 "hex_grammar.y" { RE* re = yyget_extra(yyscanner); re->root_node = (yyvsp[(2) - (3)].re_node); } break; case 3: #line 102 "hex_grammar.y" { (yyval.re_node) = (yyvsp[(1) - (1)].re_node); } break; case 4: #line 106 "hex_grammar.y" { (yyval.re_node) = yr_re_node_create(RE_NODE_CONCAT, (yyvsp[(1) - (2)].re_node), (yyvsp[(2) - (2)].re_node)); DESTROY_NODE_IF((yyval.re_node) == NULL, (yyvsp[(1) - (2)].re_node)); DESTROY_NODE_IF((yyval.re_node) == NULL, (yyvsp[(2) - (2)].re_node)); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); } break; case 5: #line 117 "hex_grammar.y" { (yyval.re_node) = (yyvsp[(1) - (1)].re_node); } break; case 6: #line 121 "hex_grammar.y" { lex_env->inside_or++; } break; case 7: #line 125 "hex_grammar.y" { (yyval.re_node) = (yyvsp[(3) - (4)].re_node); lex_env->inside_or--; } break; case 8: #line 130 "hex_grammar.y" { (yyval.re_node) = (yyvsp[(2) - (3)].re_node); (yyval.re_node)->greedy = FALSE; } break; case 9: #line 138 "hex_grammar.y" { RE_NODE* re_any; if (lex_env->inside_or && (yyvsp[(1) - (1)].integer) > STRING_CHAINING_THRESHOLD) { RE* re = yyget_extra(yyscanner); re->error_code = ERROR_INVALID_HEX_STRING; re->error_message = yr_strdup( "jumps over " STR(STRING_CHAINING_THRESHOLD) " now allowed inside alternation (|)"); YYABORT; } re_any = yr_re_node_create(RE_NODE_ANY, NULL, NULL); ERROR_IF(re_any == NULL, ERROR_INSUFICIENT_MEMORY); (yyval.re_node) = yr_re_node_create(RE_NODE_RANGE, re_any, NULL); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); (yyval.re_node)->start = (yyvsp[(1) - (1)].integer); (yyval.re_node)->end = (yyvsp[(1) - (1)].integer); } break; case 10: #line 165 "hex_grammar.y" { RE_NODE* re_any; if (lex_env->inside_or && ((yyvsp[(1) - (3)].integer) > STRING_CHAINING_THRESHOLD || (yyvsp[(3) - (3)].integer) > STRING_CHAINING_THRESHOLD) ) { RE* re = yyget_extra(yyscanner); re->error_code = ERROR_INVALID_HEX_STRING; re->error_message = yr_strdup( "jumps over " STR(STRING_CHAINING_THRESHOLD) " now allowed inside alternation (|)"); YYABORT; } if ((yyvsp[(1) - (3)].integer) > (yyvsp[(3) - (3)].integer)) { RE* re = yyget_extra(yyscanner); re->error_code = ERROR_INVALID_HEX_STRING; re->error_message = yr_strdup("invalid jump range"); YYABORT; } re_any = yr_re_node_create(RE_NODE_ANY, NULL, NULL); ERROR_IF(re_any == NULL, ERROR_INSUFICIENT_MEMORY); (yyval.re_node) = yr_re_node_create(RE_NODE_RANGE, re_any, NULL); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); (yyval.re_node)->start = (yyvsp[(1) - (3)].integer); (yyval.re_node)->end = (yyvsp[(3) - (3)].integer); } break; case 11: #line 202 "hex_grammar.y" { RE_NODE* re_any; if (lex_env->inside_or) { RE* re = yyget_extra(yyscanner); re->error_code = ERROR_INVALID_HEX_STRING; re->error_message = yr_strdup( "unbounded jumps not allowed inside alternation (|)"); YYABORT; } re_any = yr_re_node_create(RE_NODE_ANY, NULL, NULL); ERROR_IF(re_any == NULL, ERROR_INSUFICIENT_MEMORY); (yyval.re_node) = yr_re_node_create(RE_NODE_RANGE, re_any, NULL); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); (yyval.re_node)->start = (yyvsp[(1) - (2)].integer); (yyval.re_node)->end = INT_MAX; } break; case 12: #line 227 "hex_grammar.y" { RE_NODE* re_any; if (lex_env->inside_or) { RE* re = yyget_extra(yyscanner); re->error_code = ERROR_INVALID_HEX_STRING; re->error_message = yr_strdup( "unbounded jumps not allowed inside alternation (|)"); YYABORT; } re_any = yr_re_node_create(RE_NODE_ANY, NULL, NULL); ERROR_IF(re_any == NULL, ERROR_INSUFICIENT_MEMORY); (yyval.re_node) = yr_re_node_create(RE_NODE_RANGE, re_any, NULL); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); (yyval.re_node)->start = 0; (yyval.re_node)->end = INT_MAX; } break; case 13: #line 254 "hex_grammar.y" { (yyval.re_node) = (yyvsp[(1) - (1)].re_node); } break; case 14: #line 258 "hex_grammar.y" { mark_as_not_fast_hex_regexp(); (yyval.re_node) = yr_re_node_create(RE_NODE_ALT, (yyvsp[(1) - (3)].re_node), (yyvsp[(3) - (3)].re_node)); DESTROY_NODE_IF((yyval.re_node) == NULL, (yyvsp[(1) - (3)].re_node)); DESTROY_NODE_IF((yyval.re_node) == NULL, (yyvsp[(3) - (3)].re_node)); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); } break; case 15: #line 270 "hex_grammar.y" { (yyval.re_node) = yr_re_node_create(RE_NODE_LITERAL, NULL, NULL); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); (yyval.re_node)->value = (yyvsp[(1) - (1)].integer); } break; case 16: #line 278 "hex_grammar.y" { uint8_t mask = (yyvsp[(1) - (1)].integer) >> 8; if (mask == 0x00) { (yyval.re_node) = yr_re_node_create(RE_NODE_ANY, NULL, NULL); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); } else { (yyval.re_node) = yr_re_node_create(RE_NODE_MASKED_LITERAL, NULL, NULL); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); (yyval.re_node)->value = (yyvsp[(1) - (1)].integer) & 0xFF; (yyval.re_node)->mask = mask; } } break; /* Line 1267 of yacc.c. */ #line 1651 "hex_grammar.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; /*------------------------------------. | yyerrlab -- here on detecting error | `------------------------------------*/ yyerrlab: /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; #if ! YYERROR_VERBOSE yyerror (yyscanner, lex_env, YY_("syntax error")); #else { YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) { YYSIZE_T yyalloc = 2 * yysize; if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) yyalloc = YYSTACK_ALLOC_MAXIMUM; if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = (char *) YYSTACK_ALLOC (yyalloc); if (yymsg) yymsg_alloc = yyalloc; else { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; } } if (0 < yysize && yysize <= yymsg_alloc) { (void) yysyntax_error (yymsg, yystate, yychar); yyerror (yyscanner, lex_env, yymsg); } else { yyerror (yyscanner, lex_env, YY_("syntax error")); if (yysize != 0) goto yyexhaustedlab; } } #endif } if (yyerrstatus == 3) { /* If just tried and failed to reuse look-ahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval, yyscanner, lex_env); yychar = YYEMPTY; } } /* Else will try to reuse look-ahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers like GCC when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (/*CONSTCOND*/ 0) goto yyerrorlab; /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (yyn != YYPACT_NINF) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yydestruct ("Error: popping", yystos[yystate], yyvsp, yyscanner, lex_env); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } if (yyn == YYFINAL) YYACCEPT; *++yyvsp = yylval; /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturn; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturn; #ifndef yyoverflow /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (yyscanner, lex_env, YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif yyreturn: if (yychar != YYEOF && yychar != YYEMPTY) yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval, yyscanner, lex_env); /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", yystos[*yyssp], yyvsp, yyscanner, lex_env); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif /* Make sure YYID is used. */ return YYID (yyresult); } #line 299 "hex_grammar.y" yara-2.0.0/libyara/hex_grammar.h000066400000000000000000000043731225703323600165450ustar00rootroot00000000000000/* A Bison parser, made by GNU Bison 2.3. */ /* Skeleton interface for Bison's Yacc-like parsers in C Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. 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, 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. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { _BYTE_ = 258, _MASKED_BYTE_ = 259, _NUMBER_ = 260 }; #endif /* Tokens. */ #define _BYTE_ 258 #define _MASKED_BYTE_ 259 #define _NUMBER_ 260 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE #line 74 "hex_grammar.y" { int integer; RE_NODE *re_node; } /* Line 1529 of yacc.c. */ #line 64 "hex_grammar.h" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 #endif yara-2.0.0/libyara/hex_grammar.y000066400000000000000000000155331225703323600165660ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ %{ #include #include #include "hex_lexer.h" #include "mem.h" #include "re.h" #include "yara.h" #include "config.h" #ifdef DMALLOC #include #endif #define STR_EXPAND(tok) #tok #define STR(tok) STR_EXPAND(tok) #define YYERROR_VERBOSE #define YYDEBUG 0 #define mark_as_not_fast_hex_regexp() \ ((RE*) yyget_extra(yyscanner))->flags &= ~RE_FLAGS_FAST_HEX_REGEXP #if YYDEBUG yydebug = 1; #endif #define ERROR_IF(x, error) \ if (x) \ { \ RE* re = yyget_extra(yyscanner); \ re->error_code = error; \ YYABORT; \ } \ #define DESTROY_NODE_IF(x, node) \ if (x) \ { \ yr_re_node_destroy(node); \ } \ %} %debug %name-prefix="hex_yy" %pure-parser %parse-param {void *yyscanner} %parse-param {LEX_ENVIRONMENT *lex_env} %lex-param {yyscan_t yyscanner} %lex-param {LEX_ENVIRONMENT *lex_env} %union { int integer; RE_NODE *re_node; } %token _BYTE_ %token _MASKED_BYTE_ %token _NUMBER_ %type tokens token byte alternatives range %destructor { yr_re_node_destroy($$); } tokens %destructor { yr_re_node_destroy($$); } token %destructor { yr_re_node_destroy($$); } byte %destructor { yr_re_node_destroy($$); } alternatives %destructor { yr_re_node_destroy($$); } range %% hex_string : '{' tokens '}' { RE* re = yyget_extra(yyscanner); re->root_node = $2; } ; tokens : token { $$ = $1; } | tokens token { $$ = yr_re_node_create(RE_NODE_CONCAT, $1, $2); DESTROY_NODE_IF($$ == NULL, $1); DESTROY_NODE_IF($$ == NULL, $2); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); } ; token : byte { $$ = $1; } | '(' { lex_env->inside_or++; } alternatives ')' { $$ = $3; lex_env->inside_or--; } | '[' range ']' { $$ = $2; $$->greedy = FALSE; } ; range : _NUMBER_ { RE_NODE* re_any; if (lex_env->inside_or && $1 > STRING_CHAINING_THRESHOLD) { RE* re = yyget_extra(yyscanner); re->error_code = ERROR_INVALID_HEX_STRING; re->error_message = yr_strdup( "jumps over " STR(STRING_CHAINING_THRESHOLD) " now allowed inside alternation (|)"); YYABORT; } re_any = yr_re_node_create(RE_NODE_ANY, NULL, NULL); ERROR_IF(re_any == NULL, ERROR_INSUFICIENT_MEMORY); $$ = yr_re_node_create(RE_NODE_RANGE, re_any, NULL); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); $$->start = $1; $$->end = $1; } | _NUMBER_ '-' _NUMBER_ { RE_NODE* re_any; if (lex_env->inside_or && ($1 > STRING_CHAINING_THRESHOLD || $3 > STRING_CHAINING_THRESHOLD) ) { RE* re = yyget_extra(yyscanner); re->error_code = ERROR_INVALID_HEX_STRING; re->error_message = yr_strdup( "jumps over " STR(STRING_CHAINING_THRESHOLD) " now allowed inside alternation (|)"); YYABORT; } if ($1 > $3) { RE* re = yyget_extra(yyscanner); re->error_code = ERROR_INVALID_HEX_STRING; re->error_message = yr_strdup("invalid jump range"); YYABORT; } re_any = yr_re_node_create(RE_NODE_ANY, NULL, NULL); ERROR_IF(re_any == NULL, ERROR_INSUFICIENT_MEMORY); $$ = yr_re_node_create(RE_NODE_RANGE, re_any, NULL); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); $$->start = $1; $$->end = $3; } | _NUMBER_ '-' { RE_NODE* re_any; if (lex_env->inside_or) { RE* re = yyget_extra(yyscanner); re->error_code = ERROR_INVALID_HEX_STRING; re->error_message = yr_strdup( "unbounded jumps not allowed inside alternation (|)"); YYABORT; } re_any = yr_re_node_create(RE_NODE_ANY, NULL, NULL); ERROR_IF(re_any == NULL, ERROR_INSUFICIENT_MEMORY); $$ = yr_re_node_create(RE_NODE_RANGE, re_any, NULL); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); $$->start = $1; $$->end = INT_MAX; } | '-' { RE_NODE* re_any; if (lex_env->inside_or) { RE* re = yyget_extra(yyscanner); re->error_code = ERROR_INVALID_HEX_STRING; re->error_message = yr_strdup( "unbounded jumps not allowed inside alternation (|)"); YYABORT; } re_any = yr_re_node_create(RE_NODE_ANY, NULL, NULL); ERROR_IF(re_any == NULL, ERROR_INSUFICIENT_MEMORY); $$ = yr_re_node_create(RE_NODE_RANGE, re_any, NULL); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); $$->start = 0; $$->end = INT_MAX; } ; alternatives : tokens { $$ = $1; } | alternatives '|' tokens { mark_as_not_fast_hex_regexp(); $$ = yr_re_node_create(RE_NODE_ALT, $1, $3); DESTROY_NODE_IF($$ == NULL, $1); DESTROY_NODE_IF($$ == NULL, $3); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); } ; byte : _BYTE_ { $$ = yr_re_node_create(RE_NODE_LITERAL, NULL, NULL); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); $$->value = $1; } | _MASKED_BYTE_ { uint8_t mask = $1 >> 8; if (mask == 0x00) { $$ = yr_re_node_create(RE_NODE_ANY, NULL, NULL); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); } else { $$ = yr_re_node_create(RE_NODE_MASKED_LITERAL, NULL, NULL); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); $$->value = $1 & 0xFF; $$->mask = mask; } } ; %% yara-2.0.0/libyara/hex_lexer.c000066400000000000000000001625531225703323600162360ustar00rootroot00000000000000#line 2 "hex_lexer.c" #line 4 "hex_lexer.c" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 #define YY_FLEX_SUBMINOR_VERSION 35 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include #include #include #include /* end standard C headers. */ /* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 #endif #include typedef int8_t flex_int8_t; typedef uint8_t flex_uint8_t; typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; typedef uint64_t flex_uint64_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; #endif /* ! C99 */ /* Limits of integral types. */ #ifndef INT8_MIN #define INT8_MIN (-128) #endif #ifndef INT16_MIN #define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX #define INT8_MAX (127) #endif #ifndef INT16_MAX #define INT16_MAX (32767) #endif #ifndef INT32_MAX #define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX #define UINT8_MAX (255U) #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #endif /* ! FLEXINT_H */ #ifdef __cplusplus /* The "const" storage-class-modifier is valid. */ #define YY_USE_CONST #else /* ! __cplusplus */ /* C99 requires __STDC__ to be defined as 1. */ #if defined (__STDC__) #define YY_USE_CONST #endif /* defined (__STDC__) */ #endif /* ! __cplusplus */ #ifdef YY_USE_CONST #define yyconst const #else #define yyconst #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an unsigned * integer for use as an array index. If the signed char is negative, * we want to instead treat it as an 8-bit unsigned char, hence the * double cast. */ #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* An opaque pointer. */ #ifndef YY_TYPEDEF_YY_SCANNER_T #define YY_TYPEDEF_YY_SCANNER_T typedef void* yyscan_t; #endif /* For convenience, these vars (plus the bison vars far below) are macros in the reentrant scanner. */ #define yyin yyg->yyin_r #define yyout yyg->yyout_r #define yyextra yyg->yyextra_r #define yyleng yyg->yyleng_r #define yytext yyg->yytext_r #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) #define yy_flex_debug yyg->yy_flex_debug_r /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN yyg->yy_start = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START ((yyg->yy_start - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE hex_yyrestart(yyin ,yyscanner ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #define YY_BUF_SIZE 16384 #endif /* The state buf must be large enough to hold one state per character in the main buffer. */ #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires * access to the local variable yy_act. Since yyless() is a macro, it would break * existing scanners that call yyless() from OUTSIDE hex_yylex. * One obvious solution it to make yy_act a global. I tried that, and saw * a 5% performance hit in a non-yylineno scanner, because yy_act is * normally declared as a register variable-- so it is not worth it. */ #define YY_LESS_LINENO(n) \ do { \ yy_size_t yyl;\ for ( yyl = n; yyl < yyleng; ++yyl )\ if ( yytext[yyl] == '\n' )\ --yylineno;\ }while(0) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = yyg->yy_hold_char; \ YY_RESTORE_YY_MORE_OFFSET \ yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; char *yy_ch_buf; /* input buffer */ char *yy_buf_pos; /* current position in input buffer */ /* Size of input buffer in bytes, not including room for EOB * characters. */ yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ int yy_is_our_buffer; /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ int yy_is_interactive; /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via hex_yyrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] void hex_yyrestart (FILE *input_file ,yyscan_t yyscanner ); void hex_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); YY_BUFFER_STATE hex_yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner ); void hex_yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); void hex_yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); void hex_yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); void hex_yypop_buffer_state (yyscan_t yyscanner ); static void hex_yyensure_buffer_stack (yyscan_t yyscanner ); static void hex_yy_load_buffer_state (yyscan_t yyscanner ); static void hex_yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner ); #define YY_FLUSH_BUFFER hex_yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner) YY_BUFFER_STATE hex_yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); YY_BUFFER_STATE hex_yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); YY_BUFFER_STATE hex_yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner ); void *hex_yyalloc (yy_size_t ,yyscan_t yyscanner ); void *hex_yyrealloc (void *,yy_size_t ,yyscan_t yyscanner ); void hex_yyfree (void * ,yyscan_t yyscanner ); #define yy_new_buffer hex_yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ hex_yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ hex_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ hex_yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ hex_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ #define hex_yywrap(n) 1 #define YY_SKIP_YYWRAP typedef unsigned char YY_CHAR; typedef int yy_state_type; #define yytext_ptr yytext_r static yy_state_type yy_get_previous_state (yyscan_t yyscanner ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner); static int yy_get_next_buffer (yyscan_t yyscanner ); static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ yyg->yytext_ptr = yy_bp; \ yyleng = (yy_size_t) (yy_cp - yy_bp); \ yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; #define YY_NUM_RULES 12 #define YY_END_OF_BUFFER 13 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static yyconst flex_int16_t yy_accept[23] = { 0, 0, 0, 0, 0, 13, 11, 10, 10, 11, 11, 5, 12, 6, 7, 8, 9, 1, 2, 3, 4, 8, 0 } ; static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 5, 1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 7, 1, 8, 8, 8, 8, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 1, 10, 1, 1, 1, 8, 8, 8, 8, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static yyconst flex_int32_t yy_meta[11] = { 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1 } ; static yyconst flex_int16_t yy_base[26] = { 0, 0, 0, 7, 14, 27, 28, 28, 28, 16, 15, 28, 28, 28, 28, 15, 28, 28, 28, 28, 28, 10, 28, 24, 13, 12 } ; static yyconst flex_int16_t yy_def[26] = { 0, 22, 1, 23, 23, 22, 22, 22, 22, 24, 25, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 0, 22, 22, 22 } ; static yyconst flex_int16_t yy_nxt[39] = { 0, 6, 7, 8, 6, 6, 9, 10, 9, 11, 6, 13, 14, 15, 19, 17, 21, 16, 13, 14, 15, 21, 20, 18, 16, 12, 12, 22, 5, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22 } ; static yyconst flex_int16_t yy_chk[39] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 25, 24, 21, 3, 4, 4, 4, 15, 10, 9, 4, 23, 23, 5, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22 } ; /* Table of booleans, true if rule could match eol. */ static yyconst flex_int32_t yy_rule_can_match_eol[13] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, }; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. */ #define REJECT reject_used_but_not_detected #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET #line 1 "hex_lexer.l" /* Copyright (c) 2013. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ /* Lexical analyzer for hex strings */ #line 20 "hex_lexer.l" #include "yara.h" #include "atoms.h" #include "mem.h" #include "re.h" #include "hex_grammar.h" #include "hex_lexer.h" #include "utils.h" #include "config.h" #ifdef DMALLOC #include #endif #ifdef WIN32 #define snprintf _snprintf #endif #define ERROR_IF(x, error) \ if (x) \ { \ RE* re = hex_yyget_extra(yyscanner); \ re->error_code = error; \ YYABORT; \ } \ #define YY_NO_UNISTD_H 1 #define YY_NO_INPUT 1 #line 510 "hex_lexer.c" #define INITIAL 0 #define range 1 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way * down here because we want the user's section 1 to have been scanned first. * The user has a chance to override it with an option. */ #include #endif #ifndef YY_EXTRA_TYPE #define YY_EXTRA_TYPE void * #endif /* Holds the entire state of the reentrant scanner. */ struct yyguts_t { /* User-defined. Not touched by flex. */ YY_EXTRA_TYPE yyextra_r; /* The rest are the same as the globals declared in the non-reentrant scanner. */ FILE *yyin_r, *yyout_r; size_t yy_buffer_stack_top; /**< index of top of stack. */ size_t yy_buffer_stack_max; /**< capacity of stack. */ YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ char yy_hold_char; yy_size_t yy_n_chars; yy_size_t yyleng_r; char *yy_c_buf_p; int yy_init; int yy_start; int yy_did_buffer_switch_on_eof; int yy_start_stack_ptr; int yy_start_stack_depth; int *yy_start_stack; yy_state_type yy_last_accepting_state; char* yy_last_accepting_cpos; int yylineno_r; int yy_flex_debug_r; char *yytext_r; int yy_more_flag; int yy_more_len; YYSTYPE * yylval_r; }; /* end struct yyguts_t */ static int yy_init_globals (yyscan_t yyscanner ); /* This must go here because YYSTYPE and YYLTYPE are included * from bison output in section 1.*/ # define yylval yyg->yylval_r int hex_yylex_init (yyscan_t* scanner); int hex_yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int hex_yylex_destroy (yyscan_t yyscanner ); int hex_yyget_debug (yyscan_t yyscanner ); void hex_yyset_debug (int debug_flag ,yyscan_t yyscanner ); YY_EXTRA_TYPE hex_yyget_extra (yyscan_t yyscanner ); void hex_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); FILE *hex_yyget_in (yyscan_t yyscanner ); void hex_yyset_in (FILE * in_str ,yyscan_t yyscanner ); FILE *hex_yyget_out (yyscan_t yyscanner ); void hex_yyset_out (FILE * out_str ,yyscan_t yyscanner ); yy_size_t hex_yyget_leng (yyscan_t yyscanner ); char *hex_yyget_text (yyscan_t yyscanner ); int hex_yyget_lineno (yyscan_t yyscanner ); void hex_yyset_lineno (int line_number ,yyscan_t yyscanner ); YYSTYPE * hex_yyget_lval (yyscan_t yyscanner ); void hex_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int hex_yywrap (yyscan_t yyscanner ); #else extern int hex_yywrap (yyscan_t yyscanner ); #endif #endif #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (yyscan_t yyscanner ); #else static int input (yyscan_t yyscanner ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #define YY_READ_BUF_SIZE 8192 #endif /* Copy whatever the last rule matched to the standard output. */ #ifndef ECHO /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ #define ECHO fwrite( yytext, yyleng, 1, yyout ) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, * is returned in "result". */ #ifndef YY_INPUT #define YY_INPUT(buf,result,max_size) \ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ yy_size_t n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(yyin); \ } \ }\ \ #endif /* No semi-colon after return; correct usage is to write "yyterminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */ #ifndef yyterminate #define yyterminate() return YY_NULL #endif /* Number of entries by which start-condition stack grows. */ #ifndef YY_START_STACK_INCR #define YY_START_STACK_INCR 25 #endif /* Report a fatal error. */ #ifndef YY_FATAL_ERROR #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner) #endif /* end tables serialization structures and prototypes */ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int hex_yylex \ (YYSTYPE * yylval_param ,yyscan_t yyscanner); #define YY_DECL int hex_yylex \ (YYSTYPE * yylval_param , yyscan_t yyscanner) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION #endif /* Code executed at the end of each rule. */ #ifndef YY_BREAK #define YY_BREAK break; #endif #define YY_RULE_SETUP \ YY_USER_ACTION /** The main scanner function which does all the work. */ YY_DECL { register yy_state_type yy_current_state; register char *yy_cp, *yy_bp; register int yy_act; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; #line 68 "hex_lexer.l" #line 746 "hex_lexer.c" yylval = yylval_param; if ( !yyg->yy_init ) { yyg->yy_init = 1; #ifdef YY_USER_INIT YY_USER_INIT; #endif if ( ! yyg->yy_start ) yyg->yy_start = 1; /* first start state */ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { hex_yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = hex_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); } hex_yy_load_buffer_state(yyscanner ); } while ( 1 ) /* loops until end-of-file is reached */ { yy_cp = yyg->yy_c_buf_p; /* Support of yytext. */ *yy_cp = yyg->yy_hold_char; /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; yy_current_state = yyg->yy_start; yy_match: do { register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 23 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 28 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) { /* have to back up */ yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; yy_act = yy_accept[yy_current_state]; } YY_DO_BEFORE_ACTION; if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) { yy_size_t yyl; for ( yyl = 0; yyl < yyleng; ++yyl ) if ( yytext[yyl] == '\n' ) do{ yylineno++; yycolumn=0; }while(0) ; } do_action: /* This label is used only to access EOF actions. */ switch ( yy_act ) { /* beginning of action switch */ case 0: /* must back up */ /* undo the effects of YY_DO_BEFORE_ACTION */ *yy_cp = yyg->yy_hold_char; yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; goto yy_find_action; case 1: YY_RULE_SETUP #line 71 "hex_lexer.l" { yylval->integer = xtoi(yytext); return _BYTE_; } YY_BREAK case 2: YY_RULE_SETUP #line 77 "hex_lexer.l" { yytext[1] = '0'; // replace ? by 0 yylval->integer = xtoi(yytext) | 0xF000 ; return _MASKED_BYTE_; } YY_BREAK case 3: YY_RULE_SETUP #line 84 "hex_lexer.l" { yytext[0] = '0'; // replace ? by 0 yylval->integer = xtoi(yytext) | 0x0F00 ; return _MASKED_BYTE_; } YY_BREAK case 4: YY_RULE_SETUP #line 91 "hex_lexer.l" { yylval->integer = 0x0000; return _MASKED_BYTE_; } YY_BREAK case 5: YY_RULE_SETUP #line 97 "hex_lexer.l" { BEGIN(range); return yytext[0]; } YY_BREAK case 6: YY_RULE_SETUP #line 103 "hex_lexer.l" { return yytext[0]; } YY_BREAK case 7: YY_RULE_SETUP #line 107 "hex_lexer.l" { return yytext[0]; } YY_BREAK case 8: YY_RULE_SETUP #line 111 "hex_lexer.l" { yylval->integer = atoi(yytext); return _NUMBER_; } YY_BREAK case 9: YY_RULE_SETUP #line 117 "hex_lexer.l" { BEGIN(INITIAL); return yytext[0]; } YY_BREAK case 10: /* rule 10 can match eol */ YY_RULE_SETUP #line 124 "hex_lexer.l" // skip whitespace YY_BREAK case 11: YY_RULE_SETUP #line 127 "hex_lexer.l" { if (yytext[0] >= 32 && yytext[0] < 127) { return yytext[0]; } else { yyerror(yyscanner, lex_env, "non-ascii character"); yyterminate(); } } YY_BREAK case 12: YY_RULE_SETUP #line 140 "hex_lexer.l" ECHO; YY_BREAK #line 949 "hex_lexer.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(range): yyterminate(); case YY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1; /* Undo the effects of YY_DO_BEFORE_ACTION. */ *yy_cp = yyg->yy_hold_char; YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * hex_yylex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } /* Note that here we test for yy_c_buf_p "<=" to the position * of the first EOB in the buffer, since yy_c_buf_p will * already have been incremented past the NUL character * (since all states make transitions on EOB to the * end-of-buffer state). Contrast this with the test * in input(). */ if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) { /* This was really a NUL. */ yy_state_type yy_next_state; yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( yyscanner ); /* Okay, we're now positioned to make the NUL * transition. We couldn't have * yy_get_previous_state() go ahead and do it * for us because it doesn't know how to deal * with the possibility of jamming (and we don't * want to build jamming into it because then it * will run more slowly). */ yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner); yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ yy_cp = ++yyg->yy_c_buf_p; yy_current_state = yy_next_state; goto yy_match; } else { yy_cp = yyg->yy_c_buf_p; goto yy_find_action; } } else switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_END_OF_FILE: { yyg->yy_did_buffer_switch_on_eof = 0; if ( hex_yywrap(yyscanner ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * YY_NULL, it'll still work - another * YY_NULL will get returned. */ yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; } else { if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( yyscanner ); yy_cp = yyg->yy_c_buf_p; yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: yyg->yy_c_buf_p = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]; yy_current_state = yy_get_previous_state( yyscanner ); yy_cp = yyg->yy_c_buf_p; yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; goto yy_find_action; } break; } default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of hex_yylex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; register char *source = yyg->yytext_ptr; register int number_to_move, i; int ret_val; if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; } else { /* We matched some text prior to the EOB, first * process it. */ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; else { yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ YY_BUFFER_STATE b = YY_CURRENT_BUFFER; int yy_c_buf_p_offset = (int) (yyg->yy_c_buf_p - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ hex_yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = 0; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; } if ( num_to_read > YY_READ_BUF_SIZE ) num_to_read = YY_READ_BUF_SIZE; /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), yyg->yy_n_chars, num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } if ( yyg->yy_n_chars == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; hex_yyrestart(yyin ,yyscanner); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) hex_yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); } yyg->yy_n_chars += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; return ret_val; } /* yy_get_previous_state - get the state just before the EOB char was reached */ static yy_state_type yy_get_previous_state (yyscan_t yyscanner) { register yy_state_type yy_current_state; register char *yy_cp; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_current_state = yyg->yy_start; for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) { register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 23 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = yy_try_NUL_trans( current_state ); */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) { register int yy_is_jam; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ register char *yy_cp = yyg->yy_c_buf_p; register YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 23 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 22); return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (yyscan_t yyscanner) #else static int input (yyscan_t yyscanner) #endif { int c; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; *yyg->yy_c_buf_p = yyg->yy_hold_char; if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) { /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) /* This was really a NUL. */ *yyg->yy_c_buf_p = '\0'; else { /* need more input */ yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr; ++yyg->yy_c_buf_p; switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a * token and flags that we need to * try matching the token before * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ hex_yyrestart(yyin ,yyscanner); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( hex_yywrap(yyscanner ) ) return 0; if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(yyscanner); #else return input(yyscanner); #endif } case EOB_ACT_CONTINUE_SCAN: yyg->yy_c_buf_p = yyg->yytext_ptr + offset; break; } } } c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ yyg->yy_hold_char = *++yyg->yy_c_buf_p; if ( c == '\n' ) do{ yylineno++; yycolumn=0; }while(0) ; return c; } #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * @param yyscanner The scanner object. * @note This function does not reset the start condition to @c INITIAL . */ void hex_yyrestart (FILE * input_file , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! YY_CURRENT_BUFFER ){ hex_yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = hex_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); } hex_yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner); hex_yy_load_buffer_state(yyscanner ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * @param yyscanner The scanner object. */ void hex_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* TODO. We should be able to replace this entire function body * with * hex_yypop_buffer_state(); * hex_yypush_buffer_state(new_buffer); */ hex_yyensure_buffer_stack (yyscanner); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } YY_CURRENT_BUFFER_LVALUE = new_buffer; hex_yy_load_buffer_state(yyscanner ); /* We don't actually know whether we did this switch during * EOF (hex_yywrap()) processing, but the only time this flag * is looked at is after hex_yywrap() is called, so it's safe * to go ahead and always set it. */ yyg->yy_did_buffer_switch_on_eof = 1; } static void hex_yy_load_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; yyg->yy_hold_char = *yyg->yy_c_buf_p; } /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * @param yyscanner The scanner object. * @return the allocated buffer state. */ YY_BUFFER_STATE hex_yy_create_buffer (FILE * file, int size , yyscan_t yyscanner) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) hex_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in hex_yy_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) hex_yyalloc(b->yy_buf_size + 2 ,yyscanner ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in hex_yy_create_buffer()" ); b->yy_is_our_buffer = 1; hex_yy_init_buffer(b,file ,yyscanner); return b; } /** Destroy the buffer. * @param b a buffer created with hex_yy_create_buffer() * @param yyscanner The scanner object. */ void hex_yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) hex_yyfree((void *) b->yy_ch_buf ,yyscanner ); hex_yyfree((void *) b ,yyscanner ); } #ifndef __cplusplus extern int isatty (int ); #endif /* __cplusplus */ /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a hex_yyrestart() or at EOF. */ static void hex_yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) { int oerrno = errno; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; hex_yy_flush_buffer(b ,yyscanner); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then hex_yy_init_buffer was _probably_ * called from hex_yyrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * @param yyscanner The scanner object. */ void hex_yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; b->yy_n_chars = 0; /* We always need two end-of-buffer characters. The first causes * a transition to the end-of-buffer state. The second causes * a jam in that state. */ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) hex_yy_load_buffer_state(yyscanner ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * @param yyscanner The scanner object. */ void hex_yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (new_buffer == NULL) return; hex_yyensure_buffer_stack(yyscanner); /* This block is copied from hex_yy_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) yyg->yy_buffer_stack_top++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from hex_yy_switch_to_buffer. */ hex_yy_load_buffer_state(yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * @param yyscanner The scanner object. */ void hex_yypop_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!YY_CURRENT_BUFFER) return; hex_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner); YY_CURRENT_BUFFER_LVALUE = NULL; if (yyg->yy_buffer_stack_top > 0) --yyg->yy_buffer_stack_top; if (YY_CURRENT_BUFFER) { hex_yy_load_buffer_state(yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void hex_yyensure_buffer_stack (yyscan_t yyscanner) { yy_size_t num_to_alloc; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!yyg->yy_buffer_stack) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; yyg->yy_buffer_stack = (struct yy_buffer_state**)hex_yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in hex_yyensure_buffer_stack()" ); memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; yyg->yy_buffer_stack_top = 0; return; } if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ /* Increase the buffer to prepare for a possible push. */ int grow_size = 8 /* arbitrary grow size */; num_to_alloc = yyg->yy_buffer_stack_max + grow_size; yyg->yy_buffer_stack = (struct yy_buffer_state**)hex_yyrealloc (yyg->yy_buffer_stack, num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in hex_yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE hex_yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return 0; b = (YY_BUFFER_STATE) hex_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in hex_yy_scan_buffer()" ); b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = 0; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; hex_yy_switch_to_buffer(b ,yyscanner ); return b; } /** Setup the input buffer state to scan a string. The next call to hex_yylex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * @param yyscanner The scanner object. * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * hex_yy_scan_bytes() instead. */ YY_BUFFER_STATE hex_yy_scan_string (yyconst char * yystr , yyscan_t yyscanner) { return hex_yy_scan_bytes(yystr,strlen(yystr) ,yyscanner); } /** Setup the input buffer state to scan the given bytes. The next call to hex_yylex() will * scan from a @e copy of @a bytes. * @param bytes the byte buffer to scan * @param len the number of bytes in the buffer pointed to by @a bytes. * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE hex_yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len , yyscan_t yyscanner) { YY_BUFFER_STATE b; char *buf; yy_size_t n, i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; buf = (char *) hex_yyalloc(n ,yyscanner ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in hex_yy_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = hex_yy_scan_buffer(buf,n ,yyscanner); if ( ! b ) YY_FATAL_ERROR( "bad buffer in hex_yy_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) { (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = yyg->yy_hold_char; \ yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ yyg->yy_hold_char = *yyg->yy_c_buf_p; \ *yyg->yy_c_buf_p = '\0'; \ yyleng = yyless_macro_arg; \ } \ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the user-defined data for this scanner. * @param yyscanner The scanner object. */ YY_EXTRA_TYPE hex_yyget_extra (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyextra; } /** Get the current line number. * @param yyscanner The scanner object. */ int hex_yyget_lineno (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yylineno; } /** Get the current column number. * @param yyscanner The scanner object. */ int hex_yyget_column (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yycolumn; } /** Get the input stream. * @param yyscanner The scanner object. */ FILE *hex_yyget_in (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyin; } /** Get the output stream. * @param yyscanner The scanner object. */ FILE *hex_yyget_out (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyout; } /** Get the length of the current token. * @param yyscanner The scanner object. */ yy_size_t hex_yyget_leng (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyleng; } /** Get the current token. * @param yyscanner The scanner object. */ char *hex_yyget_text (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yytext; } /** Set the user-defined data. This data is never touched by the scanner. * @param user_defined The data to be associated with this scanner. * @param yyscanner The scanner object. */ void hex_yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyextra = user_defined ; } /** Set the current line number. * @param line_number * @param yyscanner The scanner object. */ void hex_yyset_lineno (int line_number , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* lineno is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) yy_fatal_error( "hex_yyset_lineno called with no buffer" , yyscanner); yylineno = line_number; } /** Set the current column. * @param line_number * @param yyscanner The scanner object. */ void hex_yyset_column (int column_no , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* column is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) yy_fatal_error( "hex_yyset_column called with no buffer" , yyscanner); yycolumn = column_no; } /** Set the input stream. This does not discard the current * input buffer. * @param in_str A readable stream. * @param yyscanner The scanner object. * @see hex_yy_switch_to_buffer */ void hex_yyset_in (FILE * in_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyin = in_str ; } void hex_yyset_out (FILE * out_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyout = out_str ; } int hex_yyget_debug (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yy_flex_debug; } void hex_yyset_debug (int bdebug , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_flex_debug = bdebug ; } /* Accessor methods for yylval and yylloc */ YYSTYPE * hex_yyget_lval (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yylval; } void hex_yyset_lval (YYSTYPE * yylval_param , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yylval = yylval_param; } /* User-visible API */ /* hex_yylex_init is special because it creates the scanner itself, so it is * the ONLY reentrant function that doesn't take the scanner as the last argument. * That's why we explicitly handle the declaration, instead of using our macros. */ int hex_yylex_init(yyscan_t* ptr_yy_globals) { if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) hex_yyalloc ( sizeof( struct yyguts_t ), NULL ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); return yy_init_globals ( *ptr_yy_globals ); } /* hex_yylex_init_extra has the same functionality as hex_yylex_init, but follows the * convention of taking the scanner as the last argument. Note however, that * this is a *pointer* to a scanner, as it will be allocated by this call (and * is the reason, too, why this function also must handle its own declaration). * The user defined value in the first argument will be available to hex_yyalloc in * the yyextra field. */ int hex_yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals ) { struct yyguts_t dummy_yyguts; hex_yyset_extra (yy_user_defined, &dummy_yyguts); if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) hex_yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); hex_yyset_extra (yy_user_defined, *ptr_yy_globals); return yy_init_globals ( *ptr_yy_globals ); } static int yy_init_globals (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Initialization is the same as for the non-reentrant scanner. * This function is called from hex_yylex_destroy(), so don't allocate here. */ yyg->yy_buffer_stack = 0; yyg->yy_buffer_stack_top = 0; yyg->yy_buffer_stack_max = 0; yyg->yy_c_buf_p = (char *) 0; yyg->yy_init = 0; yyg->yy_start = 0; yyg->yy_start_stack_ptr = 0; yyg->yy_start_stack_depth = 0; yyg->yy_start_stack = NULL; /* Defined in main.c */ #ifdef YY_STDINIT yyin = stdin; yyout = stdout; #else yyin = (FILE *) 0; yyout = (FILE *) 0; #endif /* For future reference: Set errno on error, since we are called by * hex_yylex_init() */ return 0; } /* hex_yylex_destroy is for both reentrant and non-reentrant scanners. */ int hex_yylex_destroy (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ hex_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner ); YY_CURRENT_BUFFER_LVALUE = NULL; hex_yypop_buffer_state(yyscanner); } /* Destroy the stack itself. */ hex_yyfree(yyg->yy_buffer_stack ,yyscanner); yyg->yy_buffer_stack = NULL; /* Destroy the start condition stack. */ hex_yyfree(yyg->yy_start_stack ,yyscanner ); yyg->yy_start_stack = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * hex_yylex() is called, initialization will occur. */ yy_init_globals( yyscanner); /* Destroy the main struct (reentrant only). */ hex_yyfree ( yyscanner , yyscanner ); yyscanner = NULL; return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) { register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) { register int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *hex_yyalloc (yy_size_t size , yyscan_t yyscanner) { return (void *) malloc( size ); } void *hex_yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) { /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return (void *) realloc( (char *) ptr, size ); } void hex_yyfree (void * ptr , yyscan_t yyscanner) { free( (char *) ptr ); /* see hex_yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" #line 140 "hex_lexer.l" #ifdef WIN32 extern DWORD recovery_state_key; #else extern pthread_key_t recovery_state_key; #endif void yyfatal( yyscan_t yyscanner, const char *error_message) { jmp_buf* recovery_state; #ifdef WIN32 recovery_state = TlsGetValue(recovery_state_key) ; #else recovery_state = pthread_getspecific(recovery_state_key); #endif longjmp(*recovery_state, 1); } void yyerror( yyscan_t yyscanner, LEX_ENVIRONMENT* lex_env, const char *error_message) { if (lex_env->last_error_message == NULL) { lex_env->last_error_message = yr_strdup(error_message); } } int yr_parse_hex_string( const char* hex_string, RE** re) { yyscan_t yyscanner; jmp_buf recovery_state; LEX_ENVIRONMENT lex_env; lex_env.last_error_message = NULL; lex_env.inside_or = 0; FAIL_ON_ERROR(yr_re_create(re)); // The RE_FLAGS_FAST_HEX_REGEXP flag indicates a regular expression derived // from a hex string that can be matched by faster algorithm. These regular // expressions come from hex strings not contaning alternatives // (like in 01 02 | 03 04). // // This flag is unset later during parsing if necessary. (*re)->flags |= RE_FLAGS_FAST_HEX_REGEXP; #ifdef WIN32 TlsSetValue(recovery_state_key, (LPVOID) &recovery_state); #else pthread_setspecific(recovery_state_key, (void*) &recovery_state); #endif if (setjmp(recovery_state) != 0) return ERROR_INTERNAL_FATAL_ERROR; hex_yylex_init(&yyscanner); hex_yyset_extra(*re,yyscanner); hex_yy_scan_string(hex_string,yyscanner); yyparse(yyscanner, &lex_env); hex_yylex_destroy(yyscanner); if (lex_env.last_error_message != NULL) { (*re)->error_message = lex_env.last_error_message; return ERROR_INVALID_HEX_STRING; } return (*re)->error_code; } yara-2.0.0/libyara/hex_lexer.h000066400000000000000000000034261225703323600162340ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #include "re.h" #include "hex_grammar.h" #define yyparse hex_yyparse #define yylex hex_yylex #define yyerror hex_yyerror #define yyfatal hex_yyfatal #define yychar hex_yychar #define yydebug hex_yydebug #define yynerrs hex_yynerrs #define yyget_extra hex_yyget_extra #define yyget_lineno hex_yyget_lineno #ifndef YY_TYPEDEF_YY_SCANNER_T #define YY_TYPEDEF_YY_SCANNER_T typedef void* yyscan_t; #endif #define YY_EXTRA_TYPE RE* #define YY_USE_CONST typedef struct _LEX_ENVIRONMENT { int inside_or; const char* last_error_message; } LEX_ENVIRONMENT; #define YY_FATAL_ERROR(msg) hex_yyfatal(yyscanner, msg) #define LEX_ENV ((LEX_ENVIRONMENT*) lex_env) #define YY_DECL int hex_yylex \ (YYSTYPE * yylval_param , yyscan_t yyscanner, LEX_ENVIRONMENT* lex_env) YY_EXTRA_TYPE yyget_extra( yyscan_t yyscanner); int yylex( YYSTYPE* yylval_param, yyscan_t yyscanner, LEX_ENVIRONMENT* lex_env); int yyparse( void *yyscanner, LEX_ENVIRONMENT *lex_env); void yyerror( yyscan_t yyscanner, LEX_ENVIRONMENT* lex_env, const char *error_message); void yyfatal( yyscan_t yyscanner, const char *error_message); yara-2.0.0/libyara/hex_lexer.l000066400000000000000000000075511225703323600162430ustar00rootroot00000000000000/* Copyright (c) 2013. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ /* Lexical analyzer for hex strings */ %{ #include "yara.h" #include "atoms.h" #include "mem.h" #include "re.h" #include "hex_grammar.h" #include "hex_lexer.h" #include "utils.h" #include "config.h" #ifdef DMALLOC #include #endif #ifdef WIN32 #define snprintf _snprintf #endif #define ERROR_IF(x, error) \ if (x) \ { \ RE* re = yyget_extra(yyscanner); \ re->error_code = error; \ YYABORT; \ } \ %} %option reentrant bison-bridge %option noyywrap %option nounistd %option noinput %option nounput %option yylineno %option prefix="hex_yy" %option outfile="lex.yy.c" %option verbose %option warn digit [0-9] letter [a-zA-Z] hexdigit [a-fA-F0-9] %x range %% {hexdigit}{2} { yylval->integer = xtoi(yytext); return _BYTE_; } {hexdigit}\? { yytext[1] = '0'; // replace ? by 0 yylval->integer = xtoi(yytext) | 0xF000 ; return _MASKED_BYTE_; } \?{hexdigit} { yytext[0] = '0'; // replace ? by 0 yylval->integer = xtoi(yytext) | 0x0F00 ; return _MASKED_BYTE_; } \?\? { yylval->integer = 0x0000; return _MASKED_BYTE_; } \[ { BEGIN(range); return yytext[0]; } - { return yytext[0]; } \. { return yytext[0]; } {digit}+ { yylval->integer = atoi(yytext); return _NUMBER_; } \] { BEGIN(INITIAL); return yytext[0]; } [ \t\r\n] // skip whitespace . { if (yytext[0] >= 32 && yytext[0] < 127) { return yytext[0]; } else { yyerror(yyscanner, lex_env, "non-ascii character"); yyterminate(); } } %% #ifdef WIN32 extern DWORD recovery_state_key; #else extern pthread_key_t recovery_state_key; #endif void yyfatal( yyscan_t yyscanner, const char *error_message) { jmp_buf* recovery_state; #ifdef WIN32 recovery_state = TlsGetValue(recovery_state_key) ; #else recovery_state = pthread_getspecific(recovery_state_key); #endif longjmp(*recovery_state, 1); } void yyerror( yyscan_t yyscanner, LEX_ENVIRONMENT* lex_env, const char *error_message) { if (lex_env->last_error_message == NULL) { lex_env->last_error_message = yr_strdup(error_message); } } int yr_parse_hex_string( const char* hex_string, RE** re) { yyscan_t yyscanner; jmp_buf recovery_state; LEX_ENVIRONMENT lex_env; lex_env.last_error_message = NULL; lex_env.inside_or = 0; FAIL_ON_ERROR(yr_re_create(re)); // The RE_FLAGS_FAST_HEX_REGEXP flag indicates a regular expression derived // from a hex string that can be matched by faster algorithm. These regular // expressions come from hex strings not contaning alternatives // (like in 01 02 | 03 04). // // This flag is unset later during parsing if necessary. (*re)->flags |= RE_FLAGS_FAST_HEX_REGEXP; #ifdef WIN32 TlsSetValue(recovery_state_key, (LPVOID) &recovery_state); #else pthread_setspecific(recovery_state_key, (void*) &recovery_state); #endif if (setjmp(recovery_state) != 0) return ERROR_INTERNAL_FATAL_ERROR; yylex_init(&yyscanner); yyset_extra(*re, yyscanner); yy_scan_string(hex_string, yyscanner); yyparse(yyscanner, &lex_env); yylex_destroy(yyscanner); if (lex_env.last_error_message != NULL) { (*re)->error_message = lex_env.last_error_message; return ERROR_INVALID_HEX_STRING; } return (*re)->error_code; } yara-2.0.0/libyara/lexer.c000066400000000000000000002352511225703323600153660ustar00rootroot00000000000000#line 2 "lexer.c" #line 4 "lexer.c" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 #define YY_FLEX_SUBMINOR_VERSION 35 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include #include #include #include /* end standard C headers. */ /* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 #endif #include typedef int8_t flex_int8_t; typedef uint8_t flex_uint8_t; typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; typedef uint64_t flex_uint64_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; #endif /* ! C99 */ /* Limits of integral types. */ #ifndef INT8_MIN #define INT8_MIN (-128) #endif #ifndef INT16_MIN #define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX #define INT8_MAX (127) #endif #ifndef INT16_MAX #define INT16_MAX (32767) #endif #ifndef INT32_MAX #define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX #define UINT8_MAX (255U) #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #endif /* ! FLEXINT_H */ #ifdef __cplusplus /* The "const" storage-class-modifier is valid. */ #define YY_USE_CONST #else /* ! __cplusplus */ /* C99 requires __STDC__ to be defined as 1. */ #if defined (__STDC__) #define YY_USE_CONST #endif /* defined (__STDC__) */ #endif /* ! __cplusplus */ #ifdef YY_USE_CONST #define yyconst const #else #define yyconst #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an unsigned * integer for use as an array index. If the signed char is negative, * we want to instead treat it as an 8-bit unsigned char, hence the * double cast. */ #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* An opaque pointer. */ #ifndef YY_TYPEDEF_YY_SCANNER_T #define YY_TYPEDEF_YY_SCANNER_T typedef void* yyscan_t; #endif /* For convenience, these vars (plus the bison vars far below) are macros in the reentrant scanner. */ #define yyin yyg->yyin_r #define yyout yyg->yyout_r #define yyextra yyg->yyextra_r #define yyleng yyg->yyleng_r #define yytext yyg->yytext_r #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) #define yy_flex_debug yyg->yy_flex_debug_r /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN yyg->yy_start = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START ((yyg->yy_start - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE yara_yyrestart(yyin ,yyscanner ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #define YY_BUF_SIZE 16384 #endif /* The state buf must be large enough to hold one state per character in the main buffer. */ #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires * access to the local variable yy_act. Since yyless() is a macro, it would break * existing scanners that call yyless() from OUTSIDE yara_yylex. * One obvious solution it to make yy_act a global. I tried that, and saw * a 5% performance hit in a non-yylineno scanner, because yy_act is * normally declared as a register variable-- so it is not worth it. */ #define YY_LESS_LINENO(n) \ do { \ yy_size_t yyl;\ for ( yyl = n; yyl < yyleng; ++yyl )\ if ( yytext[yyl] == '\n' )\ --yylineno;\ }while(0) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = yyg->yy_hold_char; \ YY_RESTORE_YY_MORE_OFFSET \ yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; char *yy_ch_buf; /* input buffer */ char *yy_buf_pos; /* current position in input buffer */ /* Size of input buffer in bytes, not including room for EOB * characters. */ yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ int yy_is_our_buffer; /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ int yy_is_interactive; /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via yara_yyrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] void yara_yyrestart (FILE *input_file ,yyscan_t yyscanner ); void yara_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); YY_BUFFER_STATE yara_yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner ); void yara_yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); void yara_yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); void yara_yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); void yara_yypop_buffer_state (yyscan_t yyscanner ); static void yara_yyensure_buffer_stack (yyscan_t yyscanner ); static void yara_yy_load_buffer_state (yyscan_t yyscanner ); static void yara_yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner ); #define YY_FLUSH_BUFFER yara_yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner) YY_BUFFER_STATE yara_yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); YY_BUFFER_STATE yara_yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); YY_BUFFER_STATE yara_yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner ); void *yara_yyalloc (yy_size_t ,yyscan_t yyscanner ); void *yara_yyrealloc (void *,yy_size_t ,yyscan_t yyscanner ); void yara_yyfree (void * ,yyscan_t yyscanner ); #define yy_new_buffer yara_yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yara_yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ yara_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yara_yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ yara_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ #define yara_yywrap(n) 1 #define YY_SKIP_YYWRAP typedef unsigned char YY_CHAR; typedef int yy_state_type; #define yytext_ptr yytext_r static yy_state_type yy_get_previous_state (yyscan_t yyscanner ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner); static int yy_get_next_buffer (yyscan_t yyscanner ); static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ yyg->yytext_ptr = yy_bp; \ yyleng = (yy_size_t) (yy_cp - yy_bp); \ yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; #define YY_NUM_RULES 78 #define YY_END_OF_BUFFER 79 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static yyconst flex_int16_t yy_accept[227] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 77, 76, 76, 77, 73, 55, 54, 74, 58, 58, 1, 77, 2, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 77, 65, 66, 60, 78, 71, 72, 68, 78, 51, 52, 48, 48, 6, 55, 53, 54, 46, 49, 58, 0, 0, 0, 7, 3, 5, 4, 8, 56, 57, 57, 57, 57, 24, 57, 57, 57, 57, 57, 57, 57, 25, 57, 57, 57, 26, 23, 57, 57, 57, 57, 57, 57, 57, 57, 57, 0, 65, 67, 62, 63, 61, 67, 71, 68, 70, 69, 51, 47, 49, 58, 59, 29, 22, 30, 57, 57, 57, 57, 57, 28, 57, 57, 57, 57, 57, 57, 57, 57, 21, 57, 57, 57, 33, 57, 57, 57, 57, 57, 57, 75, 0, 57, 57, 57, 57, 57, 35, 57, 57, 57, 57, 57, 57, 40, 57, 12, 57, 57, 57, 11, 57, 57, 27, 19, 57, 15, 64, 14, 57, 57, 57, 20, 57, 57, 57, 57, 45, 41, 42, 57, 57, 57, 57, 57, 57, 57, 57, 37, 57, 57, 57, 57, 57, 10, 57, 57, 17, 34, 57, 57, 57, 38, 39, 57, 57, 57, 57, 57, 57, 43, 9, 36, 13, 57, 44, 57, 32, 16, 0, 18, 57, 50, 31, 0 } ; static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 5, 6, 7, 8, 1, 1, 1, 9, 9, 10, 1, 1, 9, 1, 11, 12, 13, 14, 15, 16, 16, 17, 16, 18, 16, 1, 1, 19, 20, 21, 9, 22, 23, 24, 23, 23, 23, 23, 25, 25, 25, 25, 26, 25, 27, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 9, 28, 9, 1, 29, 1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 25, 25, 39, 40, 41, 42, 43, 25, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 9, 54, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static yyconst flex_int32_t yy_meta[55] = { 0, 1, 2, 3, 1, 1, 4, 1, 1, 2, 5, 6, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 8, 8, 9, 10, 10, 11, 9, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 9, 9, 1, 1 } ; static yyconst flex_int16_t yy_base[246] = { 0, 0, 0, 52, 53, 54, 57, 357, 356, 351, 350, 359, 364, 364, 364, 338, 364, 0, 347, 51, 37, 40, 50, 336, 51, 0, 0, 38, 313, 313, 56, 314, 311, 44, 309, 53, 306, 28, 55, 55, 311, 310, 0, 0, 364, 364, 67, 0, 364, 309, 335, 0, 364, 364, 334, 364, 0, 364, 334, 364, 0, 0, 319, 318, 0, 364, 364, 364, 364, 364, 0, 0, 302, 58, 308, 0, 298, 292, 298, 297, 291, 295, 291, 72, 286, 285, 61, 295, 0, 291, 289, 297, 294, 281, 290, 276, 281, 288, 266, 0, 364, 364, 364, 364, 0, 0, 364, 364, 364, 0, 364, 0, 364, 0, 0, 0, 0, 281, 69, 274, 272, 282, 0, 276, 283, 274, 278, 93, 279, 280, 279, 0, 263, 259, 272, 0, 259, 266, 263, 268, 255, 266, 364, 0, 261, 260, 267, 245, 261, 249, 244, 262, 244, 240, 272, 274, 0, 250, 0, 241, 251, 254, 0, 245, 241, 0, 0, 101, 0, 364, 0, 235, 242, 236, 0, 240, 235, 237, 242, 0, 0, 0, 240, 239, 226, 225, 228, 233, 251, 253, 0, 228, 224, 222, 211, 204, 0, 204, 181, 0, 0, 185, 175, 151, 0, 0, 153, 145, 151, 154, 143, 173, 0, 0, 0, 0, 128, 0, 71, 0, 0, 94, 0, 64, 364, 0, 364, 119, 130, 141, 152, 157, 163, 167, 171, 175, 184, 192, 202, 213, 223, 234, 245, 250, 252, 254 } ; static yyconst flex_int16_t yy_def[246] = { 0, 226, 1, 227, 227, 228, 228, 229, 229, 230, 230, 226, 226, 226, 226, 226, 226, 231, 232, 226, 233, 233, 226, 226, 226, 234, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 236, 237, 226, 226, 238, 239, 226, 226, 240, 241, 226, 226, 226, 226, 231, 226, 232, 226, 242, 21, 226, 226, 243, 226, 226, 226, 226, 226, 234, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 236, 237, 226, 226, 226, 226, 244, 239, 226, 226, 226, 241, 226, 242, 226, 243, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 226, 245, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 226, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 226, 235, 235, 226, 235, 0, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226 } ; static yyconst flex_int16_t yy_nxt[419] = { 0, 12, 13, 14, 13, 15, 16, 17, 18, 12, 12, 19, 20, 21, 21, 21, 21, 21, 21, 22, 23, 24, 25, 26, 26, 26, 26, 26, 12, 26, 27, 26, 28, 26, 29, 30, 31, 26, 32, 26, 33, 34, 35, 36, 37, 38, 39, 40, 26, 41, 26, 26, 26, 42, 12, 44, 44, 48, 45, 45, 48, 59, 60, 62, 63, 49, 62, 63, 49, 65, 66, 68, 69, 101, 84, 90, 91, 72, 85, 73, 46, 46, 50, 74, 75, 50, 78, 64, 87, 92, 226, 115, 94, 130, 79, 102, 221, 88, 80, 95, 224, 93, 145, 81, 125, 126, 154, 131, 155, 116, 225, 156, 223, 103, 188, 146, 189, 104, 127, 190, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 56, 56, 56, 56, 58, 222, 58, 58, 58, 58, 61, 221, 220, 61, 70, 70, 70, 70, 71, 71, 71, 71, 98, 98, 219, 218, 217, 98, 98, 99, 99, 216, 215, 99, 99, 99, 99, 99, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 105, 105, 214, 105, 105, 213, 105, 105, 105, 105, 107, 107, 212, 107, 107, 107, 107, 107, 107, 107, 107, 109, 109, 109, 211, 109, 109, 109, 109, 109, 109, 109, 111, 111, 210, 111, 111, 111, 111, 111, 111, 111, 111, 113, 113, 143, 143, 169, 169, 209, 208, 207, 206, 205, 204, 203, 202, 201, 200, 199, 198, 197, 196, 195, 194, 193, 192, 191, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 153, 152, 151, 150, 149, 148, 147, 144, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 129, 128, 124, 123, 122, 121, 120, 119, 118, 117, 114, 112, 112, 57, 110, 108, 106, 97, 96, 89, 86, 83, 82, 77, 76, 67, 57, 55, 226, 54, 54, 52, 52, 11, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226 } ; static yyconst flex_int16_t yy_chk[419] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 5, 3, 4, 6, 19, 19, 20, 20, 5, 21, 21, 6, 22, 22, 24, 24, 46, 33, 37, 37, 27, 33, 27, 3, 4, 5, 27, 27, 6, 30, 20, 35, 38, 21, 73, 39, 86, 30, 46, 221, 35, 30, 39, 221, 38, 118, 30, 83, 83, 127, 86, 127, 73, 223, 127, 218, 46, 167, 118, 167, 46, 83, 167, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 231, 231, 231, 231, 232, 216, 232, 232, 232, 232, 233, 211, 210, 233, 234, 234, 234, 234, 235, 235, 235, 235, 236, 236, 209, 208, 207, 236, 236, 237, 237, 206, 203, 237, 237, 237, 237, 237, 237, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 239, 239, 202, 239, 239, 201, 239, 239, 239, 239, 240, 240, 198, 240, 240, 240, 240, 240, 240, 240, 240, 241, 241, 241, 197, 241, 241, 241, 241, 241, 241, 241, 242, 242, 195, 242, 242, 242, 242, 242, 242, 242, 242, 243, 243, 244, 244, 245, 245, 194, 193, 192, 191, 189, 188, 187, 186, 185, 184, 183, 182, 178, 177, 176, 175, 173, 172, 171, 164, 163, 161, 160, 159, 157, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 141, 140, 139, 138, 137, 136, 134, 133, 132, 130, 129, 128, 126, 125, 124, 123, 121, 120, 119, 117, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 87, 85, 84, 82, 81, 80, 79, 78, 77, 76, 74, 72, 63, 62, 58, 54, 50, 49, 41, 40, 36, 34, 32, 31, 29, 28, 23, 18, 15, 11, 10, 9, 8, 7, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226 } ; /* Table of booleans, true if rule could match eol. */ static yyconst flex_int32_t yy_rule_can_match_eol[79] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, }; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. */ #define REJECT reject_used_but_not_detected #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET #line 1 "lexer.l" /* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ /* Lexical analyzer for YARA */ #line 20 "lexer.l" #include #include #include #include #include #include "yara.h" #include "sizedstr.h" #include "grammar.h" #include "mem.h" #include "lexer.h" #include "utils.h" #include "re.h" #include "config.h" #ifdef DMALLOC #include #endif #define LEX_CHECK_SPACE_OK(data, current_size, max_length) \ if (strlen(data) + current_size >= max_length - 1) \ { \ yyerror(yyscanner, "out of space in lex_buf"); \ yyterminate(); \ } #define YYTEXT_TO_BUFFER \ { \ char *yptr = yytext; \ LEX_CHECK_SPACE_OK(yptr, yyextra->lex_buf_len, LEX_BUF_SIZE); \ while(*yptr) \ { \ *yyextra->lex_buf_ptr++ = *yptr++; \ yyextra->lex_buf_len++; \ } \ } #ifdef WIN32 #define snprintf _snprintf #endif #define YY_NO_UNISTD_H 1 #define YY_NO_INPUT 1 #line 691 "lexer.c" #define INITIAL 0 #define str 1 #define regexp 2 #define include 3 #define comment 4 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way * down here because we want the user's section 1 to have been scanned first. * The user has a chance to override it with an option. */ #include #endif #ifndef YY_EXTRA_TYPE #define YY_EXTRA_TYPE void * #endif /* Holds the entire state of the reentrant scanner. */ struct yyguts_t { /* User-defined. Not touched by flex. */ YY_EXTRA_TYPE yyextra_r; /* The rest are the same as the globals declared in the non-reentrant scanner. */ FILE *yyin_r, *yyout_r; size_t yy_buffer_stack_top; /**< index of top of stack. */ size_t yy_buffer_stack_max; /**< capacity of stack. */ YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ char yy_hold_char; yy_size_t yy_n_chars; yy_size_t yyleng_r; char *yy_c_buf_p; int yy_init; int yy_start; int yy_did_buffer_switch_on_eof; int yy_start_stack_ptr; int yy_start_stack_depth; int *yy_start_stack; yy_state_type yy_last_accepting_state; char* yy_last_accepting_cpos; int yylineno_r; int yy_flex_debug_r; char *yytext_r; int yy_more_flag; int yy_more_len; YYSTYPE * yylval_r; }; /* end struct yyguts_t */ static int yy_init_globals (yyscan_t yyscanner ); /* This must go here because YYSTYPE and YYLTYPE are included * from bison output in section 1.*/ # define yylval yyg->yylval_r int yara_yylex_init (yyscan_t* scanner); int yara_yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int yara_yylex_destroy (yyscan_t yyscanner ); int yara_yyget_debug (yyscan_t yyscanner ); void yara_yyset_debug (int debug_flag ,yyscan_t yyscanner ); YY_EXTRA_TYPE yara_yyget_extra (yyscan_t yyscanner ); void yara_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); FILE *yara_yyget_in (yyscan_t yyscanner ); void yara_yyset_in (FILE * in_str ,yyscan_t yyscanner ); FILE *yara_yyget_out (yyscan_t yyscanner ); void yara_yyset_out (FILE * out_str ,yyscan_t yyscanner ); yy_size_t yara_yyget_leng (yyscan_t yyscanner ); char *yara_yyget_text (yyscan_t yyscanner ); int yara_yyget_lineno (yyscan_t yyscanner ); void yara_yyset_lineno (int line_number ,yyscan_t yyscanner ); YYSTYPE * yara_yyget_lval (yyscan_t yyscanner ); void yara_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int yara_yywrap (yyscan_t yyscanner ); #else extern int yara_yywrap (yyscan_t yyscanner ); #endif #endif #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (yyscan_t yyscanner ); #else static int input (yyscan_t yyscanner ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #define YY_READ_BUF_SIZE 8192 #endif /* Copy whatever the last rule matched to the standard output. */ #ifndef ECHO /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ #define ECHO fwrite( yytext, yyleng, 1, yyout ) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, * is returned in "result". */ #ifndef YY_INPUT #define YY_INPUT(buf,result,max_size) \ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ yy_size_t n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(yyin); \ } \ }\ \ #endif /* No semi-colon after return; correct usage is to write "yyterminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */ #ifndef yyterminate #define yyterminate() return YY_NULL #endif /* Number of entries by which start-condition stack grows. */ #ifndef YY_START_STACK_INCR #define YY_START_STACK_INCR 25 #endif /* Report a fatal error. */ #ifndef YY_FATAL_ERROR #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner) #endif /* end tables serialization structures and prototypes */ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int yara_yylex \ (YYSTYPE * yylval_param ,yyscan_t yyscanner); #define YY_DECL int yara_yylex \ (YYSTYPE * yylval_param , yyscan_t yyscanner) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION #endif /* Code executed at the end of each rule. */ #ifndef YY_BREAK #define YY_BREAK break; #endif #define YY_RULE_SETUP \ YY_USER_ACTION /** The main scanner function which does all the work. */ YY_DECL { register yy_state_type yy_current_state; register char *yy_cp, *yy_bp; register int yy_act; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; #line 86 "lexer.l" #line 929 "lexer.c" yylval = yylval_param; if ( !yyg->yy_init ) { yyg->yy_init = 1; #ifdef YY_USER_INIT YY_USER_INIT; #endif if ( ! yyg->yy_start ) yyg->yy_start = 1; /* first start state */ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { yara_yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = yara_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); } yara_yy_load_buffer_state(yyscanner ); } while ( 1 ) /* loops until end-of-file is reached */ { yy_cp = yyg->yy_c_buf_p; /* Support of yytext. */ *yy_cp = yyg->yy_hold_char; /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; yy_current_state = yyg->yy_start; yy_match: do { register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 227 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 364 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) { /* have to back up */ yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; yy_act = yy_accept[yy_current_state]; } YY_DO_BEFORE_ACTION; if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) { yy_size_t yyl; for ( yyl = 0; yyl < yyleng; ++yyl ) if ( yytext[yyl] == '\n' ) do{ yylineno++; yycolumn=0; }while(0) ; } do_action: /* This label is used only to access EOF actions. */ switch ( yy_act ) { /* beginning of action switch */ case 0: /* must back up */ /* undo the effects of YY_DO_BEFORE_ACTION */ *yy_cp = yyg->yy_hold_char; yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; goto yy_find_action; case 1: YY_RULE_SETUP #line 88 "lexer.l" { return _LT_; } YY_BREAK case 2: YY_RULE_SETUP #line 89 "lexer.l" { return _GT_; } YY_BREAK case 3: YY_RULE_SETUP #line 90 "lexer.l" { return _LE_; } YY_BREAK case 4: YY_RULE_SETUP #line 91 "lexer.l" { return _GE_; } YY_BREAK case 5: YY_RULE_SETUP #line 92 "lexer.l" { return _EQ_; } YY_BREAK case 6: YY_RULE_SETUP #line 93 "lexer.l" { return _NEQ_; } YY_BREAK case 7: YY_RULE_SETUP #line 94 "lexer.l" { return _SHIFT_LEFT_; } YY_BREAK case 8: YY_RULE_SETUP #line 95 "lexer.l" { return _SHIFT_RIGHT_; } YY_BREAK case 9: YY_RULE_SETUP #line 96 "lexer.l" { return _PRIVATE_; } YY_BREAK case 10: YY_RULE_SETUP #line 97 "lexer.l" { return _GLOBAL_; } YY_BREAK case 11: YY_RULE_SETUP #line 98 "lexer.l" { return _RULE_; } YY_BREAK case 12: YY_RULE_SETUP #line 99 "lexer.l" { return _META_; } YY_BREAK case 13: YY_RULE_SETUP #line 100 "lexer.l" { return _STRINGS_; } YY_BREAK case 14: YY_RULE_SETUP #line 101 "lexer.l" { return _ASCII_; } YY_BREAK case 15: YY_RULE_SETUP #line 102 "lexer.l" { return _WIDE_; } YY_BREAK case 16: YY_RULE_SETUP #line 103 "lexer.l" { return _FULLWORD_; } YY_BREAK case 17: YY_RULE_SETUP #line 104 "lexer.l" { return _NOCASE_; } YY_BREAK case 18: YY_RULE_SETUP #line 105 "lexer.l" { return _CONDITION_; } YY_BREAK case 19: YY_RULE_SETUP #line 106 "lexer.l" { return _TRUE_; } YY_BREAK case 20: YY_RULE_SETUP #line 107 "lexer.l" { return _FALSE_; } YY_BREAK case 21: YY_RULE_SETUP #line 108 "lexer.l" { return _NOT_; } YY_BREAK case 22: YY_RULE_SETUP #line 109 "lexer.l" { return _AND_; } YY_BREAK case 23: YY_RULE_SETUP #line 110 "lexer.l" { return _OR_; } YY_BREAK case 24: YY_RULE_SETUP #line 111 "lexer.l" { return _AT_; } YY_BREAK case 25: YY_RULE_SETUP #line 112 "lexer.l" { return _IN_; } YY_BREAK case 26: YY_RULE_SETUP #line 113 "lexer.l" { return _OF_; } YY_BREAK case 27: YY_RULE_SETUP #line 114 "lexer.l" { return _THEM_; } YY_BREAK case 28: YY_RULE_SETUP #line 115 "lexer.l" { return _FOR_; } YY_BREAK case 29: YY_RULE_SETUP #line 116 "lexer.l" { return _ALL_; } YY_BREAK case 30: YY_RULE_SETUP #line 117 "lexer.l" { return _ANY_; } YY_BREAK case 31: YY_RULE_SETUP #line 118 "lexer.l" { return _ENTRYPOINT_; } YY_BREAK case 32: YY_RULE_SETUP #line 119 "lexer.l" { return _SIZE_; } YY_BREAK case 33: YY_RULE_SETUP #line 120 "lexer.l" { return _RVA_; } YY_BREAK case 34: YY_RULE_SETUP #line 121 "lexer.l" { return _OFFSET_; } YY_BREAK case 35: YY_RULE_SETUP #line 122 "lexer.l" { return _FILE_; } YY_BREAK case 36: YY_RULE_SETUP #line 123 "lexer.l" { return _SECTION_; } YY_BREAK case 37: YY_RULE_SETUP #line 124 "lexer.l" { return _UINT8_; } YY_BREAK case 38: YY_RULE_SETUP #line 125 "lexer.l" { return _UINT16_; } YY_BREAK case 39: YY_RULE_SETUP #line 126 "lexer.l" { return _UINT32_; } YY_BREAK case 40: YY_RULE_SETUP #line 127 "lexer.l" { return _INT8_; } YY_BREAK case 41: YY_RULE_SETUP #line 128 "lexer.l" { return _INT16_; } YY_BREAK case 42: YY_RULE_SETUP #line 129 "lexer.l" { return _INT32_; } YY_BREAK case 43: YY_RULE_SETUP #line 130 "lexer.l" { return _MATCHES_; } YY_BREAK case 44: YY_RULE_SETUP #line 131 "lexer.l" { return _CONTAINS_; } YY_BREAK case 45: YY_RULE_SETUP #line 132 "lexer.l" { return _INDEX_; } YY_BREAK case 46: YY_RULE_SETUP #line 135 "lexer.l" { BEGIN(comment); } YY_BREAK case 47: YY_RULE_SETUP #line 136 "lexer.l" { BEGIN(INITIAL); } YY_BREAK case 48: /* rule 48 can match eol */ YY_RULE_SETUP #line 137 "lexer.l" { /* skip comments */ } YY_BREAK case 49: YY_RULE_SETUP #line 140 "lexer.l" { /* skip single-line comments */ } YY_BREAK case 50: YY_RULE_SETUP #line 143 "lexer.l" { yyextra->lex_buf_ptr = yyextra->lex_buf; yyextra->lex_buf_len = 0; BEGIN(include); } YY_BREAK case 51: /* rule 51 can match eol */ YY_RULE_SETUP #line 150 "lexer.l" { YYTEXT_TO_BUFFER; } YY_BREAK case 52: YY_RULE_SETUP #line 153 "lexer.l" { char buffer[1024]; char *current_file_name; char *s = NULL; char *b = NULL; char *f; FILE* fh; YR_COMPILER* compiler = yara_yyget_extra(yyscanner); if (compiler->allow_includes) { *yyextra->lex_buf_ptr = '\0'; // null-terminate included file path // move path of current source file into buffer current_file_name = yr_compiler_get_current_file_name(compiler); if (current_file_name != NULL) { strncpy(buffer, current_file_name, sizeof(buffer)-1); buffer[sizeof(buffer)-1] = '\0'; } else { buffer[0] = '\0'; } // make included file path relative to current source file s = strrchr(buffer, '/'); #ifdef WIN32 b = strrchr(buffer, '\\'); // in Windows both path delimiters are accepted #endif if (s != NULL || b != NULL) { f = (b > s)? (b + 1): (s + 1); strncpy(f, yyextra->lex_buf, sizeof(buffer) - (f - buffer)); buffer[sizeof(buffer)-1] = '\0'; // SECURITY: Potential for directory traversal here. fh = fopen(buffer, "r"); // if include file was not found relative to current source file, // try to open it with path as specified by user (maybe user wrote // a full path) if (fh == NULL) { // SECURITY: Potential for directory traversal here. fh = fopen(yyextra->lex_buf, "r"); } } else { // SECURITY: Potential for directory traversal here. fh = fopen(yyextra->lex_buf, "r"); } if (fh != NULL) { int error_code = yr_compiler_push_file_name(compiler, yyextra->lex_buf); if (error_code != ERROR_SUCCESS) { if (error_code == ERROR_INCLUDES_CIRCULAR_REFERENCE) { yyerror(yyscanner, "includes circular reference"); } else if (error_code == ERROR_INCLUDE_DEPTH_EXCEEDED) { yyerror(yyscanner, "includes circular reference"); } yyterminate(); } _yr_compiler_push_file(compiler, fh); yara_yypush_buffer_state(yara_yy_create_buffer(fh,YY_BUF_SIZE,yyscanner),yyscanner); } else { snprintf(buffer, sizeof(buffer), "can't open include file: %s", yyextra->lex_buf); yyerror(yyscanner, buffer); } } else // not allowing includes { yyerror(yyscanner, "includes are disabled"); yyterminate(); } BEGIN(INITIAL); } YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(str): case YY_STATE_EOF(regexp): case YY_STATE_EOF(include): case YY_STATE_EOF(comment): #line 251 "lexer.l" { YR_COMPILER* compiler = yara_yyget_extra(yyscanner); FILE* file = _yr_compiler_pop_file(compiler); if (file != NULL) { fclose(file); } yr_compiler_pop_file_name(compiler); yara_yypop_buffer_state(yyscanner); if (!YY_CURRENT_BUFFER) { yyterminate(); } } YY_BREAK case 53: YY_RULE_SETUP #line 271 "lexer.l" { yylval->c_string = yr_strdup(yytext); return _STRING_IDENTIFIER_WITH_WILDCARD_; } YY_BREAK case 54: YY_RULE_SETUP #line 278 "lexer.l" { yylval->c_string = yr_strdup(yytext); return _STRING_IDENTIFIER_; } YY_BREAK case 55: YY_RULE_SETUP #line 285 "lexer.l" { yylval->c_string = yr_strdup(yytext); yylval->c_string[0] = '$'; /* replace # by $*/ return _STRING_COUNT_; } YY_BREAK case 56: YY_RULE_SETUP #line 293 "lexer.l" { yylval->c_string = yr_strdup(yytext); yylval->c_string[0] = '$'; /* replace @ by $*/ return _STRING_OFFSET_; } YY_BREAK case 57: YY_RULE_SETUP #line 301 "lexer.l" { if (strlen(yytext) > 128) { yyerror(yyscanner, "indentifier too long"); } yylval->c_string = yr_strdup(yytext); return _IDENTIFIER_; } YY_BREAK case 58: YY_RULE_SETUP #line 313 "lexer.l" { yylval->integer = (size_t) atol(yytext); if (strstr(yytext, "KB") != NULL) { yylval->integer *= 1024; } else if (strstr(yytext, "MB") != NULL) { yylval->integer *= 1048576; } return _NUMBER_; } YY_BREAK case 59: YY_RULE_SETUP #line 329 "lexer.l" { yylval->integer = xtoi(yytext + 2); return _NUMBER_; } YY_BREAK case 60: YY_RULE_SETUP #line 336 "lexer.l" { /* saw closing quote - all done */ SIZED_STRING* s; if (yyextra->lex_buf_len == 0) { yyerror(yyscanner, "empty string"); } *yyextra->lex_buf_ptr = '\0'; BEGIN(INITIAL); s = (SIZED_STRING*) yr_malloc(yyextra->lex_buf_len + sizeof(SIZED_STRING)); s->length = yyextra->lex_buf_len; s->flags = 0; memcpy(s->c_string, yyextra->lex_buf, yyextra->lex_buf_len + 1); yylval->sized_string = s; return _TEXTSTRING_; } YY_BREAK case 61: YY_RULE_SETUP #line 360 "lexer.l" { LEX_CHECK_SPACE_OK("\t", yyextra->lex_buf_len, LEX_BUF_SIZE); *yyextra->lex_buf_ptr++ = '\t'; yyextra->lex_buf_len++; } YY_BREAK case 62: YY_RULE_SETUP #line 368 "lexer.l" { LEX_CHECK_SPACE_OK("\"", yyextra->lex_buf_len, LEX_BUF_SIZE); *yyextra->lex_buf_ptr++ = '\"'; yyextra->lex_buf_len++; } YY_BREAK case 63: YY_RULE_SETUP #line 376 "lexer.l" { LEX_CHECK_SPACE_OK("\\", yyextra->lex_buf_len, LEX_BUF_SIZE); *yyextra->lex_buf_ptr++ = '\\'; yyextra->lex_buf_len++; } YY_BREAK case 64: YY_RULE_SETUP #line 384 "lexer.l" { int result; sscanf( yytext + 2, "%x", &result ); LEX_CHECK_SPACE_OK("X", yyextra->lex_buf_len, LEX_BUF_SIZE); *yyextra->lex_buf_ptr++ = result; yyextra->lex_buf_len++; } YY_BREAK case 65: YY_RULE_SETUP #line 395 "lexer.l" { YYTEXT_TO_BUFFER; } YY_BREAK case 66: /* rule 66 can match eol */ YY_RULE_SETUP #line 398 "lexer.l" { yyerror(yyscanner, "unterminated string"); yyterminate(); } YY_BREAK case 67: /* rule 67 can match eol */ YY_RULE_SETUP #line 404 "lexer.l" { yyerror(yyscanner, "illegal escape sequence"); } YY_BREAK case 68: YY_RULE_SETUP #line 410 "lexer.l" { SIZED_STRING* s; if (yyextra->lex_buf_len == 0) { yyerror(yyscanner, "empty regular expression"); } *yyextra->lex_buf_ptr = '\0'; BEGIN(INITIAL); s = (SIZED_STRING*) yr_malloc(yyextra->lex_buf_len + sizeof(SIZED_STRING)); if (yytext[1] == 'i') s->flags = SIZED_STRING_FLAGS_NO_CASE; else s->flags = 0; s->length = yyextra->lex_buf_len; strcpy(s->c_string, yyextra->lex_buf); yylval->sized_string = s; return _REGEXP_; } YY_BREAK case 69: YY_RULE_SETUP #line 439 "lexer.l" { LEX_CHECK_SPACE_OK("/", yyextra->lex_buf_len, LEX_BUF_SIZE); *yyextra->lex_buf_ptr++ = '/'; yyextra->lex_buf_len++ ; } YY_BREAK case 70: YY_RULE_SETUP #line 447 "lexer.l" { LEX_CHECK_SPACE_OK("\\.", yyextra->lex_buf_len, LEX_BUF_SIZE); *yyextra->lex_buf_ptr++ = yytext[0]; *yyextra->lex_buf_ptr++ = yytext[1]; yyextra->lex_buf_len += 2; } YY_BREAK case 71: YY_RULE_SETUP #line 456 "lexer.l" { YYTEXT_TO_BUFFER; } YY_BREAK case 72: /* rule 72 can match eol */ YY_RULE_SETUP #line 459 "lexer.l" { yyerror(yyscanner, "unterminated regular expression"); yyterminate(); } YY_BREAK case 73: YY_RULE_SETUP #line 466 "lexer.l" { yyextra->lex_buf_ptr = yyextra->lex_buf; yyextra->lex_buf_len = 0; BEGIN(str); } YY_BREAK case 74: YY_RULE_SETUP #line 474 "lexer.l" { yyextra->lex_buf_ptr = yyextra->lex_buf; yyextra->lex_buf_len = 0; BEGIN(regexp); } YY_BREAK case 75: /* rule 75 can match eol */ YY_RULE_SETUP #line 482 "lexer.l" { int len = strlen(yytext); SIZED_STRING* s = (SIZED_STRING*) yr_malloc(len + sizeof(SIZED_STRING)); s->length = len; s->flags = 0; strcpy(s->c_string, yytext); yylval->sized_string = s; return _HEXSTRING_; } YY_BREAK case 76: /* rule 76 can match eol */ YY_RULE_SETUP #line 497 "lexer.l" /* skip whitespace */ YY_BREAK case 77: YY_RULE_SETUP #line 499 "lexer.l" { if (yytext[0] >= 32 && yytext[0] < 127) { return yytext[0]; } else { yyerror(yyscanner, "non-ascii character"); yyterminate(); } } YY_BREAK case 78: YY_RULE_SETUP #line 512 "lexer.l" ECHO; YY_BREAK #line 1715 "lexer.c" case YY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1; /* Undo the effects of YY_DO_BEFORE_ACTION. */ *yy_cp = yyg->yy_hold_char; YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * yara_yylex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } /* Note that here we test for yy_c_buf_p "<=" to the position * of the first EOB in the buffer, since yy_c_buf_p will * already have been incremented past the NUL character * (since all states make transitions on EOB to the * end-of-buffer state). Contrast this with the test * in input(). */ if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) { /* This was really a NUL. */ yy_state_type yy_next_state; yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( yyscanner ); /* Okay, we're now positioned to make the NUL * transition. We couldn't have * yy_get_previous_state() go ahead and do it * for us because it doesn't know how to deal * with the possibility of jamming (and we don't * want to build jamming into it because then it * will run more slowly). */ yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner); yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ yy_cp = ++yyg->yy_c_buf_p; yy_current_state = yy_next_state; goto yy_match; } else { yy_cp = yyg->yy_c_buf_p; goto yy_find_action; } } else switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_END_OF_FILE: { yyg->yy_did_buffer_switch_on_eof = 0; if ( yara_yywrap(yyscanner ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * YY_NULL, it'll still work - another * YY_NULL will get returned. */ yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; } else { if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( yyscanner ); yy_cp = yyg->yy_c_buf_p; yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: yyg->yy_c_buf_p = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]; yy_current_state = yy_get_previous_state( yyscanner ); yy_cp = yyg->yy_c_buf_p; yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; goto yy_find_action; } break; } default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of yara_yylex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; register char *source = yyg->yytext_ptr; register int number_to_move, i; int ret_val; if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; } else { /* We matched some text prior to the EOB, first * process it. */ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; else { yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ YY_BUFFER_STATE b = YY_CURRENT_BUFFER; int yy_c_buf_p_offset = (int) (yyg->yy_c_buf_p - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ yara_yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = 0; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; } if ( num_to_read > YY_READ_BUF_SIZE ) num_to_read = YY_READ_BUF_SIZE; /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), yyg->yy_n_chars, num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } if ( yyg->yy_n_chars == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; yara_yyrestart(yyin ,yyscanner); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yara_yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); } yyg->yy_n_chars += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; return ret_val; } /* yy_get_previous_state - get the state just before the EOB char was reached */ static yy_state_type yy_get_previous_state (yyscan_t yyscanner) { register yy_state_type yy_current_state; register char *yy_cp; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_current_state = yyg->yy_start; for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) { register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 227 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = yy_try_NUL_trans( current_state ); */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) { register int yy_is_jam; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ register char *yy_cp = yyg->yy_c_buf_p; register YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 227 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 226); return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (yyscan_t yyscanner) #else static int input (yyscan_t yyscanner) #endif { int c; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; *yyg->yy_c_buf_p = yyg->yy_hold_char; if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) { /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) /* This was really a NUL. */ *yyg->yy_c_buf_p = '\0'; else { /* need more input */ yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr; ++yyg->yy_c_buf_p; switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a * token and flags that we need to * try matching the token before * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ yara_yyrestart(yyin ,yyscanner); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( yara_yywrap(yyscanner ) ) return 0; if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(yyscanner); #else return input(yyscanner); #endif } case EOB_ACT_CONTINUE_SCAN: yyg->yy_c_buf_p = yyg->yytext_ptr + offset; break; } } } c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ yyg->yy_hold_char = *++yyg->yy_c_buf_p; if ( c == '\n' ) do{ yylineno++; yycolumn=0; }while(0) ; return c; } #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * @param yyscanner The scanner object. * @note This function does not reset the start condition to @c INITIAL . */ void yara_yyrestart (FILE * input_file , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! YY_CURRENT_BUFFER ){ yara_yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = yara_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); } yara_yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner); yara_yy_load_buffer_state(yyscanner ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * @param yyscanner The scanner object. */ void yara_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* TODO. We should be able to replace this entire function body * with * yara_yypop_buffer_state(); * yara_yypush_buffer_state(new_buffer); */ yara_yyensure_buffer_stack (yyscanner); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } YY_CURRENT_BUFFER_LVALUE = new_buffer; yara_yy_load_buffer_state(yyscanner ); /* We don't actually know whether we did this switch during * EOF (yara_yywrap()) processing, but the only time this flag * is looked at is after yara_yywrap() is called, so it's safe * to go ahead and always set it. */ yyg->yy_did_buffer_switch_on_eof = 1; } static void yara_yy_load_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; yyg->yy_hold_char = *yyg->yy_c_buf_p; } /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * @param yyscanner The scanner object. * @return the allocated buffer state. */ YY_BUFFER_STATE yara_yy_create_buffer (FILE * file, int size , yyscan_t yyscanner) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) yara_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yara_yy_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) yara_yyalloc(b->yy_buf_size + 2 ,yyscanner ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yara_yy_create_buffer()" ); b->yy_is_our_buffer = 1; yara_yy_init_buffer(b,file ,yyscanner); return b; } /** Destroy the buffer. * @param b a buffer created with yara_yy_create_buffer() * @param yyscanner The scanner object. */ void yara_yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) yara_yyfree((void *) b->yy_ch_buf ,yyscanner ); yara_yyfree((void *) b ,yyscanner ); } #ifndef __cplusplus extern int isatty (int ); #endif /* __cplusplus */ /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yara_yyrestart() or at EOF. */ static void yara_yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) { int oerrno = errno; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yara_yy_flush_buffer(b ,yyscanner); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then yara_yy_init_buffer was _probably_ * called from yara_yyrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * @param yyscanner The scanner object. */ void yara_yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; b->yy_n_chars = 0; /* We always need two end-of-buffer characters. The first causes * a transition to the end-of-buffer state. The second causes * a jam in that state. */ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) yara_yy_load_buffer_state(yyscanner ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * @param yyscanner The scanner object. */ void yara_yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (new_buffer == NULL) return; yara_yyensure_buffer_stack(yyscanner); /* This block is copied from yara_yy_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) yyg->yy_buffer_stack_top++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yara_yy_switch_to_buffer. */ yara_yy_load_buffer_state(yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * @param yyscanner The scanner object. */ void yara_yypop_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!YY_CURRENT_BUFFER) return; yara_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner); YY_CURRENT_BUFFER_LVALUE = NULL; if (yyg->yy_buffer_stack_top > 0) --yyg->yy_buffer_stack_top; if (YY_CURRENT_BUFFER) { yara_yy_load_buffer_state(yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void yara_yyensure_buffer_stack (yyscan_t yyscanner) { yy_size_t num_to_alloc; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!yyg->yy_buffer_stack) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; yyg->yy_buffer_stack = (struct yy_buffer_state**)yara_yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in yara_yyensure_buffer_stack()" ); memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; yyg->yy_buffer_stack_top = 0; return; } if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ /* Increase the buffer to prepare for a possible push. */ int grow_size = 8 /* arbitrary grow size */; num_to_alloc = yyg->yy_buffer_stack_max + grow_size; yyg->yy_buffer_stack = (struct yy_buffer_state**)yara_yyrealloc (yyg->yy_buffer_stack, num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in yara_yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yara_yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return 0; b = (YY_BUFFER_STATE) yara_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yara_yy_scan_buffer()" ); b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = 0; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; yara_yy_switch_to_buffer(b ,yyscanner ); return b; } /** Setup the input buffer state to scan a string. The next call to yara_yylex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * @param yyscanner The scanner object. * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * yara_yy_scan_bytes() instead. */ YY_BUFFER_STATE yara_yy_scan_string (yyconst char * yystr , yyscan_t yyscanner) { return yara_yy_scan_bytes(yystr,strlen(yystr) ,yyscanner); } /** Setup the input buffer state to scan the given bytes. The next call to yara_yylex() will * scan from a @e copy of @a bytes. * @param bytes the byte buffer to scan * @param len the number of bytes in the buffer pointed to by @a bytes. * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yara_yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len , yyscan_t yyscanner) { YY_BUFFER_STATE b; char *buf; yy_size_t n, i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; buf = (char *) yara_yyalloc(n ,yyscanner ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yara_yy_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = yara_yy_scan_buffer(buf,n ,yyscanner); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yara_yy_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) { (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = yyg->yy_hold_char; \ yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ yyg->yy_hold_char = *yyg->yy_c_buf_p; \ *yyg->yy_c_buf_p = '\0'; \ yyleng = yyless_macro_arg; \ } \ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the user-defined data for this scanner. * @param yyscanner The scanner object. */ YY_EXTRA_TYPE yara_yyget_extra (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyextra; } /** Get the current line number. * @param yyscanner The scanner object. */ int yara_yyget_lineno (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yylineno; } /** Get the current column number. * @param yyscanner The scanner object. */ int yara_yyget_column (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yycolumn; } /** Get the input stream. * @param yyscanner The scanner object. */ FILE *yara_yyget_in (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyin; } /** Get the output stream. * @param yyscanner The scanner object. */ FILE *yara_yyget_out (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyout; } /** Get the length of the current token. * @param yyscanner The scanner object. */ yy_size_t yara_yyget_leng (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyleng; } /** Get the current token. * @param yyscanner The scanner object. */ char *yara_yyget_text (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yytext; } /** Set the user-defined data. This data is never touched by the scanner. * @param user_defined The data to be associated with this scanner. * @param yyscanner The scanner object. */ void yara_yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyextra = user_defined ; } /** Set the current line number. * @param line_number * @param yyscanner The scanner object. */ void yara_yyset_lineno (int line_number , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* lineno is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) yy_fatal_error( "yara_yyset_lineno called with no buffer" , yyscanner); yylineno = line_number; } /** Set the current column. * @param line_number * @param yyscanner The scanner object. */ void yara_yyset_column (int column_no , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* column is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) yy_fatal_error( "yara_yyset_column called with no buffer" , yyscanner); yycolumn = column_no; } /** Set the input stream. This does not discard the current * input buffer. * @param in_str A readable stream. * @param yyscanner The scanner object. * @see yara_yy_switch_to_buffer */ void yara_yyset_in (FILE * in_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyin = in_str ; } void yara_yyset_out (FILE * out_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyout = out_str ; } int yara_yyget_debug (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yy_flex_debug; } void yara_yyset_debug (int bdebug , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_flex_debug = bdebug ; } /* Accessor methods for yylval and yylloc */ YYSTYPE * yara_yyget_lval (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yylval; } void yara_yyset_lval (YYSTYPE * yylval_param , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yylval = yylval_param; } /* User-visible API */ /* yara_yylex_init is special because it creates the scanner itself, so it is * the ONLY reentrant function that doesn't take the scanner as the last argument. * That's why we explicitly handle the declaration, instead of using our macros. */ int yara_yylex_init(yyscan_t* ptr_yy_globals) { if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) yara_yyalloc ( sizeof( struct yyguts_t ), NULL ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); return yy_init_globals ( *ptr_yy_globals ); } /* yara_yylex_init_extra has the same functionality as yara_yylex_init, but follows the * convention of taking the scanner as the last argument. Note however, that * this is a *pointer* to a scanner, as it will be allocated by this call (and * is the reason, too, why this function also must handle its own declaration). * The user defined value in the first argument will be available to yara_yyalloc in * the yyextra field. */ int yara_yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals ) { struct yyguts_t dummy_yyguts; yara_yyset_extra (yy_user_defined, &dummy_yyguts); if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) yara_yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); yara_yyset_extra (yy_user_defined, *ptr_yy_globals); return yy_init_globals ( *ptr_yy_globals ); } static int yy_init_globals (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Initialization is the same as for the non-reentrant scanner. * This function is called from yara_yylex_destroy(), so don't allocate here. */ yyg->yy_buffer_stack = 0; yyg->yy_buffer_stack_top = 0; yyg->yy_buffer_stack_max = 0; yyg->yy_c_buf_p = (char *) 0; yyg->yy_init = 0; yyg->yy_start = 0; yyg->yy_start_stack_ptr = 0; yyg->yy_start_stack_depth = 0; yyg->yy_start_stack = NULL; /* Defined in main.c */ #ifdef YY_STDINIT yyin = stdin; yyout = stdout; #else yyin = (FILE *) 0; yyout = (FILE *) 0; #endif /* For future reference: Set errno on error, since we are called by * yara_yylex_init() */ return 0; } /* yara_yylex_destroy is for both reentrant and non-reentrant scanners. */ int yara_yylex_destroy (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ yara_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner ); YY_CURRENT_BUFFER_LVALUE = NULL; yara_yypop_buffer_state(yyscanner); } /* Destroy the stack itself. */ yara_yyfree(yyg->yy_buffer_stack ,yyscanner); yyg->yy_buffer_stack = NULL; /* Destroy the start condition stack. */ yara_yyfree(yyg->yy_start_stack ,yyscanner ); yyg->yy_start_stack = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * yara_yylex() is called, initialization will occur. */ yy_init_globals( yyscanner); /* Destroy the main struct (reentrant only). */ yara_yyfree ( yyscanner , yyscanner ); yyscanner = NULL; return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) { register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) { register int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *yara_yyalloc (yy_size_t size , yyscan_t yyscanner) { return (void *) malloc( size ); } void *yara_yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) { /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return (void *) realloc( (char *) ptr, size ); } void yara_yyfree (void * ptr , yyscan_t yyscanner) { free( (char *) ptr ); /* see yara_yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" #line 512 "lexer.l" void yyfatal( yyscan_t yyscanner, const char *error_message) { YR_COMPILER* compiler = yara_yyget_extra(yyscanner); yyerror(yyscanner, error_message); longjmp(compiler->error_recovery, 1); } void yyerror( yyscan_t yyscanner, const char *error_message) { YR_COMPILER* compiler = yara_yyget_extra(yyscanner); char message[512] = {'\0'}; char* file_name = NULL; /* if error_message != NULL the error comes from yyparse internal code else the error comes from my code and the error code is set in compiler->last_result */ compiler->errors++; if (compiler->error_line != 0) compiler->last_error_line = compiler->error_line; else compiler->last_error_line = yara_yyget_lineno(yyscanner); compiler->error_line = 0; if (compiler->file_name_stack_ptr > 0) { file_name = compiler->file_name_stack[compiler->file_name_stack_ptr - 1]; } else { file_name = NULL; } if (error_message != NULL) { yr_compiler_set_error_extra_info(compiler, error_message); compiler->last_error = ERROR_SYNTAX_ERROR; if (compiler->error_report_function != NULL) { compiler->error_report_function( YARA_ERROR_LEVEL_ERROR, file_name, compiler->last_error_line, error_message); } } else { compiler->last_error = compiler->last_result; if (compiler->error_report_function != NULL) { yr_compiler_get_error_message(compiler, message, sizeof(message)); compiler->error_report_function( YARA_ERROR_LEVEL_ERROR, file_name, compiler->last_error_line, message); } } compiler->last_result = ERROR_SUCCESS; } int yr_lex_parse_rules_string( const char* rules_string, YR_COMPILER* compiler) { yyscan_t yyscanner; YY_BUFFER_STATE state; if (setjmp(compiler->error_recovery) != 0) return compiler->errors; yara_yylex_init(&yyscanner); yara_yyset_debug(1,yyscanner); yara_yyset_extra(compiler,yyscanner); state = yara_yy_scan_string(rules_string,yyscanner); yara_yyset_lineno(1,yyscanner); yyparse(yyscanner); yara_yylex_destroy(yyscanner); return compiler->errors; } int yr_lex_parse_rules_file( FILE* rules_file, YR_COMPILER* compiler) { yyscan_t yyscanner; if (setjmp(compiler->error_recovery) != 0) return compiler->errors; yara_yylex_init(&yyscanner); #if YYDEBUG printf("debug enabled"); #endif yara_yyset_debug(1,yyscanner); yara_yyset_in(rules_file,yyscanner); yara_yyset_extra(compiler,yyscanner); yyparse(yyscanner); yara_yylex_destroy(yyscanner); return compiler->errors; } yara-2.0.0/libyara/lexer.h000066400000000000000000000032371225703323600153700ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #include "sizedstr.h" #include "grammar.h" #include "compiler.h" #define yyparse yara_yyparse #define yylex yara_yylex #define yyerror yara_yyerror #define yyfatal yara_yyfatal #define yychar yara_yychar #define yydebug yara_yydebug #define yynerrs yara_yynerrs #define yyget_extra yara_yyget_extra #define yyget_lineno yara_yyget_lineno #ifndef YY_TYPEDEF_YY_SCANNER_T #define YY_TYPEDEF_YY_SCANNER_T typedef void* yyscan_t; #endif #define YY_FATAL_ERROR(msg) yara_yyfatal(yyscanner, msg) #define YY_EXTRA_TYPE YR_COMPILER* #define YY_USE_CONST int yyget_lineno(yyscan_t yyscanner); int yylex( YYSTYPE* yylval_param, yyscan_t yyscanner); int yyparse( void *yyscanner); void yyerror( yyscan_t yyscanner, const char *error_message); void yyfatal( yyscan_t yyscanner, const char *error_message); YY_EXTRA_TYPE yyget_extra( yyscan_t yyscanner); int yr_lex_parse_rules_string( const char* rules_string, YR_COMPILER* compiler); int yr_lex_parse_rules_file( FILE* rules_file, YR_COMPILER* compiler); yara-2.0.0/libyara/lexer.l000066400000000000000000000327461225703323600154030ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ /* Lexical analyzer for YARA */ %{ #include #include #include #include #include #include "yara.h" #include "sizedstr.h" #include "grammar.h" #include "mem.h" #include "lexer.h" #include "utils.h" #include "re.h" #include "config.h" #ifdef DMALLOC #include #endif #define LEX_CHECK_SPACE_OK(data, current_size, max_length) \ if (strlen(data) + current_size >= max_length - 1) \ { \ yyerror(yyscanner, "out of space in lex_buf"); \ yyterminate(); \ } #define YYTEXT_TO_BUFFER \ { \ char *yptr = yytext; \ LEX_CHECK_SPACE_OK(yptr, yyextra->lex_buf_len, LEX_BUF_SIZE); \ while(*yptr) \ { \ *yyextra->lex_buf_ptr++ = *yptr++; \ yyextra->lex_buf_len++; \ } \ } #ifdef WIN32 #define snprintf _snprintf #endif %} %option reentrant bison-bridge %option noyywrap %option nounistd %option noinput %option nounput %option yylineno %option prefix="yara_yy" %option outfile="lex.yy.c" %option verbose %option warn %x str %x regexp %x include %x comment digit [0-9] letter [a-zA-Z] hexdigit [a-fA-F0-9] %% "<" { return _LT_; } ">" { return _GT_; } "<=" { return _LE_; } ">=" { return _GE_; } "==" { return _EQ_; } "!=" { return _NEQ_; } "<<" { return _SHIFT_LEFT_; } ">>" { return _SHIFT_RIGHT_; } "private" { return _PRIVATE_; } "global" { return _GLOBAL_; } "rule" { return _RULE_; } "meta" { return _META_; } "strings" { return _STRINGS_; } "ascii" { return _ASCII_; } "wide" { return _WIDE_; } "fullword" { return _FULLWORD_; } "nocase" { return _NOCASE_; } "condition" { return _CONDITION_; } "true" { return _TRUE_; } "false" { return _FALSE_; } "not" { return _NOT_; } "and" { return _AND_; } "or" { return _OR_; } "at" { return _AT_; } "in" { return _IN_; } "of" { return _OF_; } "them" { return _THEM_; } "for" { return _FOR_; } "all" { return _ALL_; } "any" { return _ANY_; } "entrypoint" { return _ENTRYPOINT_; } "filesize" { return _SIZE_; } "rva" { return _RVA_; } "offset" { return _OFFSET_; } "file" { return _FILE_; } "section" { return _SECTION_; } "uint8" { return _UINT8_; } "uint16" { return _UINT16_; } "uint32" { return _UINT32_; } "int8" { return _INT8_; } "int16" { return _INT16_; } "int32" { return _INT32_; } "matches" { return _MATCHES_; } "contains" { return _CONTAINS_; } "index" { return _INDEX_; } "/*" { BEGIN(comment); } "*/" { BEGIN(INITIAL); } (.|\n) { /* skip comments */ } "//"[^\n]* { /* skip single-line comments */ } include[ \t]+\" { yyextra->lex_buf_ptr = yyextra->lex_buf; yyextra->lex_buf_len = 0; BEGIN(include); } [^\"]+ { YYTEXT_TO_BUFFER; } \" { char buffer[1024]; char *current_file_name; char *s = NULL; char *b = NULL; char *f; FILE* fh; YR_COMPILER* compiler = yyget_extra(yyscanner); if (compiler->allow_includes) { *yyextra->lex_buf_ptr = '\0'; // null-terminate included file path // move path of current source file into buffer current_file_name = yr_compiler_get_current_file_name(compiler); if (current_file_name != NULL) { strncpy(buffer, current_file_name, sizeof(buffer)-1); buffer[sizeof(buffer)-1] = '\0'; } else { buffer[0] = '\0'; } // make included file path relative to current source file s = strrchr(buffer, '/'); #ifdef WIN32 b = strrchr(buffer, '\\'); // in Windows both path delimiters are accepted #endif if (s != NULL || b != NULL) { f = (b > s)? (b + 1): (s + 1); strncpy(f, yyextra->lex_buf, sizeof(buffer) - (f - buffer)); buffer[sizeof(buffer)-1] = '\0'; // SECURITY: Potential for directory traversal here. fh = fopen(buffer, "r"); // if include file was not found relative to current source file, // try to open it with path as specified by user (maybe user wrote // a full path) if (fh == NULL) { // SECURITY: Potential for directory traversal here. fh = fopen(yyextra->lex_buf, "r"); } } else { // SECURITY: Potential for directory traversal here. fh = fopen(yyextra->lex_buf, "r"); } if (fh != NULL) { int error_code = yr_compiler_push_file_name(compiler, yyextra->lex_buf); if (error_code != ERROR_SUCCESS) { if (error_code == ERROR_INCLUDES_CIRCULAR_REFERENCE) { yyerror(yyscanner, "includes circular reference"); } else if (error_code == ERROR_INCLUDE_DEPTH_EXCEEDED) { yyerror(yyscanner, "includes circular reference"); } yyterminate(); } _yr_compiler_push_file(compiler, fh); yypush_buffer_state( yy_create_buffer(fh, YY_BUF_SIZE, yyscanner), yyscanner); } else { snprintf(buffer, sizeof(buffer), "can't open include file: %s", yyextra->lex_buf); yyerror(yyscanner, buffer); } } else // not allowing includes { yyerror(yyscanner, "includes are disabled"); yyterminate(); } BEGIN(INITIAL); } <> { YR_COMPILER* compiler = yyget_extra(yyscanner); FILE* file = _yr_compiler_pop_file(compiler); if (file != NULL) { fclose(file); } yr_compiler_pop_file_name(compiler); yypop_buffer_state(yyscanner); if (!YY_CURRENT_BUFFER) { yyterminate(); } } $({letter}|{digit}|_)*"*" { yylval->c_string = yr_strdup(yytext); return _STRING_IDENTIFIER_WITH_WILDCARD_; } $({letter}|{digit}|_)* { yylval->c_string = yr_strdup(yytext); return _STRING_IDENTIFIER_; } #({letter}|{digit}|_)* { yylval->c_string = yr_strdup(yytext); yylval->c_string[0] = '$'; /* replace # by $*/ return _STRING_COUNT_; } @({letter}|{digit}|_)* { yylval->c_string = yr_strdup(yytext); yylval->c_string[0] = '$'; /* replace @ by $*/ return _STRING_OFFSET_; } ({letter}|_)({letter}|{digit}|_)* { if (strlen(yytext) > 128) { yyerror(yyscanner, "indentifier too long"); } yylval->c_string = yr_strdup(yytext); return _IDENTIFIER_; } {digit}+(MB|KB){0,1} { yylval->integer = (size_t) atol(yytext); if (strstr(yytext, "KB") != NULL) { yylval->integer *= 1024; } else if (strstr(yytext, "MB") != NULL) { yylval->integer *= 1048576; } return _NUMBER_; } 0x{hexdigit}+ { yylval->integer = xtoi(yytext + 2); return _NUMBER_; } \" { /* saw closing quote - all done */ SIZED_STRING* s; if (yyextra->lex_buf_len == 0) { yyerror(yyscanner, "empty string"); } *yyextra->lex_buf_ptr = '\0'; BEGIN(INITIAL); s = (SIZED_STRING*) yr_malloc(yyextra->lex_buf_len + sizeof(SIZED_STRING)); s->length = yyextra->lex_buf_len; s->flags = 0; memcpy(s->c_string, yyextra->lex_buf, yyextra->lex_buf_len + 1); yylval->sized_string = s; return _TEXTSTRING_; } \\t { LEX_CHECK_SPACE_OK("\t", yyextra->lex_buf_len, LEX_BUF_SIZE); *yyextra->lex_buf_ptr++ = '\t'; yyextra->lex_buf_len++; } \\\" { LEX_CHECK_SPACE_OK("\"", yyextra->lex_buf_len, LEX_BUF_SIZE); *yyextra->lex_buf_ptr++ = '\"'; yyextra->lex_buf_len++; } \\\\ { LEX_CHECK_SPACE_OK("\\", yyextra->lex_buf_len, LEX_BUF_SIZE); *yyextra->lex_buf_ptr++ = '\\'; yyextra->lex_buf_len++; } \\x{hexdigit}{2} { int result; sscanf( yytext + 2, "%x", &result ); LEX_CHECK_SPACE_OK("X", yyextra->lex_buf_len, LEX_BUF_SIZE); *yyextra->lex_buf_ptr++ = result; yyextra->lex_buf_len++; } [^\\\n\"]+ { YYTEXT_TO_BUFFER; } \n { yyerror(yyscanner, "unterminated string"); yyterminate(); } \\(.|\n) { yyerror(yyscanner, "illegal escape sequence"); } \/i? { SIZED_STRING* s; if (yyextra->lex_buf_len == 0) { yyerror(yyscanner, "empty regular expression"); } *yyextra->lex_buf_ptr = '\0'; BEGIN(INITIAL); s = (SIZED_STRING*) yr_malloc(yyextra->lex_buf_len + sizeof(SIZED_STRING)); if (yytext[1] == 'i') s->flags = SIZED_STRING_FLAGS_NO_CASE; else s->flags = 0; s->length = yyextra->lex_buf_len; strcpy(s->c_string, yyextra->lex_buf); yylval->sized_string = s; return _REGEXP_; } \\\/ { LEX_CHECK_SPACE_OK("/", yyextra->lex_buf_len, LEX_BUF_SIZE); *yyextra->lex_buf_ptr++ = '/'; yyextra->lex_buf_len++ ; } \\. { LEX_CHECK_SPACE_OK("\\.", yyextra->lex_buf_len, LEX_BUF_SIZE); *yyextra->lex_buf_ptr++ = yytext[0]; *yyextra->lex_buf_ptr++ = yytext[1]; yyextra->lex_buf_len += 2; } [^/\n\\]+ { YYTEXT_TO_BUFFER; } \n { yyerror(yyscanner, "unterminated regular expression"); yyterminate(); } \" { yyextra->lex_buf_ptr = yyextra->lex_buf; yyextra->lex_buf_len = 0; BEGIN(str); } "/" { yyextra->lex_buf_ptr = yyextra->lex_buf; yyextra->lex_buf_len = 0; BEGIN(regexp); } \{({hexdigit}|[ \-|\?\[\]\(\)\n\t])+\} { int len = strlen(yytext); SIZED_STRING* s = (SIZED_STRING*) yr_malloc(len + sizeof(SIZED_STRING)); s->length = len; s->flags = 0; strcpy(s->c_string, yytext); yylval->sized_string = s; return _HEXSTRING_; } [ \t\r\n] /* skip whitespace */ . { if (yytext[0] >= 32 && yytext[0] < 127) { return yytext[0]; } else { yyerror(yyscanner, "non-ascii character"); yyterminate(); } } %% void yyfatal( yyscan_t yyscanner, const char *error_message) { YR_COMPILER* compiler = yyget_extra(yyscanner); yyerror(yyscanner, error_message); longjmp(compiler->error_recovery, 1); } void yyerror( yyscan_t yyscanner, const char *error_message) { YR_COMPILER* compiler = yyget_extra(yyscanner); char message[512] = {'\0'}; char* file_name = NULL; /* if error_message != NULL the error comes from yyparse internal code else the error comes from my code and the error code is set in compiler->last_result */ compiler->errors++; if (compiler->error_line != 0) compiler->last_error_line = compiler->error_line; else compiler->last_error_line = yyget_lineno(yyscanner); compiler->error_line = 0; if (compiler->file_name_stack_ptr > 0) { file_name = compiler->file_name_stack[compiler->file_name_stack_ptr - 1]; } else { file_name = NULL; } if (error_message != NULL) { yr_compiler_set_error_extra_info(compiler, error_message); compiler->last_error = ERROR_SYNTAX_ERROR; if (compiler->error_report_function != NULL) { compiler->error_report_function( YARA_ERROR_LEVEL_ERROR, file_name, compiler->last_error_line, error_message); } } else { compiler->last_error = compiler->last_result; if (compiler->error_report_function != NULL) { yr_compiler_get_error_message(compiler, message, sizeof(message)); compiler->error_report_function( YARA_ERROR_LEVEL_ERROR, file_name, compiler->last_error_line, message); } } compiler->last_result = ERROR_SUCCESS; } int yr_lex_parse_rules_string( const char* rules_string, YR_COMPILER* compiler) { yyscan_t yyscanner; YY_BUFFER_STATE state; if (setjmp(compiler->error_recovery) != 0) return compiler->errors; yylex_init(&yyscanner); yyset_debug(1, yyscanner); yyset_extra(compiler, yyscanner); state = yy_scan_string(rules_string, yyscanner); yyset_lineno(1, yyscanner); yyparse(yyscanner); yylex_destroy(yyscanner); return compiler->errors; } int yr_lex_parse_rules_file( FILE* rules_file, YR_COMPILER* compiler) { yyscan_t yyscanner; if (setjmp(compiler->error_recovery) != 0) return compiler->errors; yylex_init(&yyscanner); #if YYDEBUG printf("debug enabled"); #endif yyset_debug(1, yyscanner); yyset_in(rules_file, yyscanner); yyset_extra(compiler, yyscanner); yyparse(yyscanner); yylex_destroy(yyscanner); return compiler->errors; } yara-2.0.0/libyara/libyara.c000066400000000000000000000057121225703323600156670ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #include #include #include #include "mem.h" #include "re.h" #include "yara.h" #ifdef WIN32 #define snprintf _snprintf #endif #ifdef WIN32 #else #include #endif char lowercase[256]; char altercase[256]; #ifdef WIN32 DWORD tidx_key; DWORD recovery_state_key; #else pthread_key_t tidx_key; pthread_key_t recovery_state_key; #endif // // yr_initialize // // Should be called by main thread before using any other // function from libyara. // void yr_initialize(void) { int i; for (i = 0; i < 256; i++) { if (i >= 'a' && i <= 'z') altercase[i] = i - 32; else if (i >= 'A' && i <= 'Z') altercase[i] = i + 32; else altercase[i] = i; lowercase[i] = tolower(i); } yr_heap_alloc(); #ifdef WIN32 tidx_key = TlsAlloc(); recovery_state_key = TlsAlloc(); #else pthread_key_create(&tidx_key, NULL); pthread_key_create(&recovery_state_key, NULL); #endif yr_re_initialize(); } // // yr_finalize_thread // // Should be called by ALL threads using libyara before exiting. // void yr_finalize_thread(void) { yr_re_finalize_thread(); } // // yr_finalize // // Should be called by main thread before exiting. Main thread doesn't // need to explicitely call yr_finalize_thread because yr_finalize already // calls it. // void yr_finalize(void) { yr_re_finalize_thread(); #ifdef WIN32 TlsFree(tidx_key); TlsFree(recovery_state_key); #else pthread_key_delete(tidx_key); pthread_key_delete(recovery_state_key); #endif yr_re_finalize(); yr_heap_free(); } // // _yr_set_tidx // // Set the thread index (tidx) for the current thread. The tidx is the index // that will be used by the thread to access thread-specific data stored in // YR_RULES structure. // // Args: // int tidx - The zero-based tidx that will be associated to the current // thread. // void yr_set_tidx(int tidx) { #ifdef WIN32 TlsSetValue(tidx_key, (LPVOID) (tidx + 1)); #else pthread_setspecific(tidx_key, (void*) (size_t) (tidx + 1)); #endif } // // _yr_get_tidx // // Get the thread index (tidx) for the current thread. // // Returns: // The tidx for the current thread or -1 if the current thread doesn't // have any tidx associated. // int yr_get_tidx(void) { #ifdef WIN32 return (int) TlsGetValue(tidx_key) - 1; #else return (int) (size_t) pthread_getspecific(tidx_key) - 1; #endif } yara-2.0.0/libyara/mem.c000066400000000000000000000030451225703323600150170ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #ifdef WIN32 #include static HANDLE hHeap; void yr_heap_alloc() { hHeap = HeapCreate(0, 0x8000, 0); } void yr_heap_free() { HeapDestroy(hHeap); } void* yr_malloc(size_t size) { return (void*) HeapAlloc(hHeap, HEAP_ZERO_MEMORY, size); } void* yr_realloc(void* ptr, size_t size) { return (void*) HeapReAlloc(hHeap, HEAP_ZERO_MEMORY, ptr, size); } void yr_free(void* ptr) { HeapFree(hHeap, 0, ptr); } char* yr_strdup(const char *s) { size_t len = strlen(s); char *r = yr_malloc(len + 1); strcpy(r, s); return r; } #else #include #include #include #ifdef DMALLOC #include #endif void yr_heap_alloc() { return; } void yr_heap_free() { return; } void* yr_malloc(size_t size) { return malloc(size); } void* yr_realloc(void* ptr, size_t size) { return realloc(ptr, size); } void yr_free(void *ptr) { free(ptr); } char* yr_strdup(const char *str) { return strdup(str); } #endifyara-2.0.0/libyara/mem.h000066400000000000000000000017711225703323600150300ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #ifndef _MEM_H #define _MEM_H #include #include "config.h" #ifdef DMALLOC #define yr_malloc malloc #define yr_realloc realloc #define yr_free free #define yr_strdup strdup #include #else void* yr_malloc( size_t size); void* yr_realloc( void* ptr, size_t size); void yr_free( void *ptr); char* yr_strdup( const char *str); #endif void yr_heap_alloc(); void yr_heap_free(); #endif yara-2.0.0/libyara/parser.c000066400000000000000000000461761225703323600155510ustar00rootroot00000000000000/* Copyright (c) 2013. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #include #include #include "ahocorasick.h" #include "atoms.h" #include "exec.h" #include "hash.h" #include "mem.h" #include "parser.h" #include "re.h" #include "utils.h" #define todigit(x) ((x) >='A'&& (x) <='F')? \ ((uint8_t) (x - 'A' + 10)) : \ ((uint8_t) (x - '0')) int yr_parser_emit( yyscan_t yyscanner, int8_t instruction, int8_t** instruction_address) { return yr_arena_write_data( yyget_extra(yyscanner)->code_arena, &instruction, sizeof(int8_t), (void**) instruction_address); } int yr_parser_emit_with_arg( yyscan_t yyscanner, int8_t instruction, int64_t argument, int8_t** instruction_address) { int result = yr_arena_write_data( yyget_extra(yyscanner)->code_arena, &instruction, sizeof(int8_t), (void**) instruction_address); if (result == ERROR_SUCCESS) result = yr_arena_write_data( yyget_extra(yyscanner)->code_arena, &argument, sizeof(int64_t), NULL); return result; } int yr_parser_emit_with_arg_reloc( yyscan_t yyscanner, int8_t instruction, int64_t argument, int8_t** instruction_address) { void* ptr; int result = yr_arena_write_data( yyget_extra(yyscanner)->code_arena, &instruction, sizeof(int8_t), (void**) instruction_address); if (result == ERROR_SUCCESS) result = yr_arena_write_data( yyget_extra(yyscanner)->code_arena, &argument, sizeof(int64_t), &ptr); if (result == ERROR_SUCCESS) result = yr_arena_make_relocatable( yyget_extra(yyscanner)->code_arena, ptr, 0, EOL); return result; } void yr_parser_emit_pushes_for_strings( yyscan_t yyscanner, const char* identifier) { YR_COMPILER* compiler = yyget_extra(yyscanner); YR_STRING* string = compiler->current_rule_strings; const char* string_identifier; const char* target_identifier; while(!STRING_IS_NULL(string)) { string_identifier = string->identifier; target_identifier = identifier; while (*target_identifier != '\0' && *string_identifier != '\0' && *target_identifier == *string_identifier) { target_identifier++; string_identifier++; } if ((*target_identifier == '\0' && *string_identifier == '\0') || *target_identifier == '*') { yr_parser_emit_with_arg_reloc( yyscanner, PUSH, PTR_TO_UINT64(string), NULL); string->g_flags |= STRING_GFLAGS_REFERENCED; } string = yr_arena_next_address( compiler->strings_arena, string, sizeof(YR_STRING)); } } YR_STRING* yr_parser_lookup_string( yyscan_t yyscanner, const char* identifier) { YR_STRING* string; YR_COMPILER* compiler = yyget_extra(yyscanner); string = compiler->current_rule_strings; while(!STRING_IS_NULL(string)) { // If some string $a gets fragmented into multiple chained // strings, all those fragments have the same $a identifier // but we are interested in the heading fragment, which is // that with chained_to == NULL if (strcmp(string->identifier, identifier) == 0 && string->chained_to == NULL) { return string; } string = yr_arena_next_address( compiler->strings_arena, string, sizeof(YR_STRING)); } yr_compiler_set_error_extra_info(compiler, identifier); compiler->last_result = ERROR_UNDEFINED_STRING; return NULL; } YR_EXTERNAL_VARIABLE* yr_parser_lookup_external_variable( yyscan_t yyscanner, const char* identifier) { YR_EXTERNAL_VARIABLE* external; YR_COMPILER* compiler = yyget_extra(yyscanner); int i; external = (YR_EXTERNAL_VARIABLE*) yr_arena_base_address( compiler->externals_arena); for (i = 0; i < compiler->externals_count; i++) { if (strcmp(external->identifier, identifier) == 0) return external; external = yr_arena_next_address( compiler->externals_arena, external, sizeof(YR_EXTERNAL_VARIABLE)); } yr_compiler_set_error_extra_info(compiler, identifier); compiler->last_result = ERROR_UNDEFINED_IDENTIFIER; return NULL; } int _yr_parser_write_string( const char* identifier, int flags, YR_COMPILER* compiler, SIZED_STRING* str, RE* re, YR_STRING** string, int* min_atom_length) { SIZED_STRING* literal_string; YR_AC_MATCH* new_match; YR_ATOM_LIST_ITEM* atom; YR_ATOM_LIST_ITEM* atom_list = NULL; int result; int max_string_len; int free_literal = FALSE; *string = NULL; result = yr_arena_allocate_struct( compiler->strings_arena, sizeof(YR_STRING), (void**) string, offsetof(YR_STRING, identifier), offsetof(YR_STRING, string), offsetof(YR_STRING, chained_to), EOL); if (result != ERROR_SUCCESS) return result; result = yr_arena_write_string( compiler->sz_arena, identifier, &(*string)->identifier); if (result != ERROR_SUCCESS) return result; if (flags & STRING_GFLAGS_HEXADECIMAL || flags & STRING_GFLAGS_REGEXP) { literal_string = yr_re_extract_literal(re); if (literal_string != NULL) { flags |= STRING_GFLAGS_LITERAL; free_literal = TRUE; } } else { literal_string = str; flags |= STRING_GFLAGS_LITERAL; } (*string)->g_flags = flags; (*string)->chained_to = NULL; memset((*string)->matches, 0, sizeof((*string)->matches)); memset((*string)->unconfirmed_matches, 0, sizeof((*string)->unconfirmed_matches)); if (flags & STRING_GFLAGS_LITERAL) { (*string)->length = literal_string->length; result = yr_arena_write_data( compiler->sz_arena, literal_string->c_string, literal_string->length, (void*) &(*string)->string); if (result == ERROR_SUCCESS) { result = yr_atoms_extract_from_string( (uint8_t*) literal_string->c_string, literal_string->length, flags, &atom_list); } } else { result = yr_re_emit_code(re, compiler->re_code_arena); if (result == ERROR_SUCCESS) result = yr_atoms_extract_from_re(re, flags, &atom_list); } if (result == ERROR_SUCCESS) { // Add the string to Aho-Corasick automaton. if (atom_list != NULL) { result = yr_ac_add_string( compiler->automaton_arena, compiler->automaton, *string, atom_list); } else { result = yr_arena_allocate_struct( compiler->automaton_arena, sizeof(YR_AC_MATCH), (void**) &new_match, offsetof(YR_AC_MATCH, string), offsetof(YR_AC_MATCH, forward_code), offsetof(YR_AC_MATCH, backward_code), offsetof(YR_AC_MATCH, next), EOL); if (result == ERROR_SUCCESS) { new_match->backtrack = 0; new_match->string = *string; new_match->forward_code = re->root_node->forward_code; new_match->backward_code = NULL; new_match->next = compiler->automaton->root->matches; compiler->automaton->root->matches = new_match; } } } atom = atom_list; if (atom != NULL) *min_atom_length = MAX_ATOM_LENGTH; else *min_atom_length = 0; while (atom != NULL) { if (atom->atom_length < *min_atom_length) *min_atom_length = atom->atom_length; atom = atom->next; } if (flags & STRING_GFLAGS_LITERAL) { if (flags & STRING_GFLAGS_WIDE) max_string_len = (*string)->length * 2; else max_string_len = (*string)->length; if (max_string_len == *min_atom_length) (*string)->g_flags |= STRING_GFLAGS_FITS_IN_ATOM; } if (free_literal) yr_free(literal_string); if (atom_list != NULL) yr_atoms_list_destroy(atom_list); return result; } #include #include YR_STRING* yr_parser_reduce_string_declaration( yyscan_t yyscanner, int32_t flags, const char* identifier, SIZED_STRING* str) { int min_atom_length; int min_atom_length_aux; int32_t min_gap; int32_t max_gap; char* file_name; char message[512]; YR_COMPILER* compiler = yyget_extra(yyscanner); YR_STRING* string = NULL; YR_STRING* aux_string; YR_STRING* prev_string; RE* re = NULL; RE* remainder_re; if (strcmp(identifier,"$") == 0) flags |= STRING_GFLAGS_ANONYMOUS; if (!(flags & STRING_GFLAGS_WIDE)) flags |= STRING_GFLAGS_ASCII; if (str->flags & SIZED_STRING_FLAGS_NO_CASE) flags |= STRING_GFLAGS_NO_CASE; // The STRING_GFLAGS_SINGLE_MATCH flag indicates that finding // a single match for the string is enough. This is true in // most cases, except when the string count (#) and string offset (@) // operators are used. All strings are marked STRING_FLAGS_SINGLE_MATCH // initially, and unmarked later if required. flags |= STRING_GFLAGS_SINGLE_MATCH; if (flags & STRING_GFLAGS_HEXADECIMAL || flags & STRING_GFLAGS_REGEXP) { if (flags & STRING_GFLAGS_HEXADECIMAL) compiler->last_result = yr_re_compile_hex( str->c_string, &re); else compiler->last_result = yr_re_compile( str->c_string, &re); if (compiler->last_result != ERROR_SUCCESS) { snprintf( message, sizeof(message), "invalid %s \"%s\": %s", (flags & STRING_GFLAGS_HEXADECIMAL) ? "hex string" : "regular expression", identifier, re->error_message); yr_compiler_set_error_extra_info( compiler, message); goto _exit; } if (re->flags & RE_FLAGS_FAST_HEX_REGEXP) flags |= STRING_GFLAGS_FAST_HEX_REGEXP; compiler->last_result = yr_re_split_at_chaining_point( re, &re, &remainder_re, &min_gap, &max_gap); if (compiler->last_result != ERROR_SUCCESS) goto _exit; compiler->last_result = _yr_parser_write_string( identifier, flags, compiler, NULL, re, &string, &min_atom_length); if (compiler->last_result != ERROR_SUCCESS) goto _exit; if (remainder_re != NULL) { string->g_flags |= STRING_GFLAGS_CHAIN_TAIL | STRING_GFLAGS_CHAIN_PART; string->chain_gap_min = min_gap; string->chain_gap_max = max_gap; } // Use "aux_string" from now on, we want to keep the value of "string" // because it will returned. aux_string = string; while (remainder_re != NULL) { // Destroy regexp pointed by 're' before yr_re_split_at_jmp // overwrites 're' with another value. yr_re_destroy(re); compiler->last_result = yr_re_split_at_chaining_point( remainder_re, &re, &remainder_re, &min_gap, &max_gap); if (compiler->last_result != ERROR_SUCCESS) goto _exit; prev_string = aux_string; compiler->last_result = _yr_parser_write_string( identifier, flags, compiler, NULL, re, &aux_string, &min_atom_length_aux); if (compiler->last_result != ERROR_SUCCESS) goto _exit; if (min_atom_length_aux < min_atom_length) min_atom_length = min_atom_length_aux; aux_string->g_flags |= STRING_GFLAGS_CHAIN_PART; aux_string->chain_gap_min = min_gap; aux_string->chain_gap_max = max_gap; prev_string->chained_to = aux_string; } } else { compiler->last_result = _yr_parser_write_string( identifier, flags, compiler, str, NULL, &string, &min_atom_length); if (compiler->last_result != ERROR_SUCCESS) goto _exit; } if (compiler->file_name_stack_ptr > 0) file_name = compiler->file_name_stack[compiler->file_name_stack_ptr - 1]; else file_name = NULL; if (min_atom_length < 2 && compiler->error_report_function != NULL) { snprintf( message, sizeof(message), "%s is slowing down scanning%s", string->identifier, min_atom_length == 0 ? " (critical!)" : ""); compiler->error_report_function( YARA_ERROR_LEVEL_WARNING, file_name, yyget_lineno(yyscanner), message); } _exit: if (re != NULL) yr_re_destroy(re); if (compiler->last_result != ERROR_SUCCESS) return NULL; return string; } int yr_parser_reduce_rule_declaration( yyscan_t yyscanner, int32_t flags, const char* identifier, char* tags, YR_STRING* strings, YR_META* metas) { YR_COMPILER* compiler = yyget_extra(yyscanner); YR_RULE* rule; YR_STRING* string; if (yr_hash_table_lookup( compiler->rules_table, identifier, compiler->current_namespace->name) != NULL) { // A rule with the same identifier already exists, return the // appropriate error. yr_compiler_set_error_extra_info(compiler, identifier); compiler->last_result = ERROR_DUPLICATE_RULE_IDENTIFIER; return compiler->last_result; } // Check for unreferenced (unused) strings. string = compiler->current_rule_strings; while(!STRING_IS_NULL(string)) { // Only the heading fragment in a chain of strings (the one with // chained_to == NULL) must be referenced. All other fragments // are never marked as referenced. if (!STRING_IS_REFERENCED(string) && string->chained_to == NULL) { yr_compiler_set_error_extra_info(compiler, string->identifier); compiler->last_result = ERROR_UNREFERENCED_STRING; break; } string = yr_arena_next_address( compiler->strings_arena, string, sizeof(YR_STRING)); } if (compiler->last_result != ERROR_SUCCESS) return compiler->last_result; compiler->last_result = yr_arena_allocate_struct( compiler->rules_arena, sizeof(YR_RULE), (void**) &rule, offsetof(YR_RULE, identifier), offsetof(YR_RULE, tags), offsetof(YR_RULE, strings), offsetof(YR_RULE, metas), offsetof(YR_RULE, ns), EOL); if (compiler->last_result != ERROR_SUCCESS) return compiler->last_result; compiler->last_result = yr_arena_write_string( compiler->sz_arena, identifier, &rule->identifier); if (compiler->last_result != ERROR_SUCCESS) return compiler->last_result; compiler->last_result = yr_parser_emit_with_arg_reloc( yyscanner, RULE_POP, PTR_TO_UINT64(rule), NULL); if (compiler->last_result != ERROR_SUCCESS) return compiler->last_result; rule->g_flags = flags | compiler->current_rule_flags; rule->tags = tags; rule->strings = strings; rule->metas = metas; rule->ns = compiler->current_namespace; compiler->current_rule_flags = 0; compiler->current_rule_strings = NULL; yr_hash_table_add( compiler->rules_table, identifier, compiler->current_namespace->name, (void*) rule); return compiler->last_result; } int yr_parser_reduce_string_identifier( yyscan_t yyscanner, const char* identifier, int8_t instruction) { YR_STRING* string; YR_COMPILER* compiler = yyget_extra(yyscanner); if (strcmp(identifier, "$") == 0) { if (compiler->loop_depth > 0) { yr_parser_emit_with_arg( yyscanner, PUSH_M, LOOP_LOCAL_VARS * (compiler->loop_depth - 1), NULL); yr_parser_emit(yyscanner, instruction, NULL); if (instruction != SFOUND) { string = compiler->current_rule_strings; while(!STRING_IS_NULL(string)) { string->g_flags &= ~STRING_GFLAGS_SINGLE_MATCH; string = yr_arena_next_address( compiler->strings_arena, string, sizeof(YR_STRING)); } } } else { compiler->last_result = ERROR_MISPLACED_ANONYMOUS_STRING; } } else { string = yr_parser_lookup_string(yyscanner, identifier); if (string != NULL) { yr_parser_emit_with_arg_reloc( yyscanner, PUSH, PTR_TO_UINT64(string), NULL); if (instruction != SFOUND) string->g_flags &= ~STRING_GFLAGS_SINGLE_MATCH; yr_parser_emit(yyscanner, instruction, NULL); string->g_flags |= STRING_GFLAGS_REFERENCED; } } return compiler->last_result; } int yr_parser_reduce_external( yyscan_t yyscanner, const char* identifier, int8_t instruction) { YR_COMPILER* compiler = yyget_extra(yyscanner); YR_EXTERNAL_VARIABLE* external; external = yr_parser_lookup_external_variable(yyscanner, identifier); if (external != NULL) { if (instruction == EXT_BOOL) { compiler->last_result = yr_parser_emit_with_arg_reloc( yyscanner, EXT_BOOL, PTR_TO_UINT64(external), NULL); } else if (instruction == EXT_INT && external->type == EXTERNAL_VARIABLE_TYPE_INTEGER) { compiler->last_result = yr_parser_emit_with_arg_reloc( yyscanner, EXT_INT, PTR_TO_UINT64(external), NULL); } else if (instruction == EXT_STR && external->type == EXTERNAL_VARIABLE_TYPE_FIXED_STRING) { compiler->last_result = yr_parser_emit_with_arg_reloc( yyscanner, EXT_STR, PTR_TO_UINT64(external), NULL); } else { yr_compiler_set_error_extra_info(compiler, external->identifier); compiler->last_result = ERROR_INCORRECT_VARIABLE_TYPE; } } return compiler->last_result; } YR_META* yr_parser_reduce_meta_declaration( yyscan_t yyscanner, int32_t type, const char* identifier, const char* string, int32_t integer) { YR_COMPILER* compiler = yyget_extra(yyscanner); YR_META* meta; compiler->last_result = yr_arena_allocate_struct( compiler->metas_arena, sizeof(YR_META), (void**) &meta, offsetof(YR_META, identifier), offsetof(YR_META, string), EOL); if (compiler->last_result != ERROR_SUCCESS) return NULL; compiler->last_result = yr_arena_write_string( compiler->sz_arena, identifier, &meta->identifier); if (compiler->last_result != ERROR_SUCCESS) return NULL; if (string != NULL) compiler->last_result = yr_arena_write_string( compiler->sz_arena, string, &meta->string); else meta->string = NULL; if (compiler->last_result != ERROR_SUCCESS) return NULL; meta->integer = integer; meta->type = type; return meta; } int yr_parser_lookup_loop_variable( yyscan_t yyscanner, const char* identifier) { YR_COMPILER* compiler = yyget_extra(yyscanner); int i; for (i = 0; i < compiler->loop_depth; i++) { if (strcmp(identifier, compiler->loop_identifier[i]) == 0) return i; } return -1; } yara-2.0.0/libyara/parser.h000066400000000000000000000043411225703323600155420ustar00rootroot00000000000000/* Copyright (c) 2013. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #ifndef _PARSER_H #define _PARSER_H #include "arena.h" #include "compiler.h" #include "lexer.h" #include "sizedstr.h" int yr_parser_emit( yyscan_t yyscanner, int8_t instruction, int8_t** instruction_address); int yr_parser_emit_with_arg( yyscan_t yyscanner, int8_t instruction, int64_t argument, int8_t** instruction_address); int yr_parser_emit_with_arg_reloc( yyscan_t yyscanner, int8_t instruction, int64_t argument, int8_t** instruction_address); YR_STRING* yr_parser_lookup_string( yyscan_t yyscanner, const char* identifier); YR_EXTERNAL_VARIABLE* yr_parser_lookup_external_variable( yyscan_t yyscanner, const char* identifier); void yr_parser_push_string_pointers( yyscan_t yyscanner, const char* identifier); int yr_parser_reduce_rule_declaration( yyscan_t yyscanner, int flags, const char* identifier, char* tags, YR_STRING* strings, YR_META* metas); YR_STRING* yr_parser_reduce_string_declaration( yyscan_t yyscanner, int flags, const char* identifier, SIZED_STRING* str); YR_META* yr_parser_reduce_meta_declaration( yyscan_t yyscanner, int32_t type, const char* identifier, const char* string, int32_t integer); int yr_parser_reduce_string_identifier( yyscan_t yyscanner, const char* identifier, int8_t instruction); void yr_parser_emit_pushes_for_strings( yyscan_t yyscanner, const char* identifier); int yr_parser_reduce_external( yyscan_t yyscanner, const char* identifier, int8_t intruction); int yr_parser_lookup_loop_variable( yyscan_t yyscanner, const char* identifier); #endifyara-2.0.0/libyara/pe.h000066400000000000000000000177701225703323600146640ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #include #include typedef uint8_t BYTE; typedef uint16_t WORD; typedef uint32_t DWORD; typedef int32_t LONG; typedef uint32_t ULONG; #define FIELD_OFFSET(type, field) ((size_t)&(((type *)0)->field)) #ifndef _MAC #pragma pack(push,4) // 4 byte packing is the default #define IMAGE_DOS_SIGNATURE 0x5A4D // MZ #define IMAGE_OS2_SIGNATURE 0x454E // NE #define IMAGE_OS2_SIGNATURE_LE 0x454C // LE #define IMAGE_VXD_SIGNATURE 0x454C // LE #define IMAGE_NT_SIGNATURE 0x00004550 // PE00 #pragma pack(push,2) // 16 bit headers are 2 byte packed #else #pragma pack(push,1) #define IMAGE_DOS_SIGNATURE 0x4D5A // MZ #define IMAGE_OS2_SIGNATURE 0x4E45 // NE #define IMAGE_OS2_SIGNATURE_LE 0x4C45 // LE #define IMAGE_NT_SIGNATURE 0x50450000 // PE00 #endif typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header WORD e_magic; // Magic number WORD e_cblp; // Bytes on last page of file WORD e_cp; // Pages in file WORD e_crlc; // Relocations WORD e_cparhdr; // Size of header in paragraphs WORD e_minalloc; // Minimum extra paragraphs needed WORD e_maxalloc; // Maximum extra paragraphs needed WORD e_ss; // Initial (relative) SS value WORD e_sp; // Initial SP value WORD e_csum; // Checksum WORD e_ip; // Initial IP value WORD e_cs; // Initial (relative) CS value WORD e_lfarlc; // File address of relocation table WORD e_ovno; // Overlay number WORD e_res[4]; // Reserved words WORD e_oemid; // OEM identifier (for e_oeminfo) WORD e_oeminfo; // OEM information; e_oemid specific WORD e_res2[10]; // Reserved words LONG e_lfanew; // File address of new exe header } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER; #ifndef _MAC #pragma pack(pop) // Back to 4 byte packing #endif // // File header format. // typedef struct _IMAGE_FILE_HEADER { WORD Machine; WORD NumberOfSections; DWORD TimeDateStamp; DWORD PointerToSymbolTable; DWORD NumberOfSymbols; WORD SizeOfOptionalHeader; WORD Characteristics; } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER; #define IMAGE_SIZEOF_FILE_HEADER 20 #define IMAGE_FILE_RELOCS_STRIPPED 0x0001 // Relocation info stripped from file. #define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002 // File is executable (i.e. no unresolved externel references). #define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004 // Line nunbers stripped from file. #define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008 // Local symbols stripped from file. #define IMAGE_FILE_AGGRESIVE_WS_TRIM 0x0010 // Agressively trim working set #define IMAGE_FILE_LARGE_ADDRESS_AWARE 0x0020 // App can handle >2gb addresses #define IMAGE_FILE_BYTES_REVERSED_LO 0x0080 // Bytes of machine word are reversed. #define IMAGE_FILE_32BIT_MACHINE 0x0100 // 32 bit word machine. #define IMAGE_FILE_DEBUG_STRIPPED 0x0200 // Debugging info stripped from file in .DBG file #define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 0x0400 // If Image is on removable media, copy and run from the swap file. #define IMAGE_FILE_NET_RUN_FROM_SWAP 0x0800 // If Image is on Net, copy and run from the swap file. #define IMAGE_FILE_SYSTEM 0x1000 // System File. #define IMAGE_FILE_DLL 0x2000 // File is a DLL. #define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000 // File should only be run on a UP machine #define IMAGE_FILE_BYTES_REVERSED_HI 0x8000 // Bytes of machine word are reversed. #define IMAGE_FILE_MACHINE_I386 0x014c // Intel 386. // // Directory format. // typedef struct _IMAGE_DATA_DIRECTORY { DWORD VirtualAddress; DWORD Size; } IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY; #define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16 // // Optional header format. // typedef struct _IMAGE_OPTIONAL_HEADER { // // Standard fields. // WORD Magic; BYTE MajorLinkerVersion; BYTE MinorLinkerVersion; DWORD SizeOfCode; DWORD SizeOfInitializedData; DWORD SizeOfUninitializedData; DWORD AddressOfEntryPoint; DWORD BaseOfCode; DWORD BaseOfData; // // NT additional fields. // DWORD ImageBase; DWORD SectionAlignment; DWORD FileAlignment; WORD MajorOperatingSystemVersion; WORD MinorOperatingSystemVersion; WORD MajorImageVersion; WORD MinorImageVersion; WORD MajorSubsystemVersion; WORD MinorSubsystemVersion; DWORD Win32VersionValue; DWORD SizeOfImage; DWORD SizeOfHeaders; DWORD CheckSum; WORD Subsystem; WORD DllCharacteristics; DWORD SizeOfStackReserve; DWORD SizeOfStackCommit; DWORD SizeOfHeapReserve; DWORD SizeOfHeapCommit; DWORD LoaderFlags; DWORD NumberOfRvaAndSizes; IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; } IMAGE_OPTIONAL_HEADER, *PIMAGE_OPTIONAL_HEADER; #define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b #define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b typedef struct _IMAGE_NT_HEADERS { DWORD Signature; IMAGE_FILE_HEADER FileHeader; IMAGE_OPTIONAL_HEADER OptionalHeader; } IMAGE_NT_HEADERS, *PIMAGE_NT_HEADERS; // IMAGE_FIRST_SECTION doesn't need 32/64 versions since the file header is the same either way. #define IMAGE_FIRST_SECTION( ntheader ) ((PIMAGE_SECTION_HEADER) \ ((BYTE*)ntheader + \ FIELD_OFFSET( IMAGE_NT_HEADERS, OptionalHeader ) + \ ((PIMAGE_NT_HEADERS)(ntheader))->FileHeader.SizeOfOptionalHeader \ )) // Subsystem Values #define IMAGE_SUBSYSTEM_UNKNOWN 0 // Unknown subsystem. #define IMAGE_SUBSYSTEM_NATIVE 1 // Image doesn't require a subsystem. #define IMAGE_SUBSYSTEM_WINDOWS_GUI 2 // Image runs in the Windows GUI subsystem. #define IMAGE_SUBSYSTEM_WINDOWS_CUI 3 // Image runs in the Windows character subsystem. #define IMAGE_SUBSYSTEM_OS2_CUI 5 // image runs in the OS/2 character subsystem. #define IMAGE_SUBSYSTEM_POSIX_CUI 7 // image runs in the Posix character subsystem. #define IMAGE_SUBSYSTEM_NATIVE_WINDOWS 8 // image is a native Win9x driver. // // Section header format. // #define IMAGE_SIZEOF_SHORT_NAME 8 typedef struct _IMAGE_SECTION_HEADER { BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; union { DWORD PhysicalAddress; DWORD VirtualSize; } Misc; DWORD VirtualAddress; DWORD SizeOfRawData; DWORD PointerToRawData; DWORD PointerToRelocations; DWORD PointerToLinenumbers; WORD NumberOfRelocations; WORD NumberOfLinenumbers; DWORD Characteristics; } IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER; #define IMAGE_SIZEOF_SECTION_HEADER 40 #pragma pack(pop) yara-2.0.0/libyara/proc.c000066400000000000000000000156541225703323600152150ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com] & Stefan Buehlmann [stefan.buehlmann@joebox.org]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #ifdef WIN32 #include #include "errors.h" #include "mem.h" #include "proc.h" int yr_process_get_memory( int pid, YR_MEMORY_BLOCK** first_block) { PVOID address; SIZE_T read; unsigned char* data; int result = ERROR_SUCCESS; SYSTEM_INFO si; MEMORY_BASIC_INFORMATION mbi; YR_MEMORY_BLOCK* new_block; YR_MEMORY_BLOCK* current_block = NULL; TOKEN_PRIVILEGES tokenPriv; LUID luidDebug; HANDLE hProcess = NULL; HANDLE hToken = NULL; if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken) && LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &luidDebug)) { tokenPriv.PrivilegeCount = 1; tokenPriv.Privileges[0].Luid = luidDebug; tokenPriv.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges( hToken, FALSE, &tokenPriv, sizeof(tokenPriv), NULL, NULL); } hProcess = OpenProcess( PROCESS_VM_READ | PROCESS_QUERY_INFORMATION, FALSE, pid); *first_block = NULL; if (hProcess == NULL) { if (hToken != NULL) CloseHandle(hToken); return ERROR_COULD_NOT_ATTACH_TO_PROCESS; } GetSystemInfo(&si); address = si.lpMinimumApplicationAddress; while (VirtualQueryEx(hProcess, address, &mbi, sizeof(mbi)) != 0) { if (mbi.State == MEM_COMMIT && ((mbi.Protect & PAGE_NOACCESS) == 0)) { data = (unsigned char*) yr_malloc(mbi.RegionSize); if (data == NULL) { result = ERROR_INSUFICIENT_MEMORY; break; } if (ReadProcessMemory( hProcess, mbi.BaseAddress, data, mbi.RegionSize, &read)) { new_block = (YR_MEMORY_BLOCK*) yr_malloc(sizeof(YR_MEMORY_BLOCK)); if (new_block == NULL) { yr_free(data); result = ERROR_INSUFICIENT_MEMORY; break; } if (*first_block == NULL) *first_block = new_block; new_block->base = (size_t) mbi.BaseAddress; new_block->size = mbi.RegionSize; new_block->data = data; new_block->next = NULL; if (current_block != NULL) current_block->next = new_block; current_block = new_block; } else { yr_free(data); } } address = (PVOID)((ULONG_PTR) mbi.BaseAddress + mbi.RegionSize); } if (hToken != NULL) CloseHandle(hToken); if (hProcess != NULL) CloseHandle(hProcess); return result; } #else #define _XOPEN_SOURCE 500 #include #include #include #include #include #include "mem.h" #include "proc.h" #if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__MACH__) #define PTRACE_ATTACH PT_ATTACH #define PTRACE_DETACH PT_DETACH #endif #if defined(__MACH__) #include #include #include #include int yr_process_get_memory( pid_t pid, YR_MEMORY_BLOCK** first_block) { task_t task; kern_return_t kr; vm_size_t size = 0; vm_address_t address = 0; vm_region_basic_info_data_64_t info; mach_msg_type_number_t info_count; mach_port_t object; unsigned char* data; YR_MEMORY_BLOCK* new_block; YR_MEMORY_BLOCK* current_block = NULL; *first_block = NULL; if ((kr = task_for_pid(mach_task_self(), pid, &task)) != KERN_SUCCESS) return ERROR_COULD_NOT_ATTACH_TO_PROCESS; do { info_count = VM_REGION_BASIC_INFO_COUNT_64; kr = vm_region_64( task, &address, &size, VM_REGION_BASIC_INFO, (vm_region_info_t) &info, &info_count, &object); if (kr == KERN_SUCCESS) { data = (unsigned char*) yr_malloc(size); if (data == NULL) return ERROR_INSUFICIENT_MEMORY; if (vm_read_overwrite( task, address, size, (vm_address_t) data, &size) == KERN_SUCCESS) { new_block = (YR_MEMORY_BLOCK*) yr_malloc(sizeof(YR_MEMORY_BLOCK)); if (new_block == NULL) { yr_free(data); return ERROR_INSUFICIENT_MEMORY; } if (*first_block == NULL) *first_block = new_block; new_block->base = address; new_block->size = size; new_block->data = data; new_block->next = NULL; if (current_block != NULL) current_block->next = new_block; current_block = new_block; } else { yr_free(data); } address += size; } } while (kr != KERN_INVALID_ADDRESS); if (task != MACH_PORT_NULL) mach_port_deallocate(mach_task_self(), task); return ERROR_SUCCESS; } #else #include int yr_process_get_memory( pid_t pid, YR_MEMORY_BLOCK** first_block) { char buffer[256]; unsigned char* data; size_t begin, end, length; YR_MEMORY_BLOCK* new_block; YR_MEMORY_BLOCK* current_block = NULL; *first_block = NULL; sprintf(buffer, "/proc/%u/maps", pid); FILE* maps = fopen(buffer, "r"); if (maps == NULL) return ERROR_COULD_NOT_ATTACH_TO_PROCESS; sprintf(buffer, "/proc/%u/mem", pid); int mem = open(buffer, O_RDONLY); if (mem == -1) { fclose(maps); return ERROR_COULD_NOT_ATTACH_TO_PROCESS; } if (ptrace(PTRACE_ATTACH, pid, NULL, 0) == -1) return ERROR_COULD_NOT_ATTACH_TO_PROCESS; wait(NULL); while (fgets(buffer, sizeof(buffer), maps) != NULL) { sscanf(buffer, "%zx-%zx", &begin, &end); length = end - begin; data = yr_malloc(length); if (data == NULL) return ERROR_INSUFICIENT_MEMORY; if (pread(mem, data, length, begin) != -1) { new_block = (YR_MEMORY_BLOCK*) yr_malloc(sizeof(YR_MEMORY_BLOCK)); if (new_block == NULL) { yr_free(data); return ERROR_INSUFICIENT_MEMORY; } if (*first_block == NULL) *first_block = new_block; new_block->base = begin; new_block->size = length; new_block->data = data; new_block->next = NULL; if (current_block != NULL) current_block->next = new_block; current_block = new_block; } else { yr_free(data); } } ptrace(PTRACE_DETACH, pid, NULL, 0); close(mem); fclose(maps); return ERROR_SUCCESS; } #endif #endif yara-2.0.0/libyara/proc.h000066400000000000000000000014271225703323600152130ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com] & Stefan Buehlmann [stefan.buehlmann@joebox.org]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #ifndef _PROC_H #define _PROC_H #include "yara.h" int yr_process_get_memory( int pid, YR_MEMORY_BLOCK** first_block); #endif yara-2.0.0/libyara/re.c000066400000000000000000000715201225703323600146520ustar00rootroot00000000000000 /* Copyright (c) 2013. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ /* This modules implements a regular expressions engine based on Thompson's algorithm as described by Russ Cox in http://swtch.com/~rsc/regexp/regexp2.html. What the article names a "thread" has been named a "fiber" in this code, in order to avoid confusion with operating system threads. */ #include #include #include #include #ifdef WIN32 #include #else #include #endif #include "yara.h" #include "arena.h" #include "mem.h" #include "re.h" #define MAX_RE_STACK 1024 #define RE_SCAN_LIMIT 65535 #define EMIT_FLAGS_BACKWARDS 1 #define EMIT_FLAGS_DONT_ANNOTATE_RE 2 #ifndef min #define min(x, y) ((x < y) ? (x) : (y)) #endif typedef struct _RE_FIBER { uint8_t* ip; int32_t sp; uint16_t stack[MAX_RE_STACK]; struct _RE_FIBER* prev; struct _RE_FIBER* next; } RE_FIBER; typedef struct _RE_FIBER_LIST { RE_FIBER* head; RE_FIBER* tail; } RE_FIBER_LIST; typedef struct _RE_THREAD_STORAGE { RE_FIBER_LIST fiber_pool; } RE_THREAD_STORAGE; #ifdef WIN32 DWORD thread_storage_key; #else pthread_key_t thread_storage_key; #endif extern int yr_parse_re_string( const char* re_string, RE** re); extern int yr_parse_hex_string( const char* hex_string, RE** re); // // yr_re_initialize // // Should be called by main thread before any other // function from this module. // int yr_re_initialize() { #ifdef WIN32 thread_storage_key = TlsAlloc(); #else pthread_key_create(&thread_storage_key, NULL); #endif return ERROR_SUCCESS; } // // yr_re_finalize // // Should be called by main thread after every other thread // stopped using functions from this module. // int yr_re_finalize() { #ifdef WIN32 TlsFree(thread_storage_key); #else pthread_key_delete(thread_storage_key); #endif return ERROR_SUCCESS; } // // yr_re_finalize_thread // // Should be called by every thread using this module // before exiting. // int yr_re_finalize_thread() { RE_FIBER* fiber; RE_FIBER* next_fiber; RE_THREAD_STORAGE* storage; #ifdef WIN32 storage = TlsGetValue(thread_storage_key); #else storage = pthread_getspecific(thread_storage_key); #endif if (storage != NULL) { fiber = storage->fiber_pool.head; while (fiber != NULL) { next_fiber = fiber->next; yr_free(fiber); fiber = next_fiber; } yr_free(storage); } return ERROR_SUCCESS; } RE_NODE* yr_re_node_create( int type, RE_NODE* left, RE_NODE* right) { RE_NODE* result = yr_malloc(sizeof(RE_NODE)); if (result != NULL) { result->type = type; result->left = left; result->right = right; result->greedy = TRUE; result->forward_code = NULL; result->backward_code = NULL; } return result; } void yr_re_node_destroy( RE_NODE* node) { if (node->left != NULL) yr_re_node_destroy(node->left); if (node->right != NULL) yr_re_node_destroy(node->right); if (node->type == RE_NODE_CLASS) yr_free(node->class_vector); yr_free(node); } int yr_re_create( RE** re) { *re = (RE*) yr_malloc(sizeof(RE)); if (*re == NULL) return ERROR_INSUFICIENT_MEMORY; (*re)->flags = 0; (*re)->root_node = NULL; (*re)->error_message = NULL; (*re)->error_code = ERROR_SUCCESS; return ERROR_SUCCESS; } void yr_re_destroy( RE* re) { if (re->root_node != NULL) yr_re_node_destroy(re->root_node); if (re->error_message != NULL) yr_free((char*) re->error_message); yr_free(re); } int yr_re_compile( const char* re_string, RE** re) { return yr_parse_re_string(re_string, re); } int yr_re_compile_hex( const char* hex_string, RE** re) { return yr_parse_hex_string(hex_string, re); } // // yr_re_extract_literal // // Verifies if the provided regular expression is just a literal string // like "abc", "12345", without any wildcard, operator, etc. In that case // returns the string as a SIZED_STRING, or returns NULL if otherwise. // // The caller is responsible for deallocating the returned SIZED_STRING by // calling yr_free. // SIZED_STRING* yr_re_extract_literal( RE* re) { SIZED_STRING* string; RE_NODE* node = re->root_node; int i, length = 0; char tmp; while (node != NULL) { length++; if (node->type == RE_NODE_LITERAL) break; if (node->type != RE_NODE_CONCAT) return NULL; if (node->right == NULL || node->right->type != RE_NODE_LITERAL) return NULL; node = node->left; } string = yr_malloc(sizeof(SIZED_STRING) + length); string->length = 0; if (string == NULL) return NULL; node = re->root_node; while (node->type == RE_NODE_CONCAT) { string->c_string[string->length++] = node->right->value; node = node->left; } string->c_string[string->length++] = node->value; // The string ends up reversed. Reverse it back to its original value. for (i = 0; i < length / 2; i++) { tmp = string->c_string[i]; string->c_string[i] = string->c_string[length - i - 1]; string->c_string[length - i - 1] = tmp; } return string; } int yr_re_split_at_chaining_point( RE* re, RE** result_re, RE** remainder_re, int32_t* min_gap, int32_t* max_gap) { RE_NODE* node = re->root_node; RE_NODE* child = re->root_node->left; RE_NODE* parent = NULL; int result; *result_re = re; *remainder_re = NULL; *min_gap = 0; *max_gap = 0; while (child != NULL && child->type == RE_NODE_CONCAT) { if (child->right != NULL && child->right->type == RE_NODE_RANGE && child->right->greedy == FALSE && child->right->left->type == RE_NODE_ANY && (child->right->start > STRING_CHAINING_THRESHOLD || child->right->end > STRING_CHAINING_THRESHOLD)) { result = yr_re_create(remainder_re); if (result != ERROR_SUCCESS) return result; (*remainder_re)->root_node = child->left; child->left = NULL; if (parent != NULL) parent->left = node->right; else (*result_re)->root_node = node->right; node->right = NULL; *min_gap = child->right->start; *max_gap = child->right->end; yr_re_node_destroy(node); return ERROR_SUCCESS; } parent = node; node = child; child = child->left; } return ERROR_SUCCESS; } int _yr_emit_inst( YR_ARENA* arena, uint8_t opcode, uint8_t** instruction_addr, int* code_size) { FAIL_ON_ERROR(yr_arena_write_data( arena, &opcode, sizeof(uint8_t), (void**) instruction_addr)); *code_size = sizeof(uint8_t); return ERROR_SUCCESS; } int _yr_emit_inst_arg_uint8( YR_ARENA* arena, uint8_t opcode, uint8_t argument, uint8_t** instruction_addr, uint8_t** argument_addr, int* code_size) { FAIL_ON_ERROR(yr_arena_write_data( arena, &opcode, sizeof(uint8_t), (void**) instruction_addr)); FAIL_ON_ERROR(yr_arena_write_data( arena, &argument, sizeof(uint8_t), (void**) argument_addr)); *code_size = 2 * sizeof(uint8_t); return ERROR_SUCCESS; } int _yr_emit_inst_arg_uint16( YR_ARENA* arena, uint8_t opcode, uint16_t argument, uint8_t** instruction_addr, uint16_t** argument_addr, int* code_size) { FAIL_ON_ERROR(yr_arena_write_data( arena, &opcode, sizeof(uint8_t), (void**) instruction_addr)); FAIL_ON_ERROR(yr_arena_write_data( arena, &argument, sizeof(uint16_t), (void**) argument_addr)); *code_size = sizeof(uint8_t) + sizeof(uint16_t); return ERROR_SUCCESS; } int _yr_emit_inst_arg_uint32( YR_ARENA* arena, uint8_t opcode, uint32_t argument, uint8_t** instruction_addr, uint32_t** argument_addr, int* code_size) { FAIL_ON_ERROR(yr_arena_write_data( arena, &opcode, sizeof(uint8_t), (void**) instruction_addr)); FAIL_ON_ERROR(yr_arena_write_data( arena, &argument, sizeof(uint32_t), (void**) argument_addr)); *code_size = sizeof(uint8_t) + sizeof(uint32_t); return ERROR_SUCCESS; } int _yr_emit_inst_arg_int16( YR_ARENA* arena, uint8_t opcode, int16_t argument, uint8_t** instruction_addr, int16_t** argument_addr, int* code_size) { FAIL_ON_ERROR(yr_arena_write_data( arena, &opcode, sizeof(uint8_t), (void**) instruction_addr)); FAIL_ON_ERROR(yr_arena_write_data( arena, &argument, sizeof(int16_t), (void**) argument_addr)); *code_size = sizeof(uint8_t) + sizeof(int16_t); return ERROR_SUCCESS; } int _yr_re_emit( RE_NODE* re_node, YR_ARENA* arena, int flags, uint8_t** code_addr, int* code_size) { int i; int branch_size; int split_size; int inst_size; int jmp_size; RE_NODE* left; RE_NODE* right; int16_t* split_offset_addr = NULL; int16_t* jmp_offset_addr = NULL; uint8_t* instruction_addr = NULL; *code_size = 0; switch(re_node->type) { case RE_NODE_LITERAL: FAIL_ON_ERROR(_yr_emit_inst_arg_uint8( arena, RE_OPCODE_LITERAL, re_node->value, &instruction_addr, NULL, code_size)); break; case RE_NODE_MASKED_LITERAL: FAIL_ON_ERROR(_yr_emit_inst_arg_uint16( arena, RE_OPCODE_MASKED_LITERAL, re_node->mask << 8 | re_node->value, &instruction_addr, NULL, code_size)); break; case RE_NODE_WORD_CHAR: FAIL_ON_ERROR(_yr_emit_inst( arena, RE_OPCODE_WORD_CHAR, &instruction_addr, code_size)); break; case RE_NODE_NON_WORD_CHAR: FAIL_ON_ERROR(_yr_emit_inst( arena, RE_OPCODE_NON_WORD_CHAR, &instruction_addr, code_size)); break; case RE_NODE_SPACE: FAIL_ON_ERROR(_yr_emit_inst( arena, RE_OPCODE_SPACE, &instruction_addr, code_size)); break; case RE_NODE_NON_SPACE: FAIL_ON_ERROR(_yr_emit_inst( arena, RE_OPCODE_NON_SPACE, &instruction_addr, code_size)); break; case RE_NODE_DIGIT: FAIL_ON_ERROR(_yr_emit_inst( arena, RE_OPCODE_DIGIT, &instruction_addr, code_size)); break; case RE_NODE_NON_DIGIT: FAIL_ON_ERROR(_yr_emit_inst( arena, RE_OPCODE_NON_DIGIT, &instruction_addr, code_size)); break; case RE_NODE_ANY: FAIL_ON_ERROR(_yr_emit_inst( arena, RE_OPCODE_ANY, &instruction_addr, code_size)); break; case RE_NODE_CLASS: FAIL_ON_ERROR(_yr_emit_inst( arena, RE_OPCODE_CLASS, &instruction_addr, code_size)); FAIL_ON_ERROR(yr_arena_write_data( arena, re_node->class_vector, 32, NULL)); *code_size += 32; break; case RE_NODE_ANCHOR_START: FAIL_ON_ERROR(_yr_emit_inst( arena, RE_OPCODE_MATCH_AT_START, &instruction_addr, code_size)); break; case RE_NODE_ANCHOR_END: FAIL_ON_ERROR(_yr_emit_inst( arena, RE_OPCODE_MATCH_AT_END, &instruction_addr, code_size)); break; case RE_NODE_CONCAT: if (flags & EMIT_FLAGS_BACKWARDS) { left = re_node->right; right = re_node->left; } else { left = re_node->left; right = re_node->right; } FAIL_ON_ERROR(_yr_re_emit( left, arena, flags, &instruction_addr, &branch_size)); *code_size += branch_size; FAIL_ON_ERROR(_yr_re_emit( right, arena, flags, NULL, &branch_size)); *code_size += branch_size; break; case RE_NODE_PLUS: // Code for e+ looks like: // // L1: code for e // split L1, L2 // L2: FAIL_ON_ERROR(_yr_re_emit( re_node->left, arena, flags, &instruction_addr, &branch_size)); *code_size += branch_size; FAIL_ON_ERROR(_yr_emit_inst_arg_int16( arena, re_node->greedy ? RE_OPCODE_SPLIT_B : RE_OPCODE_SPLIT_A, -branch_size, NULL, &split_offset_addr, &split_size)); *code_size += split_size; break; case RE_NODE_STAR: // Code for e* looks like: // // L1: split L1, L2 // code for e // jmp L1 // L2: FAIL_ON_ERROR(_yr_emit_inst_arg_int16( arena, re_node->greedy ? RE_OPCODE_SPLIT_A : RE_OPCODE_SPLIT_B, 0, &instruction_addr, &split_offset_addr, &split_size)); *code_size += split_size; FAIL_ON_ERROR(_yr_re_emit( re_node->left, arena, flags, NULL, &branch_size)); *code_size += branch_size; // Emit jump with offset set to 0. FAIL_ON_ERROR(_yr_emit_inst_arg_int16( arena, RE_OPCODE_JUMP, -(branch_size + split_size), NULL, &jmp_offset_addr, &jmp_size)); *code_size += jmp_size; // Update split offset. *split_offset_addr = split_size + branch_size + jmp_size; break; case RE_NODE_ALT: // Code for e1|e2 looks like: // // split L1, L2 // L1: code for e1 // jmp L3 // L2: code for e2 // L3: // Emit a split instruction with offset set to 0 temporarily. Offset // will be updated after we know the size of the code generated for // the left node (e1). FAIL_ON_ERROR(_yr_emit_inst_arg_int16( arena, RE_OPCODE_SPLIT_A, 0, &instruction_addr, &split_offset_addr, &split_size)); *code_size += split_size; FAIL_ON_ERROR(_yr_re_emit( re_node->left, arena, flags, NULL, &branch_size)); *code_size += branch_size; // Emit jump with offset set to 0. FAIL_ON_ERROR(_yr_emit_inst_arg_int16( arena, RE_OPCODE_JUMP, 0, NULL, &jmp_offset_addr, &jmp_size)); *code_size += jmp_size; // Update split offset. *split_offset_addr = split_size + branch_size + jmp_size; FAIL_ON_ERROR(_yr_re_emit( re_node->right, arena, flags, NULL, &branch_size)); *code_size += branch_size; // Update offset for jmp instruction. *jmp_offset_addr = branch_size + jmp_size; break; case RE_NODE_RANGE: // Code for e1{n,m} looks like: // // code for e1 (n times) // push m-n // L0: split L1, L2 // L1: code for e1 // jnztop L0 // L2: pop if (re_node->start > 0) { FAIL_ON_ERROR(_yr_re_emit( re_node->left, arena, flags, &instruction_addr, &branch_size)); *code_size += branch_size; for (i = 0; i < re_node->start - 1; i++) { FAIL_ON_ERROR(_yr_re_emit( re_node->left, arena, flags | EMIT_FLAGS_DONT_ANNOTATE_RE, NULL, &branch_size)); *code_size += branch_size; } } // m == n, no more code needed. if (re_node->end == re_node->start) break; FAIL_ON_ERROR(_yr_emit_inst_arg_uint16( arena, RE_OPCODE_PUSH, re_node->end - re_node->start, re_node->start == 0 ? &instruction_addr : NULL, NULL, &inst_size)); *code_size += inst_size; FAIL_ON_ERROR(_yr_emit_inst_arg_int16( arena, re_node->greedy ? RE_OPCODE_SPLIT_A : RE_OPCODE_SPLIT_B, 0, NULL, &split_offset_addr, &split_size)); *code_size += split_size; FAIL_ON_ERROR(_yr_re_emit( re_node->left, arena, flags | EMIT_FLAGS_DONT_ANNOTATE_RE, NULL, &branch_size)); *code_size += branch_size; FAIL_ON_ERROR(_yr_emit_inst_arg_int16( arena, RE_OPCODE_JNZ, -(branch_size + split_size), NULL, &jmp_offset_addr, &jmp_size)); *code_size += jmp_size; *split_offset_addr = split_size + branch_size + jmp_size; FAIL_ON_ERROR(_yr_emit_inst( arena, RE_OPCODE_POP, NULL, &inst_size)); *code_size += inst_size; break; } if (!(flags & EMIT_FLAGS_DONT_ANNOTATE_RE)) { if (flags & EMIT_FLAGS_BACKWARDS) re_node->backward_code = instruction_addr; else re_node->forward_code = instruction_addr; } if (code_addr != NULL) *code_addr = instruction_addr; return ERROR_SUCCESS; } int yr_re_emit_code( RE* re, YR_ARENA* arena) { int code_size; // Emit code for matching the regular expressions forwards. FAIL_ON_ERROR(_yr_re_emit( re->root_node, arena, 0, NULL, &code_size)); FAIL_ON_ERROR(_yr_emit_inst( arena, RE_OPCODE_MATCH, NULL, &code_size)); // Emit code for matching the regular expressions backwards. FAIL_ON_ERROR(_yr_re_emit( re->root_node, arena, EMIT_FLAGS_BACKWARDS, NULL, &code_size)); FAIL_ON_ERROR(_yr_emit_inst( arena, RE_OPCODE_MATCH, NULL, &code_size)); return ERROR_SUCCESS; } RE_FIBER* _yr_re_fiber_create( RE_FIBER_LIST* fiber_pool) { RE_FIBER* fiber; if (fiber_pool->head != NULL) { fiber = fiber_pool->head; fiber_pool->head = fiber->next; if (fiber_pool->tail == fiber) fiber_pool->tail = NULL; } else { fiber = yr_malloc(sizeof(RE_FIBER)); } if (fiber != NULL) { fiber->ip = NULL; fiber->sp = -1; fiber->next = NULL; fiber->prev = NULL; } return fiber; } void _yr_re_fiber_append( RE_FIBER* fiber, RE_FIBER_LIST* fiber_list) { fiber->prev = fiber_list->tail; if (fiber_list->tail != NULL) fiber_list->tail->next = fiber; fiber_list->tail = fiber; if (fiber_list->head == NULL) fiber_list->head = fiber; assert(fiber_list->tail->next == NULL); assert(fiber_list->head->prev == NULL); } RE_FIBER* _yr_re_fiber_split( RE_FIBER* fiber, RE_FIBER_LIST* fiber_list, RE_FIBER_LIST* fiber_pool) { RE_FIBER* new_fiber; int32_t i; new_fiber = _yr_re_fiber_create(fiber_pool); if (new_fiber == NULL) return NULL; new_fiber->sp = fiber->sp; new_fiber->ip = fiber->ip; for (i = 0; i <= fiber->sp; i++) new_fiber->stack[i] = fiber->stack[i]; new_fiber->next = fiber->next; new_fiber->prev = fiber; if (fiber->next != NULL) fiber->next->prev = new_fiber; fiber->next = new_fiber; if (fiber_list->tail == fiber) fiber_list->tail = new_fiber; assert(fiber_list->tail->next == NULL); assert(fiber_list->head->prev == NULL); return new_fiber; } // // _yr_re_fiber_kill // // Kills a given fiber by removing it from the fiber list and putting it // in the fiber pool. // RE_FIBER* _yr_re_fiber_kill( RE_FIBER* fiber, RE_FIBER_LIST* fiber_list, RE_FIBER_LIST* fiber_pool) { RE_FIBER* next_fiber = fiber->next; if (fiber->prev != NULL) fiber->prev->next = next_fiber; if (next_fiber != NULL) next_fiber->prev = fiber->prev; if (fiber_pool->tail != NULL) fiber_pool->tail->next = fiber; if (fiber_list->tail == fiber) fiber_list->tail = fiber->prev; if (fiber_list->head == fiber) fiber_list->head = next_fiber; fiber->next = NULL; fiber->prev = fiber_pool->tail; fiber_pool->tail = fiber; if (fiber_pool->head == NULL) fiber_pool->head = fiber; return next_fiber; } // // _yr_re_fiber_kill_tail // // Kills all fibers from the given one up to the end of the fiber list. // void _yr_re_fiber_kill_tail( RE_FIBER* fiber, RE_FIBER_LIST* fiber_list, RE_FIBER_LIST* fiber_pool) { RE_FIBER* prev_fiber = fiber->prev; if (prev_fiber != NULL) prev_fiber->next = NULL; fiber->prev = fiber_pool->tail; if (fiber_pool->tail != NULL) fiber_pool->tail->next = fiber; fiber_pool->tail = fiber_list->tail; fiber_list->tail = prev_fiber; if (fiber_list->head == fiber) fiber_list->head = NULL; if (fiber_pool->head == NULL) fiber_pool->head = fiber; } #define prolog \ if (count >= max_count) \ { \ fiber = _yr_re_fiber_kill(fiber, &fibers, &storage->fiber_pool); \ break; \ } \ #define epilog \ if (match) \ fiber = fiber->next; \ else\ fiber = _yr_re_fiber_kill(fiber, &fibers, &storage->fiber_pool) \ // // yr_re_exec // // Executes a regular expression // // Args: // uint8_t* code - Pointer to regexp code be executed // uint8_t* input - Pointer to input data // size_t input_size - Input data size // int flags - Flags: // RE_FLAGS_SCAN // RE_FLAGS_BACKWARDS // RE_FLAGS_EXHAUSTIVE // RE_FLAGS_WIDE // RE_MATCH_CALLBACK_FUNC callback - Callback function // void* callback_args - Callback argument // int yr_re_exec( uint8_t* code, uint8_t* input_data, size_t input_size, int flags, RE_MATCH_CALLBACK_FUNC callback, void* callback_args) { uint8_t* ip; uint8_t* input; uint8_t mask; uint8_t value; RE_FIBER_LIST fibers; RE_THREAD_STORAGE* storage; RE_FIBER* fiber; RE_FIBER* new_fiber; int count; int max_count; int match; int character_size; int result = -1; #ifdef WIN32 storage = TlsGetValue(thread_storage_key); #else storage = pthread_getspecific(thread_storage_key); #endif if (storage == NULL) { storage = yr_malloc(sizeof(RE_THREAD_STORAGE)); if (storage == NULL) return ERROR_INSUFICIENT_MEMORY; storage->fiber_pool.head = NULL; storage->fiber_pool.tail = NULL; #ifdef WIN32 TlsSetValue(thread_storage_key, storage); #else pthread_setspecific(thread_storage_key, storage); #endif } if (flags & RE_FLAGS_WIDE) character_size = 2; else character_size = 1; fiber = _yr_re_fiber_create(&storage->fiber_pool); fiber->ip = code; fibers.head = fiber; fibers.tail = fiber; input = input_data; count = 0; max_count = min(input_size, RE_SCAN_LIMIT); while (fibers.head != NULL) { fiber = fibers.head; while(fiber != NULL) { ip = fiber->ip; switch(*ip) { case RE_OPCODE_LITERAL: prolog; if (flags & RE_FLAGS_NO_CASE) match = lowercase[*input] == lowercase[*(ip + 1)]; else match = (*input == *(ip + 1)); fiber->ip += 2; epilog; break; case RE_OPCODE_ANY: prolog; match = (*input != 0x0A || flags & RE_FLAGS_DOT_ALL); fiber->ip += 1; epilog; break; case RE_OPCODE_MASKED_LITERAL: prolog; value = *(int16_t*)(ip + 1) & 0xFF; mask = *(int16_t*)(ip + 1) >> 8; // We don't need to take into account the case-insensitive // case because this opcode is only used with hex strings, // which can't be case-insensitive. match = ((*input & mask) == value); fiber->ip += 3; epilog; break; case RE_OPCODE_CLASS: prolog; if (flags & RE_FLAGS_NO_CASE) match = CHAR_IN_CLASS(*input, ip + 1) || CHAR_IN_CLASS(altercase[*input], ip + 1); else match = CHAR_IN_CLASS(*input, ip + 1); fiber->ip += 33; epilog; break; case RE_OPCODE_WORD_CHAR: prolog; match = (isalnum(*input) || *input == '_'); fiber->ip += 1; epilog; break; case RE_OPCODE_NON_WORD_CHAR: prolog; match = (!isalnum(*input) && *input != '_'); fiber->ip += 1; epilog; break; case RE_OPCODE_SPACE: prolog; match = (*input == ' ' || *input == '\t'); fiber->ip += 1; epilog; break; case RE_OPCODE_NON_SPACE: prolog; match = (*input != ' ' && *input != '\t'); fiber->ip += 1; epilog; break; case RE_OPCODE_DIGIT: prolog; match = isdigit(*input); fiber->ip += 1; epilog; break; case RE_OPCODE_NON_DIGIT: prolog; match = !isdigit(*input); fiber->ip += 1; epilog; break; case RE_OPCODE_SPLIT_A: new_fiber = _yr_re_fiber_split(fiber, &fibers, &storage->fiber_pool); new_fiber->ip += *(int16_t*)(ip + 1); fiber->ip += 3; break; case RE_OPCODE_SPLIT_B: new_fiber = _yr_re_fiber_split(fiber, &fibers, &storage->fiber_pool); new_fiber->ip += 3; fiber->ip += *(int16_t*)(ip + 1); break; case RE_OPCODE_JUMP: fiber->ip = ip + *(int16_t*)(ip + 1); break; case RE_OPCODE_JNZ: fiber->stack[fiber->sp]--; if (fiber->stack[fiber->sp] > 0) fiber->ip = ip + *(int16_t*)(ip + 1); else fiber->ip += 3; break; case RE_OPCODE_PUSH: fiber->stack[++fiber->sp] = *(uint16_t*)(ip + 1); fiber->ip += 3; break; case RE_OPCODE_POP: fiber->sp--; fiber->ip++; break; case RE_OPCODE_MATCH: case RE_OPCODE_MATCH_AT_START: case RE_OPCODE_MATCH_AT_END: if ((*ip == RE_OPCODE_MATCH_AT_START && input_size - 1 > count - character_size) || (*ip == RE_OPCODE_MATCH_AT_END && input_size > count)) { fiber = _yr_re_fiber_kill(fiber, &fibers, &storage->fiber_pool); break; } result = count; if (flags & RE_FLAGS_EXHAUSTIVE) { if (flags & RE_FLAGS_BACKWARDS) callback(input + character_size, count, flags, callback_args); else callback(input_data, count, flags, callback_args); fiber = _yr_re_fiber_kill(fiber, &fibers, &storage->fiber_pool); } else { _yr_re_fiber_kill_tail(fiber, &fibers, &storage->fiber_pool); fiber = NULL; } break; default: assert(FALSE); } } if (fibers.head != NULL && flags & RE_FLAGS_WIDE && *(input + 1) != 0) _yr_re_fiber_kill_tail(fibers.head, &fibers, &storage->fiber_pool); if (flags & RE_FLAGS_BACKWARDS) input -= character_size; else input += character_size; count += character_size; if ((flags & RE_FLAGS_SCAN) && count < max_count) { fiber = _yr_re_fiber_create(&storage->fiber_pool); fiber->ip = code; _yr_re_fiber_append(fiber, &fibers); } } return result; } void _yr_re_print_node( RE_NODE* re_node) { int i; if (re_node == NULL) return; switch(re_node->type) { case RE_NODE_ALT: printf("Alt("); _yr_re_print_node(re_node->left); printf(", "); _yr_re_print_node(re_node->right); printf(")"); break; case RE_NODE_CONCAT: printf("Cat("); _yr_re_print_node(re_node->left); printf(", "); _yr_re_print_node(re_node->right); printf(")"); break; case RE_NODE_STAR: printf("Star("); _yr_re_print_node(re_node->left); printf(")"); break; case RE_NODE_PLUS: printf("Plus("); _yr_re_print_node(re_node->left); printf(")"); break; case RE_NODE_LITERAL: printf("Lit(%02X)", re_node->value); break; case RE_NODE_MASKED_LITERAL: printf("MaskedLit(%02X,%02X)", re_node->value, re_node->mask); break; case RE_NODE_WORD_CHAR: printf("WordChar"); break; case RE_NODE_NON_WORD_CHAR: printf("NonWordChar"); break; case RE_NODE_SPACE: printf("Space"); break; case RE_NODE_NON_SPACE: printf("NonSpace"); break; case RE_NODE_DIGIT: printf("Digit"); break; case RE_NODE_NON_DIGIT: printf("NonDigit"); break; case RE_NODE_ANY: printf("Any"); break; case RE_NODE_RANGE: printf("Range(%d-%d, ", re_node->start, re_node->end); _yr_re_print_node(re_node->left); printf(")"); break; case RE_NODE_CLASS: printf("Class("); for (i = 0; i < 256; i++) if (CHAR_IN_CLASS(i, re_node->class_vector)) printf("%02X,", i); printf(")"); break; default: printf("???"); break; } } void yr_re_print( RE* re) { _yr_re_print_node(re->root_node); } yara-2.0.0/libyara/re.h000066400000000000000000000077301225703323600146610ustar00rootroot00000000000000/* Copyright (c) 2013. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #ifndef _RE_H #define _RE_H #include "yara.h" #include "sizedstr.h" #define RE_NODE_LITERAL 1 #define RE_NODE_MASKED_LITERAL 2 #define RE_NODE_ANY 3 #define RE_NODE_CONCAT 4 #define RE_NODE_ALT 5 #define RE_NODE_RANGE 6 #define RE_NODE_STAR 7 #define RE_NODE_PLUS 8 #define RE_NODE_CLASS 9 #define RE_NODE_WORD_CHAR 10 #define RE_NODE_NON_WORD_CHAR 11 #define RE_NODE_SPACE 12 #define RE_NODE_NON_SPACE 13 #define RE_NODE_DIGIT 14 #define RE_NODE_NON_DIGIT 15 #define RE_NODE_EMPTY 16 #define RE_NODE_ANCHOR_START 17 #define RE_NODE_ANCHOR_END 18 #define RE_OPCODE_ANY 0xA0 #define RE_OPCODE_LITERAL 0xA1 #define RE_OPCODE_MASKED_LITERAL 0xA2 #define RE_OPCODE_LITERAL_STRING 0xA3 #define RE_OPCODE_CLASS 0xA4 #define RE_OPCODE_WORD_CHAR 0xA5 #define RE_OPCODE_NON_WORD_CHAR 0xA6 #define RE_OPCODE_SPACE 0xA7 #define RE_OPCODE_NON_SPACE 0xA8 #define RE_OPCODE_DIGIT 0xA9 #define RE_OPCODE_NON_DIGIT 0xAA #define RE_OPCODE_MATCH 0xAB #define RE_OPCODE_MATCH_AT_END 0xAC #define RE_OPCODE_MATCH_AT_START 0xAD #define RE_OPCODE_SPLIT_A 0xB0 #define RE_OPCODE_SPLIT_B 0xB1 #define RE_OPCODE_PUSH 0xB2 #define RE_OPCODE_POP 0xB3 #define RE_OPCODE_JNZ 0xB4 #define RE_OPCODE_JUMP 0xB5 #define RE_FLAGS_FAST_HEX_REGEXP 0x02 #define RE_FLAGS_BACKWARDS 0x04 #define RE_FLAGS_EXHAUSTIVE 0x08 #define RE_FLAGS_WIDE 0x10 #define RE_FLAGS_NO_CASE 0x20 #define RE_FLAGS_SCAN 0x40 #define RE_FLAGS_DOT_ALL 0x80 typedef struct RE RE; typedef struct RE_NODE RE_NODE; #define CHAR_IN_CLASS(chr, cls) \ ((cls)[(chr) / 8] & 1 << ((chr) % 8)) struct RE_NODE { int type; union { int value; int count; int start; }; union { int mask; int end; }; int greedy; uint8_t* class_vector; RE_NODE* left; RE_NODE* right; void* forward_code; void* backward_code; }; struct RE { uint32_t flags; RE_NODE* root_node; const char* error_message; int error_code; }; typedef int RE_MATCH_CALLBACK_FUNC( uint8_t* match, int match_length, int flags, void* args); int yr_re_create( RE** re); int yr_re_compile( const char* re_string, RE** re); int yr_re_compile_hex( const char* hex_string, RE** re); RE_NODE* yr_re_node_create( int type, RE_NODE* left, RE_NODE* right); void yr_re_destroy( RE* re); void yr_re_print( RE* re); RE_NODE* yr_re_node_create( int type, RE_NODE* left, RE_NODE* right); void yr_re_node_destroy( RE_NODE* node); SIZED_STRING* yr_re_extract_literal( RE* re); int yr_re_split_at_chaining_point( RE* re, RE** result_re, RE** remainder_re, int32_t* min_gap, int32_t* max_gap); int yr_re_emit_code( RE* re, YR_ARENA* arena); int yr_re_exec( uint8_t* code, uint8_t* input, size_t input_size, int flags, RE_MATCH_CALLBACK_FUNC callback, void* callback_args); int yr_re_initialize(); int yr_re_finalize(); int yr_re_finalize_thread(); #endif yara-2.0.0/libyara/re_grammar.c000066400000000000000000001465611225703323600163700ustar00rootroot00000000000000/* A Bison parser, made by GNU Bison 2.3. */ /* Skeleton implementation for Bison's Yacc-like parsers in C Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. 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, 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. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ #define YYBISON_VERSION "2.3" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 1 /* Using locations. */ #define YYLSP_NEEDED 0 /* Substitute the variable and function names. */ #define yyparse re_yyparse #define yylex re_yylex #define yyerror re_yyerror #define yylval re_yylval #define yychar re_yychar #define yydebug re_yydebug #define yynerrs re_yynerrs /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { _CHAR_ = 258, _ANY_ = 259, _RANGE_ = 260, _CLASS_ = 261, _WORD_CHAR_ = 262, _NON_WORD_CHAR_ = 263, _SPACE_ = 264, _NON_SPACE_ = 265, _DIGIT_ = 266, _NON_DIGIT_ = 267 }; #endif /* Tokens. */ #define _CHAR_ 258 #define _ANY_ 259 #define _RANGE_ 260 #define _CLASS_ 261 #define _WORD_CHAR_ 262 #define _NON_WORD_CHAR_ 263 #define _SPACE_ 264 #define _NON_SPACE_ 265 #define _DIGIT_ 266 #define _NON_DIGIT_ 267 /* Copy the first part of user declarations. */ #line 17 "re_grammar.y" #include #include "mem.h" #include "re_lexer.h" #include "re.h" #include "config.h" #ifdef DMALLOC #include #endif #define YYERROR_VERBOSE #define YYDEBUG 0 #if YYDEBUG yydebug = 1; #endif #define ERROR_IF(x, error) \ if (x) \ { \ RE* re = yyget_extra(yyscanner); \ re->error_code = error; \ YYABORT; \ } \ #define DESTROY_NODE_IF(x, node) \ if (x) \ { \ yr_re_node_destroy(node); \ } \ /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 1 #endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 0 #endif /* Enabling the token table. */ #ifndef YYTOKEN_TABLE # define YYTOKEN_TABLE 0 #endif #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE #line 67 "re_grammar.y" { int integer; uint32_t range; RE_NODE* re_node; uint8_t* class_vector; } /* Line 193 of yacc.c. */ #line 174 "re_grammar.c" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 #endif /* Copy the second part of user declarations. */ /* Line 216 of yacc.c. */ #line 187 "re_grammar.c" #ifdef short # undef short #endif #ifdef YYTYPE_UINT8 typedef YYTYPE_UINT8 yytype_uint8; #else typedef unsigned char yytype_uint8; #endif #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; #elif (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; #else typedef short int yytype_int8; #endif #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else typedef short int yytype_int16; #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned int # endif #endif #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(msgid) dgettext ("bison-runtime", msgid) # endif # endif # ifndef YY_ # define YY_(msgid) msgid # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(e) ((void) (e)) #else # define YYUSE(e) /* empty */ #endif /* Identity function, used to suppress warnings about constant conditions. */ #ifndef lint # define YYID(n) (n) #else #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static int YYID (int i) #else static int YYID (i) int i; #endif { return i; } #endif #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's `empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined _STDLIB_H \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yytype_int16 yyss; YYSTYPE yyvs; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) /* Copy COUNT objects from FROM to TO. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(To, From, Count) \ __builtin_memcpy (To, From, (Count) * sizeof (*(From))) # else # define YYCOPY(To, From, Count) \ do \ { \ YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (To)[yyi] = (From)[yyi]; \ } \ while (YYID (0)) # endif # endif /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack) \ do \ { \ YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack, Stack, yysize); \ Stack = &yyptr->Stack; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (YYID (0)) #endif /* YYFINAL -- State number of the termination state. */ #define YYFINAL 20 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 40 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 22 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 6 /* YYNRULES -- Number of rules. */ #define YYNRULES 28 /* YYNRULES -- Number of states. */ #define YYNSTATES 32 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 267 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 18, 2, 2, 2, 19, 20, 14, 16, 2, 2, 21, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 15, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 17, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 13, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; #if YYDEBUG /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ static const yytype_uint8 yyprhs[] = { 0, 0, 3, 5, 7, 9, 13, 16, 18, 21, 24, 28, 31, 35, 38, 42, 45, 47, 49, 51, 55, 57, 59, 61, 63, 65, 67, 69, 71 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int8 yyrhs[] = { 23, 0, -1, 24, -1, 1, -1, 25, -1, 24, 13, 25, -1, 24, 13, -1, 26, -1, 25, 26, -1, 27, 14, -1, 27, 14, 15, -1, 27, 16, -1, 27, 16, 15, -1, 27, 15, -1, 27, 15, 15, -1, 27, 5, -1, 27, -1, 17, -1, 18, -1, 19, 24, 20, -1, 21, -1, 3, -1, 7, -1, 8, -1, 9, -1, 10, -1, 11, -1, 12, -1, 6, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 96, 96, 101, 104, 108, 117, 132, 136, 146, 153, 162, 169, 178, 188, 199, 209, 213, 219, 227, 231, 237, 245, 251, 257, 263, 269, 275, 281 }; #endif #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "$end", "error", "$undefined", "_CHAR_", "_ANY_", "_RANGE_", "_CLASS_", "_WORD_CHAR_", "_NON_WORD_CHAR_", "_SPACE_", "_NON_SPACE_", "_DIGIT_", "_NON_DIGIT_", "'|'", "'*'", "'?'", "'+'", "'^'", "'$'", "'('", "')'", "'.'", "$accept", "re", "alternative", "concatenation", "repeat", "single", 0 }; #endif # ifdef YYPRINT /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to token YYLEX-NUM. */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 124, 42, 63, 43, 94, 36, 40, 41, 46 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 22, 23, 23, 24, 24, 24, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 1, 1, 1, 3, 2, 1, 2, 2, 3, 2, 3, 2, 3, 2, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state STATE-NUM when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const yytype_uint8 yydefact[] = { 0, 3, 21, 28, 22, 23, 24, 25, 26, 27, 17, 18, 0, 20, 0, 2, 4, 7, 16, 0, 1, 6, 8, 15, 9, 13, 11, 19, 5, 10, 14, 12 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int8 yydefgoto[] = { -1, 14, 15, 16, 17, 18 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -16 static const yytype_int8 yypact[] = { -1, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, 16, -16, 3, -9, 16, -16, 24, 1, -16, 16, -16, -16, -3, 0, 15, -16, 16, -16, -16, -16 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { -16, -16, 19, 11, -15, -16 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -1 static const yytype_uint8 yytable[] = { 1, 22, 2, 20, 21, 3, 4, 5, 6, 7, 8, 9, 29, 22, 21, 30, 10, 11, 12, 2, 13, 27, 3, 4, 5, 6, 7, 8, 9, 23, 31, 19, 28, 10, 11, 12, 0, 13, 24, 25, 26 }; static const yytype_int8 yycheck[] = { 1, 16, 3, 0, 13, 6, 7, 8, 9, 10, 11, 12, 15, 28, 13, 15, 17, 18, 19, 3, 21, 20, 6, 7, 8, 9, 10, 11, 12, 5, 15, 12, 21, 17, 18, 19, -1, 21, 14, 15, 16 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 1, 3, 6, 7, 8, 9, 10, 11, 12, 17, 18, 19, 21, 23, 24, 25, 26, 27, 24, 0, 13, 26, 5, 14, 15, 16, 20, 25, 15, 15, 15 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY (-2) #define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. */ #define YYFAIL goto yyerrlab #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY && yylen == 1) \ { \ yychar = (Token); \ yylval = (Value); \ yytoken = YYTRANSLATE (yychar); \ YYPOPSTACK (1); \ goto yybackup; \ } \ else \ { \ yyerror (yyscanner, lex_env, YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (YYID (0)) #define YYTERROR 1 #define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ #define YYRHSLOC(Rhs, K) ((Rhs)[K]) #ifndef YYLLOC_DEFAULT # define YYLLOC_DEFAULT(Current, Rhs, N) \ do \ if (YYID (N)) \ { \ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ } \ else \ { \ (Current).first_line = (Current).last_line = \ YYRHSLOC (Rhs, 0).last_line; \ (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ while (YYID (0)) #endif /* YY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ #ifndef YY_LOCATION_PRINT # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL # define YY_LOCATION_PRINT(File, Loc) \ fprintf (File, "%d.%d-%d.%d", \ (Loc).first_line, (Loc).first_column, \ (Loc).last_line, (Loc).last_column) # else # define YY_LOCATION_PRINT(File, Loc) ((void) 0) # endif #endif /* YYLEX -- calling `yylex' with the right arguments. */ #ifdef YYLEX_PARAM # define YYLEX yylex (&yylval, YYLEX_PARAM) #else # define YYLEX yylex (&yylval, yyscanner, lex_env) #endif /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (YYID (0)) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Type, Value, yyscanner, lex_env); \ YYFPRINTF (stderr, "\n"); \ } \ } while (YYID (0)) /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, void *yyscanner, LEX_ENVIRONMENT *lex_env) #else static void yy_symbol_value_print (yyoutput, yytype, yyvaluep, yyscanner, lex_env) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; void *yyscanner; LEX_ENVIRONMENT *lex_env; #endif { if (!yyvaluep) return; YYUSE (yyscanner); YYUSE (lex_env); # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # else YYUSE (yyoutput); # endif switch (yytype) { default: break; } } /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, void *yyscanner, LEX_ENVIRONMENT *lex_env) #else static void yy_symbol_print (yyoutput, yytype, yyvaluep, yyscanner, lex_env) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; void *yyscanner; LEX_ENVIRONMENT *lex_env; #endif { if (yytype < YYNTOKENS) YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); else YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep, yyscanner, lex_env); YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) #else static void yy_stack_print (bottom, top) yytype_int16 *bottom; yytype_int16 *top; #endif { YYFPRINTF (stderr, "Stack now"); for (; bottom <= top; ++bottom) YYFPRINTF (stderr, " %d", *bottom); YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_reduce_print (YYSTYPE *yyvsp, int yyrule, void *yyscanner, LEX_ENVIRONMENT *lex_env) #else static void yy_reduce_print (yyvsp, yyrule, yyscanner, lex_env) YYSTYPE *yyvsp; int yyrule; void *yyscanner; LEX_ENVIRONMENT *lex_env; #endif { int yynrhs = yyr2[yyrule]; int yyi; unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { fprintf (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) , yyscanner, lex_env); fprintf (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyvsp, Rule, yyscanner, lex_env); \ } while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif #if YYERROR_VERBOSE # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen strlen # else /* Return the length of YYSTR. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) #else static YYSIZE_T yystrlen (yystr) const char *yystr; #endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif # endif # ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) #else static char * yystpcpy (yydest, yysrc) char *yydest; const char *yysrc; #endif { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif # endif # ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (! yyres) return yystrlen (yystr); return yystpcpy (yyres, yystr) - yyres; } # endif /* Copy into YYRESULT an error message about the unexpected token YYCHAR while in state YYSTATE. Return the number of bytes copied, including the terminating null byte. If YYRESULT is null, do not copy anything; just return the number of bytes that would be copied. As a special case, return 0 if an ordinary "syntax error" message will do. Return YYSIZE_MAXIMUM if overflow occurs during size calculation. */ static YYSIZE_T yysyntax_error (char *yyresult, int yystate, int yychar) { int yyn = yypact[yystate]; if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) return 0; else { int yytype = YYTRANSLATE (yychar); YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); YYSIZE_T yysize = yysize0; YYSIZE_T yysize1; int yysize_overflow = 0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; int yyx; # if 0 /* This is so xgettext sees the translatable formats that are constructed on the fly. */ YY_("syntax error, unexpected %s"); YY_("syntax error, unexpected %s, expecting %s"); YY_("syntax error, unexpected %s, expecting %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); # endif char *yyfmt; char const *yyf; static char const yyunexpected[] = "syntax error, unexpected %s"; static char const yyexpecting[] = ", expecting %s"; static char const yyor[] = " or %s"; char yyformat[sizeof yyunexpected + sizeof yyexpecting - 1 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) * (sizeof yyor - 1))]; char const *yyprefix = yyexpecting; /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yycount = 1; yyarg[0] = yytname[yytype]; yyfmt = yystpcpy (yyformat, yyunexpected); for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) { if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { yycount = 1; yysize = yysize0; yyformat[sizeof yyunexpected - 1] = '\0'; break; } yyarg[yycount++] = yytname[yyx]; yysize1 = yysize + yytnamerr (0, yytname[yyx]); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; yyfmt = yystpcpy (yyfmt, yyprefix); yyprefix = yyor; } yyf = YY_(yyformat); yysize1 = yysize + yystrlen (yyf); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; if (yysize_overflow) return YYSIZE_MAXIMUM; if (yyresult) { /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ char *yyp = yyresult; int yyi = 0; while ((*yyp = *yyf) != '\0') { if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yyarg[yyi++]); yyf += 2; } else { yyp++; yyf++; } } } return yysize; } } #endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, void *yyscanner, LEX_ENVIRONMENT *lex_env) #else static void yydestruct (yymsg, yytype, yyvaluep, yyscanner, lex_env) const char *yymsg; int yytype; YYSTYPE *yyvaluep; void *yyscanner; LEX_ENVIRONMENT *lex_env; #endif { YYUSE (yyvaluep); YYUSE (yyscanner); YYUSE (lex_env); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); switch (yytype) { case 6: /* "_CLASS_" */ #line 88 "re_grammar.y" { yr_free((yyvaluep->class_vector)); }; #line 1111 "re_grammar.c" break; case 24: /* "alternative" */ #line 89 "re_grammar.y" { yr_re_node_destroy((yyvaluep->re_node)); }; #line 1116 "re_grammar.c" break; case 25: /* "concatenation" */ #line 90 "re_grammar.y" { yr_re_node_destroy((yyvaluep->re_node)); }; #line 1121 "re_grammar.c" break; case 26: /* "repeat" */ #line 91 "re_grammar.y" { yr_re_node_destroy((yyvaluep->re_node)); }; #line 1126 "re_grammar.c" break; case 27: /* "single" */ #line 92 "re_grammar.y" { yr_re_node_destroy((yyvaluep->re_node)); }; #line 1131 "re_grammar.c" break; default: break; } } /* Prevent warnings from -Wmissing-prototypes. */ #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); #else int yyparse (); #endif #else /* ! YYPARSE_PARAM */ #if defined __STDC__ || defined __cplusplus int yyparse (void *yyscanner, LEX_ENVIRONMENT *lex_env); #else int yyparse (); #endif #endif /* ! YYPARSE_PARAM */ /*----------. | yyparse. | `----------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void *YYPARSE_PARAM) #else int yyparse (YYPARSE_PARAM) void *YYPARSE_PARAM; #endif #else /* ! YYPARSE_PARAM */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void *yyscanner, LEX_ENVIRONMENT *lex_env) #else int yyparse (yyscanner, lex_env) void *yyscanner; LEX_ENVIRONMENT *lex_env; #endif #endif { /* The look-ahead symbol. */ int yychar; /* The semantic value of the look-ahead symbol. */ YYSTYPE yylval; /* Number of syntax errors so far. */ int yynerrs; int yystate; int yyn; int yyresult; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* Look-ahead token as an internal (translated) token number. */ int yytoken = 0; #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif /* Three stacks and their tools: `yyss': related to states, `yyvs': related to semantic values, `yyls': related to locations. Refer to the stacks thru separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ yytype_int16 yyssa[YYINITDEPTH]; yytype_int16 *yyss = yyssa; yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs = yyvsa; YYSTYPE *yyvsp; #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) YYSIZE_T yystacksize = YYINITDEPTH; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ yyssp = yyss; yyvsp = yyvs; goto yysetstate; /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; yysetstate: *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE goto yyexhaustedlab; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss); YYSTACK_RELOCATE (yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a look-ahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to look-ahead token. */ yyn = yypact[yystate]; if (yyn == YYPACT_NINF) goto yydefault; /* Not known => get a look-ahead token if don't already have one. */ /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yyn == 0 || yyn == YYTABLE_NINF) goto yyerrlab; yyn = -yyn; goto yyreduce; } if (yyn == YYFINAL) YYACCEPT; /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the look-ahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the shifted token unless it is eof. */ if (yychar != YYEOF) yychar = YYEMPTY; yystate = yyn; *++yyvsp = yylval; goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 2: #line 97 "re_grammar.y" { RE* re = yyget_extra(yyscanner); re->root_node = (yyvsp[(1) - (1)].re_node); } break; case 4: #line 105 "re_grammar.y" { (yyval.re_node) = (yyvsp[(1) - (1)].re_node); } break; case 5: #line 109 "re_grammar.y" { (yyval.re_node) = yr_re_node_create(RE_NODE_ALT, (yyvsp[(1) - (3)].re_node), (yyvsp[(3) - (3)].re_node)); DESTROY_NODE_IF((yyval.re_node) == NULL, (yyvsp[(1) - (3)].re_node)); DESTROY_NODE_IF((yyval.re_node) == NULL, (yyvsp[(3) - (3)].re_node)); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); } break; case 6: #line 118 "re_grammar.y" { RE_NODE* node; node = yr_re_node_create(RE_NODE_EMPTY, NULL, NULL); DESTROY_NODE_IF((yyval.re_node) == NULL, (yyvsp[(1) - (2)].re_node)); ERROR_IF(node == NULL, ERROR_INSUFICIENT_MEMORY); (yyval.re_node) = yr_re_node_create(RE_NODE_ALT, (yyvsp[(1) - (2)].re_node), node); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); } break; case 7: #line 133 "re_grammar.y" { (yyval.re_node) = (yyvsp[(1) - (1)].re_node); } break; case 8: #line 137 "re_grammar.y" { (yyval.re_node) = yr_re_node_create(RE_NODE_CONCAT, (yyvsp[(1) - (2)].re_node), (yyvsp[(2) - (2)].re_node)); DESTROY_NODE_IF((yyval.re_node) == NULL, (yyvsp[(1) - (2)].re_node)); DESTROY_NODE_IF((yyval.re_node) == NULL, (yyvsp[(2) - (2)].re_node)); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); } break; case 9: #line 147 "re_grammar.y" { (yyval.re_node) = yr_re_node_create(RE_NODE_STAR, (yyvsp[(1) - (2)].re_node), NULL); DESTROY_NODE_IF((yyval.re_node) == NULL, (yyvsp[(1) - (2)].re_node)); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); } break; case 10: #line 154 "re_grammar.y" { (yyval.re_node) = yr_re_node_create(RE_NODE_STAR, (yyvsp[(1) - (3)].re_node), NULL); DESTROY_NODE_IF((yyval.re_node) == NULL, (yyvsp[(1) - (3)].re_node)); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); (yyval.re_node)->greedy = FALSE; } break; case 11: #line 163 "re_grammar.y" { (yyval.re_node) = yr_re_node_create(RE_NODE_PLUS, (yyvsp[(1) - (2)].re_node), NULL); DESTROY_NODE_IF((yyval.re_node) == NULL, (yyvsp[(1) - (2)].re_node)); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); } break; case 12: #line 170 "re_grammar.y" { (yyval.re_node) = yr_re_node_create(RE_NODE_PLUS, (yyvsp[(1) - (3)].re_node), NULL); DESTROY_NODE_IF((yyval.re_node) == NULL, (yyvsp[(1) - (3)].re_node)); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); (yyval.re_node)->greedy = FALSE; } break; case 13: #line 179 "re_grammar.y" { (yyval.re_node) = yr_re_node_create(RE_NODE_RANGE, (yyvsp[(1) - (2)].re_node), NULL); DESTROY_NODE_IF((yyval.re_node) == NULL, (yyvsp[(1) - (2)].re_node)); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); (yyval.re_node)->start = 0; (yyval.re_node)->end = 1; } break; case 14: #line 189 "re_grammar.y" { (yyval.re_node) = yr_re_node_create(RE_NODE_RANGE, (yyvsp[(1) - (3)].re_node), NULL); DESTROY_NODE_IF((yyval.re_node) == NULL, (yyvsp[(1) - (3)].re_node)); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); (yyval.re_node)->start = 0; (yyval.re_node)->end = 1; (yyval.re_node)->greedy = FALSE; } break; case 15: #line 200 "re_grammar.y" { (yyval.re_node) = yr_re_node_create(RE_NODE_RANGE, (yyvsp[(1) - (2)].re_node), NULL); DESTROY_NODE_IF((yyval.re_node) == NULL, (yyvsp[(1) - (2)].re_node)); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); (yyval.re_node)->start = (yyvsp[(2) - (2)].range) & 0xFFFF;; (yyval.re_node)->end = (yyvsp[(2) - (2)].range) >> 16;; } break; case 16: #line 210 "re_grammar.y" { (yyval.re_node) = (yyvsp[(1) - (1)].re_node); } break; case 17: #line 214 "re_grammar.y" { (yyval.re_node) = yr_re_node_create(RE_NODE_ANCHOR_START, NULL, NULL); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); } break; case 18: #line 220 "re_grammar.y" { (yyval.re_node) = yr_re_node_create(RE_NODE_ANCHOR_END, NULL, NULL); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); } break; case 19: #line 228 "re_grammar.y" { (yyval.re_node) = (yyvsp[(2) - (3)].re_node); } break; case 20: #line 232 "re_grammar.y" { (yyval.re_node) = yr_re_node_create(RE_NODE_ANY, NULL, NULL); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); } break; case 21: #line 238 "re_grammar.y" { (yyval.re_node) = yr_re_node_create(RE_NODE_LITERAL, NULL, NULL); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); (yyval.re_node)->value = (yyvsp[(1) - (1)].integer); } break; case 22: #line 246 "re_grammar.y" { (yyval.re_node) = yr_re_node_create(RE_NODE_WORD_CHAR, NULL, NULL); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); } break; case 23: #line 252 "re_grammar.y" { (yyval.re_node) = yr_re_node_create(RE_NODE_NON_WORD_CHAR, NULL, NULL); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); } break; case 24: #line 258 "re_grammar.y" { (yyval.re_node) = yr_re_node_create(RE_NODE_SPACE, NULL, NULL); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); } break; case 25: #line 264 "re_grammar.y" { (yyval.re_node) = yr_re_node_create(RE_NODE_NON_SPACE, NULL, NULL); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); } break; case 26: #line 270 "re_grammar.y" { (yyval.re_node) = yr_re_node_create(RE_NODE_DIGIT, NULL, NULL); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); } break; case 27: #line 276 "re_grammar.y" { (yyval.re_node) = yr_re_node_create(RE_NODE_NON_DIGIT, NULL, NULL); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); } break; case 28: #line 282 "re_grammar.y" { (yyval.re_node) = yr_re_node_create(RE_NODE_CLASS, NULL, NULL); ERROR_IF((yyval.re_node) == NULL, ERROR_INSUFICIENT_MEMORY); (yyval.re_node)->class_vector = (yyvsp[(1) - (1)].class_vector); } break; /* Line 1267 of yacc.c. */ #line 1704 "re_grammar.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; /*------------------------------------. | yyerrlab -- here on detecting error | `------------------------------------*/ yyerrlab: /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; #if ! YYERROR_VERBOSE yyerror (yyscanner, lex_env, YY_("syntax error")); #else { YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) { YYSIZE_T yyalloc = 2 * yysize; if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) yyalloc = YYSTACK_ALLOC_MAXIMUM; if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = (char *) YYSTACK_ALLOC (yyalloc); if (yymsg) yymsg_alloc = yyalloc; else { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; } } if (0 < yysize && yysize <= yymsg_alloc) { (void) yysyntax_error (yymsg, yystate, yychar); yyerror (yyscanner, lex_env, yymsg); } else { yyerror (yyscanner, lex_env, YY_("syntax error")); if (yysize != 0) goto yyexhaustedlab; } } #endif } if (yyerrstatus == 3) { /* If just tried and failed to reuse look-ahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval, yyscanner, lex_env); yychar = YYEMPTY; } } /* Else will try to reuse look-ahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers like GCC when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (/*CONSTCOND*/ 0) goto yyerrorlab; /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (yyn != YYPACT_NINF) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yydestruct ("Error: popping", yystos[yystate], yyvsp, yyscanner, lex_env); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } if (yyn == YYFINAL) YYACCEPT; *++yyvsp = yylval; /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturn; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturn; #ifndef yyoverflow /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (yyscanner, lex_env, YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif yyreturn: if (yychar != YYEOF && yychar != YYEMPTY) yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval, yyscanner, lex_env); /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", yystos[*yyssp], yyvsp, yyscanner, lex_env); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif /* Make sure YYID is used. */ return YYID (yyresult); } #line 292 "re_grammar.y" yara-2.0.0/libyara/re_grammar.h000066400000000000000000000051221225703323600163600ustar00rootroot00000000000000/* A Bison parser, made by GNU Bison 2.3. */ /* Skeleton interface for Bison's Yacc-like parsers in C Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. 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, 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. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { _CHAR_ = 258, _ANY_ = 259, _RANGE_ = 260, _CLASS_ = 261, _WORD_CHAR_ = 262, _NON_WORD_CHAR_ = 263, _SPACE_ = 264, _NON_SPACE_ = 265, _DIGIT_ = 266, _NON_DIGIT_ = 267 }; #endif /* Tokens. */ #define _CHAR_ 258 #define _ANY_ 259 #define _RANGE_ 260 #define _CLASS_ 261 #define _WORD_CHAR_ 262 #define _NON_WORD_CHAR_ 263 #define _SPACE_ 264 #define _NON_SPACE_ 265 #define _DIGIT_ 266 #define _NON_DIGIT_ 267 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE #line 67 "re_grammar.y" { int integer; uint32_t range; RE_NODE* re_node; uint8_t* class_vector; } /* Line 1529 of yacc.c. */ #line 80 "re_grammar.h" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 #endif yara-2.0.0/libyara/re_grammar.y000066400000000000000000000155221225703323600164060ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ %{ #include #include "mem.h" #include "re_lexer.h" #include "re.h" #include "config.h" #ifdef DMALLOC #include #endif #define YYERROR_VERBOSE #define YYDEBUG 0 #if YYDEBUG yydebug = 1; #endif #define ERROR_IF(x, error) \ if (x) \ { \ RE* re = yyget_extra(yyscanner); \ re->error_code = error; \ YYABORT; \ } \ #define DESTROY_NODE_IF(x, node) \ if (x) \ { \ yr_re_node_destroy(node); \ } \ %} %debug %name-prefix="re_yy" %pure-parser %parse-param {void *yyscanner} %parse-param {LEX_ENVIRONMENT *lex_env} %lex-param {yyscan_t yyscanner} %lex-param {LEX_ENVIRONMENT *lex_env} %union { int integer; uint32_t range; RE_NODE* re_node; uint8_t* class_vector; } %token _CHAR_ _ANY_ %token _RANGE_ %token _CLASS_ %token _WORD_CHAR_ %token _NON_WORD_CHAR_ %token _SPACE_ %token _NON_SPACE_ %token _DIGIT_ %token _NON_DIGIT_ %type alternative concatenation repeat single %destructor { yr_free($$); } _CLASS_ %destructor { yr_re_node_destroy($$); } alternative %destructor { yr_re_node_destroy($$); } concatenation %destructor { yr_re_node_destroy($$); } repeat %destructor { yr_re_node_destroy($$); } single %% re : alternative { RE* re = yyget_extra(yyscanner); re->root_node = $1; } | error ; alternative : concatenation { $$ = $1; } | alternative '|' concatenation { $$ = yr_re_node_create(RE_NODE_ALT, $1, $3); DESTROY_NODE_IF($$ == NULL, $1); DESTROY_NODE_IF($$ == NULL, $3); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); } | alternative '|' { RE_NODE* node; node = yr_re_node_create(RE_NODE_EMPTY, NULL, NULL); DESTROY_NODE_IF($$ == NULL, $1); ERROR_IF(node == NULL, ERROR_INSUFICIENT_MEMORY); $$ = yr_re_node_create(RE_NODE_ALT, $1, node); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); } ; concatenation : repeat { $$ = $1; } | concatenation repeat { $$ = yr_re_node_create(RE_NODE_CONCAT, $1, $2); DESTROY_NODE_IF($$ == NULL, $1); DESTROY_NODE_IF($$ == NULL, $2); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); } ; repeat : single '*' { $$ = yr_re_node_create(RE_NODE_STAR, $1, NULL); DESTROY_NODE_IF($$ == NULL, $1); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); } | single '*' '?' { $$ = yr_re_node_create(RE_NODE_STAR, $1, NULL); DESTROY_NODE_IF($$ == NULL, $1); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); $$->greedy = FALSE; } | single '+' { $$ = yr_re_node_create(RE_NODE_PLUS, $1, NULL); DESTROY_NODE_IF($$ == NULL, $1); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); } | single '+' '?' { $$ = yr_re_node_create(RE_NODE_PLUS, $1, NULL); DESTROY_NODE_IF($$ == NULL, $1); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); $$->greedy = FALSE; } | single '?' { $$ = yr_re_node_create(RE_NODE_RANGE, $1, NULL); DESTROY_NODE_IF($$ == NULL, $1); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); $$->start = 0; $$->end = 1; } | single '?' '?' { $$ = yr_re_node_create(RE_NODE_RANGE, $1, NULL); DESTROY_NODE_IF($$ == NULL, $1); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); $$->start = 0; $$->end = 1; $$->greedy = FALSE; } | single _RANGE_ { $$ = yr_re_node_create(RE_NODE_RANGE, $1, NULL); DESTROY_NODE_IF($$ == NULL, $1); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); $$->start = $2 & 0xFFFF;; $$->end = $2 >> 16;; } | single { $$ = $1; } | '^' { $$ = yr_re_node_create(RE_NODE_ANCHOR_START, NULL, NULL); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); } | '$' { $$ = yr_re_node_create(RE_NODE_ANCHOR_END, NULL, NULL); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); } ; single : '(' alternative ')' { $$ = $2; } | '.' { $$ = yr_re_node_create(RE_NODE_ANY, NULL, NULL); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); } | _CHAR_ { $$ = yr_re_node_create(RE_NODE_LITERAL, NULL, NULL); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); $$->value = $1; } | _WORD_CHAR_ { $$ = yr_re_node_create(RE_NODE_WORD_CHAR, NULL, NULL); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); } | _NON_WORD_CHAR_ { $$ = yr_re_node_create(RE_NODE_NON_WORD_CHAR, NULL, NULL); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); } | _SPACE_ { $$ = yr_re_node_create(RE_NODE_SPACE, NULL, NULL); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); } | _NON_SPACE_ { $$ = yr_re_node_create(RE_NODE_NON_SPACE, NULL, NULL); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); } | _DIGIT_ { $$ = yr_re_node_create(RE_NODE_DIGIT, NULL, NULL); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); } | _NON_DIGIT_ { $$ = yr_re_node_create(RE_NODE_NON_DIGIT, NULL, NULL); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); } | _CLASS_ { $$ = yr_re_node_create(RE_NODE_CLASS, NULL, NULL); ERROR_IF($$ == NULL, ERROR_INSUFICIENT_MEMORY); $$->class_vector = $1; } ; %% yara-2.0.0/libyara/re_lexer.c000066400000000000000000002011621225703323600160460ustar00rootroot00000000000000#line 2 "re_lexer.c" #line 4 "re_lexer.c" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 #define YY_FLEX_SUBMINOR_VERSION 35 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include #include #include #include /* end standard C headers. */ /* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 #endif #include typedef int8_t flex_int8_t; typedef uint8_t flex_uint8_t; typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; #endif /* ! C99 */ /* Limits of integral types. */ #ifndef INT8_MIN #define INT8_MIN (-128) #endif #ifndef INT16_MIN #define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX #define INT8_MAX (127) #endif #ifndef INT16_MAX #define INT16_MAX (32767) #endif #ifndef INT32_MAX #define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX #define UINT8_MAX (255U) #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #endif /* ! FLEXINT_H */ #ifdef __cplusplus /* The "const" storage-class-modifier is valid. */ #define YY_USE_CONST #else /* ! __cplusplus */ /* C99 requires __STDC__ to be defined as 1. */ #if defined (__STDC__) #define YY_USE_CONST #endif /* defined (__STDC__) */ #endif /* ! __cplusplus */ #ifdef YY_USE_CONST #define yyconst const #else #define yyconst #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an unsigned * integer for use as an array index. If the signed char is negative, * we want to instead treat it as an 8-bit unsigned char, hence the * double cast. */ #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* An opaque pointer. */ #ifndef YY_TYPEDEF_YY_SCANNER_T #define YY_TYPEDEF_YY_SCANNER_T typedef void* yyscan_t; #endif /* For convenience, these vars (plus the bison vars far below) are macros in the reentrant scanner. */ #define yyin yyg->yyin_r #define yyout yyg->yyout_r #define yyextra yyg->yyextra_r #define yyleng yyg->yyleng_r #define yytext yyg->yytext_r #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) #define yy_flex_debug yyg->yy_flex_debug_r /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN yyg->yy_start = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START ((yyg->yy_start - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE re_yyrestart(yyin ,yyscanner ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #define YY_BUF_SIZE 16384 #endif /* The state buf must be large enough to hold one state per character in the main buffer. */ #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires * access to the local variable yy_act. Since yyless() is a macro, it would break * existing scanners that call yyless() from OUTSIDE re_yylex. * One obvious solution it to make yy_act a global. I tried that, and saw * a 5% performance hit in a non-yylineno scanner, because yy_act is * normally declared as a register variable-- so it is not worth it. */ #define YY_LESS_LINENO(n) \ do { \ yy_size_t yyl;\ for ( yyl = n; yyl < yyleng; ++yyl )\ if ( yytext[yyl] == '\n' )\ --yylineno;\ }while(0) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = yyg->yy_hold_char; \ YY_RESTORE_YY_MORE_OFFSET \ yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; char *yy_ch_buf; /* input buffer */ char *yy_buf_pos; /* current position in input buffer */ /* Size of input buffer in bytes, not including room for EOB * characters. */ yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ int yy_is_our_buffer; /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ int yy_is_interactive; /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via re_yyrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] void re_yyrestart (FILE *input_file ,yyscan_t yyscanner ); void re_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); YY_BUFFER_STATE re_yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner ); void re_yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); void re_yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); void re_yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); void re_yypop_buffer_state (yyscan_t yyscanner ); static void re_yyensure_buffer_stack (yyscan_t yyscanner ); static void re_yy_load_buffer_state (yyscan_t yyscanner ); static void re_yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner ); #define YY_FLUSH_BUFFER re_yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner) YY_BUFFER_STATE re_yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); YY_BUFFER_STATE re_yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); YY_BUFFER_STATE re_yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner ); void *re_yyalloc (yy_size_t ,yyscan_t yyscanner ); void *re_yyrealloc (void *,yy_size_t ,yyscan_t yyscanner ); void re_yyfree (void * ,yyscan_t yyscanner ); #define yy_new_buffer re_yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ re_yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ re_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ re_yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ re_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ #define re_yywrap(n) 1 #define YY_SKIP_YYWRAP typedef unsigned char YY_CHAR; typedef int yy_state_type; #define yytext_ptr yytext_r static yy_state_type yy_get_previous_state (yyscan_t yyscanner ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner); static int yy_get_next_buffer (yyscan_t yyscanner ); static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ yyg->yytext_ptr = yy_bp; \ yyleng = (size_t) (yy_cp - yy_bp); \ yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; #define YY_NUM_RULES 28 #define YY_END_OF_BUFFER 29 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static yyconst flex_int16_t yy_accept[40] = { 0, 0, 0, 0, 0, 29, 7, 7, 27, 6, 15, 7, 26, 25, 16, 5, 3, 14, 13, 11, 9, 12, 10, 8, 0, 0, 0, 24, 22, 20, 18, 23, 21, 19, 4, 0, 1, 2, 17, 0 } ; static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 3, 3, 3, 3, 4, 5, 3, 1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 1, 1, 1, 9, 1, 1, 1, 10, 11, 12, 13, 1, 1, 1, 1, 1, 14, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15, 1, 1, 1, 16, 1, 1, 1, 17, 3, 18, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static yyconst flex_int32_t yy_meta[19] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1 } ; static yyconst flex_int16_t yy_base[43] = { 0, 0, 16, 3, 9, 32, 74, 74, 74, 10, 28, 0, 26, 38, 25, 74, 13, 1, 74, 74, 74, 74, 74, 74, 6, 51, 0, 74, 74, 74, 74, 74, 74, 74, 74, 10, 74, 74, 74, 74, 69, 71, 0 } ; static yyconst flex_int16_t yy_def[43] = { 0, 40, 40, 41, 41, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 42, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 0, 39, 39, 39 } ; static yyconst flex_int16_t yy_nxt[93] = { 0, 38, 7, 8, 24, 39, 25, 17, 39, 39, 9, 10, 35, 8, 13, 14, 35, 11, 7, 8, 13, 14, 15, 16, 36, 34, 9, 10, 36, 8, 26, 26, 39, 11, 17, 18, 19, 20, 39, 39, 39, 39, 21, 22, 23, 27, 28, 29, 39, 39, 30, 39, 31, 32, 33, 24, 39, 25, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 37, 6, 6, 12, 12, 5, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39 } ; static yyconst flex_int16_t yy_chk[93] = { 0, 42, 1, 1, 11, 0, 11, 17, 0, 0, 1, 1, 24, 1, 3, 3, 35, 1, 2, 2, 4, 4, 9, 9, 24, 16, 2, 2, 35, 2, 14, 12, 5, 2, 10, 10, 10, 10, 0, 0, 0, 0, 10, 10, 10, 13, 13, 13, 0, 0, 13, 0, 13, 13, 13, 25, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 40, 40, 41, 41, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39 } ; /* Table of booleans, true if rule could match eol. */ static yyconst flex_int32_t yy_rule_can_match_eol[29] = { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, }; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. */ #define REJECT reject_used_but_not_detected #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET #line 1 "re_lexer.l" /* Copyright (c) 2013. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ /* Lexical analyzer for regular expressions */ #line 20 "re_lexer.l" #include "yara.h" #include "atoms.h" #include "mem.h" #include "re.h" #include "re_grammar.h" #include "re_lexer.h" #include "utils.h" #include "config.h" #ifdef DMALLOC #include #endif #ifdef WIN32 #define snprintf _snprintf #endif uint8_t read_escaped_char(yyscan_t yyscanner); #define YY_NO_UNISTD_H 1 #line 525 "re_lexer.c" #define INITIAL 0 #define char_class 1 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way * down here because we want the user's section 1 to have been scanned first. * The user has a chance to override it with an option. */ #include #endif #ifndef YY_EXTRA_TYPE #define YY_EXTRA_TYPE void * #endif /* Holds the entire state of the reentrant scanner. */ struct yyguts_t { /* User-defined. Not touched by flex. */ YY_EXTRA_TYPE yyextra_r; /* The rest are the same as the globals declared in the non-reentrant scanner. */ FILE *yyin_r, *yyout_r; size_t yy_buffer_stack_top; /**< index of top of stack. */ size_t yy_buffer_stack_max; /**< capacity of stack. */ YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ char yy_hold_char; yy_size_t yy_n_chars; yy_size_t yyleng_r; char *yy_c_buf_p; int yy_init; int yy_start; int yy_did_buffer_switch_on_eof; int yy_start_stack_ptr; int yy_start_stack_depth; int *yy_start_stack; yy_state_type yy_last_accepting_state; char* yy_last_accepting_cpos; int yylineno_r; int yy_flex_debug_r; char *yytext_r; int yy_more_flag; int yy_more_len; YYSTYPE * yylval_r; }; /* end struct yyguts_t */ static int yy_init_globals (yyscan_t yyscanner ); /* This must go here because YYSTYPE and YYLTYPE are included * from bison output in section 1.*/ # define yylval yyg->yylval_r int re_yylex_init (yyscan_t* scanner); int re_yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int re_yylex_destroy (yyscan_t yyscanner ); int re_yyget_debug (yyscan_t yyscanner ); void re_yyset_debug (int debug_flag ,yyscan_t yyscanner ); YY_EXTRA_TYPE re_yyget_extra (yyscan_t yyscanner ); void re_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); FILE *re_yyget_in (yyscan_t yyscanner ); void re_yyset_in (FILE * in_str ,yyscan_t yyscanner ); FILE *re_yyget_out (yyscan_t yyscanner ); void re_yyset_out (FILE * out_str ,yyscan_t yyscanner ); yy_size_t re_yyget_leng (yyscan_t yyscanner ); char *re_yyget_text (yyscan_t yyscanner ); int re_yyget_lineno (yyscan_t yyscanner ); void re_yyset_lineno (int line_number ,yyscan_t yyscanner ); YYSTYPE * re_yyget_lval (yyscan_t yyscanner ); void re_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int re_yywrap (yyscan_t yyscanner ); #else extern int re_yywrap (yyscan_t yyscanner ); #endif #endif static void yyunput (int c,char *buf_ptr ,yyscan_t yyscanner); #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (yyscan_t yyscanner ); #else static int input (yyscan_t yyscanner ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #define YY_READ_BUF_SIZE 8192 #endif /* Copy whatever the last rule matched to the standard output. */ #ifndef ECHO /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ #define ECHO fwrite( yytext, yyleng, 1, yyout ) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, * is returned in "result". */ #ifndef YY_INPUT #define YY_INPUT(buf,result,max_size) \ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ yy_size_t n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(yyin); \ } \ }\ \ #endif /* No semi-colon after return; correct usage is to write "yyterminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */ #ifndef yyterminate #define yyterminate() return YY_NULL #endif /* Number of entries by which start-condition stack grows. */ #ifndef YY_START_STACK_INCR #define YY_START_STACK_INCR 25 #endif /* Report a fatal error. */ #ifndef YY_FATAL_ERROR #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner) #endif /* end tables serialization structures and prototypes */ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int re_yylex \ (YYSTYPE * yylval_param ,yyscan_t yyscanner); #define YY_DECL int re_yylex \ (YYSTYPE * yylval_param , yyscan_t yyscanner) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION #endif /* Code executed at the end of each rule. */ #ifndef YY_BREAK #define YY_BREAK break; #endif #define YY_RULE_SETUP \ YY_USER_ACTION /** The main scanner function which does all the work. */ YY_DECL { register yy_state_type yy_current_state; register char *yy_cp, *yy_bp; register int yy_act; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; #line 61 "re_lexer.l" #line 762 "re_lexer.c" yylval = yylval_param; if ( !yyg->yy_init ) { yyg->yy_init = 1; #ifdef YY_USER_INIT YY_USER_INIT; #endif if ( ! yyg->yy_start ) yyg->yy_start = 1; /* first start state */ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { re_yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = re_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); } re_yy_load_buffer_state(yyscanner ); } while ( 1 ) /* loops until end-of-file is reached */ { yy_cp = yyg->yy_c_buf_p; /* Support of yytext. */ *yy_cp = yyg->yy_hold_char; /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; yy_current_state = yyg->yy_start; yy_match: do { register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 40 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 74 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) { /* have to back up */ yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; yy_act = yy_accept[yy_current_state]; } YY_DO_BEFORE_ACTION; if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) { yy_size_t yyl; for ( yyl = 0; yyl < yyleng; ++yyl ) if ( yytext[yyl] == '\n' ) do{ yylineno++; yycolumn=0; }while(0) ; } do_action: /* This label is used only to access EOF actions. */ switch ( yy_act ) { /* beginning of action switch */ case 0: /* must back up */ /* undo the effects of YY_DO_BEFORE_ACTION */ *yy_cp = yyg->yy_hold_char; yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; goto yy_find_action; case 1: YY_RULE_SETUP #line 63 "re_lexer.l" { // Examples: {3,8} {0,5} {,5} {7,} int hi_bound; int lo_bound = atoi(yytext + 1); char* comma = strchr(yytext, ','); if (comma - yytext == strlen(yytext) - 2) // if comma is followed by the closing curly bracket // (example: {2,}) set high bound value to maximum. hi_bound = INT16_MAX; else hi_bound = atoi(comma + 1); if (hi_bound > INT16_MAX) { yyerror(yyscanner, lex_env, "repeat interval too large"); yyterminate(); } if (hi_bound < lo_bound) { yyerror(yyscanner, lex_env, "bad repeat interval"); yyterminate(); } yylval->range = (hi_bound << 16) | lo_bound; return _RANGE_; } YY_BREAK case 2: YY_RULE_SETUP #line 97 "re_lexer.l" { // Example: {10} int value = atoi(yytext + 1); if (value > INT16_MAX) { yyerror(yyscanner, lex_env, "repeat interval too large"); yyterminate(); } yylval->range = (value << 16) | value; return _RANGE_; } YY_BREAK case 3: YY_RULE_SETUP #line 115 "re_lexer.l" { // Start of a negated character class. Example: [^abcd] BEGIN(char_class); memset(LEX_ENV->class_vector, 0, 32); LEX_ENV->negated_class = TRUE; } YY_BREAK case 4: YY_RULE_SETUP #line 124 "re_lexer.l" { // Start of character negated class containing a ]. // Example: [^]abc] this must be interpreted as a class // not matching ], a, b, nor c BEGIN(char_class); memset(LEX_ENV->class_vector, 0, 32); LEX_ENV->negated_class = TRUE; LEX_ENV->class_vector[']' / 8] |= 1 << ']' % 8; } YY_BREAK case 5: YY_RULE_SETUP #line 137 "re_lexer.l" { // Start of character class containing a ]. // Example: []abc] this must be interpreted as a class // matching ], a, b, or c. BEGIN(char_class); memset(LEX_ENV->class_vector, 0, 32); LEX_ENV->negated_class = FALSE; LEX_ENV->class_vector[']' / 8] |= 1 << ']' % 8; } YY_BREAK case 6: YY_RULE_SETUP #line 150 "re_lexer.l" { // Start of character class. Example: [abcd] BEGIN(char_class); memset(LEX_ENV->class_vector, 0, 32); LEX_ENV->negated_class = FALSE; } YY_BREAK case 7: /* rule 7 can match eol */ YY_RULE_SETUP #line 160 "re_lexer.l" { // Any non-special character is passed as a CHAR token to the scanner. yylval->integer = yytext[0]; return _CHAR_; } YY_BREAK case 8: YY_RULE_SETUP #line 169 "re_lexer.l" { return _WORD_CHAR_; } YY_BREAK case 9: YY_RULE_SETUP #line 174 "re_lexer.l" { return _NON_WORD_CHAR_; } YY_BREAK case 10: YY_RULE_SETUP #line 179 "re_lexer.l" { return _SPACE_; } YY_BREAK case 11: YY_RULE_SETUP #line 184 "re_lexer.l" { return _NON_SPACE_; } YY_BREAK case 12: YY_RULE_SETUP #line 189 "re_lexer.l" { return _DIGIT_; } YY_BREAK case 13: YY_RULE_SETUP #line 194 "re_lexer.l" { return _NON_DIGIT_; } YY_BREAK case 14: YY_RULE_SETUP #line 199 "re_lexer.l" { yyerror(yyscanner, lex_env, "backreferences are not allowed"); yyterminate(); } YY_BREAK case 15: YY_RULE_SETUP #line 206 "re_lexer.l" { yylval->integer = read_escaped_char(yyscanner); return _CHAR_; } YY_BREAK case 16: YY_RULE_SETUP #line 212 "re_lexer.l" { // End of character class. int i; yylval->class_vector = yr_malloc(32); memcpy(yylval->class_vector, LEX_ENV->class_vector, 32); if (LEX_ENV->negated_class) { for(i = 0; i < 32; i++) yylval->class_vector[i] = ~yylval->class_vector[i]; } BEGIN(INITIAL); return _CLASS_; } YY_BREAK case 17: /* rule 17 can match eol */ YY_RULE_SETUP #line 232 "re_lexer.l" { // A range inside a character class. // [abc0-9] // ^- matching here int c; uint8_t start = yytext[0]; uint8_t end = yytext[2]; if (end == '\\') end = read_escaped_char(yyscanner); if (end < start) { yyerror(yyscanner, lex_env, "bad character range"); yyterminate(); } for (c = start; c <= end; c++) { LEX_ENV->class_vector[c / 8] |= 1 << c % 8; } } YY_BREAK case 18: YY_RULE_SETUP #line 259 "re_lexer.l" { LEX_ENV->class_vector[']' / 8] |= 1 << ']' % 8; } YY_BREAK case 19: YY_RULE_SETUP #line 265 "re_lexer.l" { int i; char word_chars[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03, 0xFE, 0xFF, 0xFF, 0x87, 0xFE, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; for (i = 0; i < 32; i++) LEX_ENV->class_vector[i] |= word_chars[i]; } YY_BREAK case 20: YY_RULE_SETUP #line 278 "re_lexer.l" { int i; char word_chars[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03, 0xFE, 0xFF, 0xFF, 0x87, 0xFE, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; for (i = 0; i < 32; i++) LEX_ENV->class_vector[i] |= ~word_chars[i]; } YY_BREAK case 21: YY_RULE_SETUP #line 291 "re_lexer.l" { LEX_ENV->class_vector[' ' / 8] |= 1 << ' ' % 8; LEX_ENV->class_vector['\t' / 8] |= 1 << '\t' % 8; } YY_BREAK case 22: YY_RULE_SETUP #line 298 "re_lexer.l" { int i; for (i = 0; i < 32; i++) LEX_ENV->class_vector[i] = 0xFF; LEX_ENV->class_vector[' ' / 8] &= ~(1 << ' ' % 8); LEX_ENV->class_vector['\t' / 8] &= ~(1 << '\t' % 8); } YY_BREAK case 23: YY_RULE_SETUP #line 310 "re_lexer.l" { char c; for (c = '0'; c <= '9'; c++) LEX_ENV->class_vector[c / 8] |= 1 << c % 8; } YY_BREAK case 24: YY_RULE_SETUP #line 319 "re_lexer.l" { int i; char c; for (i = 0; i < 32; i++) LEX_ENV->class_vector[i] = 0xFF; for (c = '0'; c <= '9'; c++) LEX_ENV->class_vector[c / 8] &= ~(1 << c % 8); } YY_BREAK case 25: YY_RULE_SETUP #line 332 "re_lexer.l" { uint8_t c = read_escaped_char(yyscanner); unput(c); } YY_BREAK case 26: /* rule 26 can match eol */ YY_RULE_SETUP #line 339 "re_lexer.l" { // A character class (i.e: [0-9a-f]) is represented by a 256-bits vector, // here we set to 1 the vector's bit corresponding to the input character. LEX_ENV->class_vector[yytext[0] / 8] |= 1 << yytext[0] % 8; } YY_BREAK case YY_STATE_EOF(char_class): #line 348 "re_lexer.l" { // End of regexp reached while scanning a character class. yyerror(yyscanner, lex_env, "missing terminating ] for character class"); yyterminate(); } YY_BREAK case 27: YY_RULE_SETUP #line 357 "re_lexer.l" { if (yytext[0] >= 32 && yytext[0] < 127) { return yytext[0]; } else { yyerror(yyscanner, lex_env, "non-ascii character"); yyterminate(); } } YY_BREAK case YY_STATE_EOF(INITIAL): #line 371 "re_lexer.l" { yyterminate(); } YY_BREAK case 28: YY_RULE_SETUP #line 376 "re_lexer.l" ECHO; YY_BREAK #line 1238 "re_lexer.c" case YY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1; /* Undo the effects of YY_DO_BEFORE_ACTION. */ *yy_cp = yyg->yy_hold_char; YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * re_yylex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } /* Note that here we test for yy_c_buf_p "<=" to the position * of the first EOB in the buffer, since yy_c_buf_p will * already have been incremented past the NUL character * (since all states make transitions on EOB to the * end-of-buffer state). Contrast this with the test * in input(). */ if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) { /* This was really a NUL. */ yy_state_type yy_next_state; yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( yyscanner ); /* Okay, we're now positioned to make the NUL * transition. We couldn't have * yy_get_previous_state() go ahead and do it * for us because it doesn't know how to deal * with the possibility of jamming (and we don't * want to build jamming into it because then it * will run more slowly). */ yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner); yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ yy_cp = ++yyg->yy_c_buf_p; yy_current_state = yy_next_state; goto yy_match; } else { yy_cp = yyg->yy_c_buf_p; goto yy_find_action; } } else switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_END_OF_FILE: { yyg->yy_did_buffer_switch_on_eof = 0; if ( re_yywrap(yyscanner ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * YY_NULL, it'll still work - another * YY_NULL will get returned. */ yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; } else { if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( yyscanner ); yy_cp = yyg->yy_c_buf_p; yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: yyg->yy_c_buf_p = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]; yy_current_state = yy_get_previous_state( yyscanner ); yy_cp = yyg->yy_c_buf_p; yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; goto yy_find_action; } break; } default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of re_yylex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; register char *source = yyg->yytext_ptr; register int number_to_move, i; int ret_val; if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; } else { /* We matched some text prior to the EOB, first * process it. */ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; else { yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ YY_BUFFER_STATE b = YY_CURRENT_BUFFER; int yy_c_buf_p_offset = (int) (yyg->yy_c_buf_p - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ re_yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = 0; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; } if ( num_to_read > YY_READ_BUF_SIZE ) num_to_read = YY_READ_BUF_SIZE; /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), yyg->yy_n_chars, num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } if ( yyg->yy_n_chars == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; re_yyrestart(yyin ,yyscanner); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) re_yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); } yyg->yy_n_chars += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; return ret_val; } /* yy_get_previous_state - get the state just before the EOB char was reached */ static yy_state_type yy_get_previous_state (yyscan_t yyscanner) { register yy_state_type yy_current_state; register char *yy_cp; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_current_state = yyg->yy_start; for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) { register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 40 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = yy_try_NUL_trans( current_state ); */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) { register int yy_is_jam; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ register char *yy_cp = yyg->yy_c_buf_p; register YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 40 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 39); return yy_is_jam ? 0 : yy_current_state; } static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner) { register char *yy_cp; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_cp = yyg->yy_c_buf_p; /* undo effects of setting up yytext */ *yy_cp = yyg->yy_hold_char; if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ register yy_size_t number_to_move = yyg->yy_n_chars + 2; register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; register char *source = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) *--dest = *--source; yy_cp += (int) (dest - source); yy_bp += (int) (dest - source); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) YY_FATAL_ERROR( "flex scanner push-back overflow" ); } *--yy_cp = (char) c; if ( c == '\n' ){ --yylineno; } yyg->yytext_ptr = yy_bp; yyg->yy_hold_char = *yy_cp; yyg->yy_c_buf_p = yy_cp; } #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (yyscan_t yyscanner) #else static int input (yyscan_t yyscanner) #endif { int c; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; *yyg->yy_c_buf_p = yyg->yy_hold_char; if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) { /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) /* This was really a NUL. */ *yyg->yy_c_buf_p = '\0'; else { /* need more input */ yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr; ++yyg->yy_c_buf_p; switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a * token and flags that we need to * try matching the token before * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ re_yyrestart(yyin ,yyscanner); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( re_yywrap(yyscanner ) ) return 0; if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(yyscanner); #else return input(yyscanner); #endif } case EOB_ACT_CONTINUE_SCAN: yyg->yy_c_buf_p = yyg->yytext_ptr + offset; break; } } } c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ yyg->yy_hold_char = *++yyg->yy_c_buf_p; if ( c == '\n' ) do{ yylineno++; yycolumn=0; }while(0) ; return c; } #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * @param yyscanner The scanner object. * @note This function does not reset the start condition to @c INITIAL . */ void re_yyrestart (FILE * input_file , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! YY_CURRENT_BUFFER ){ re_yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = re_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); } re_yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner); re_yy_load_buffer_state(yyscanner ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * @param yyscanner The scanner object. */ void re_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* TODO. We should be able to replace this entire function body * with * re_yypop_buffer_state(); * re_yypush_buffer_state(new_buffer); */ re_yyensure_buffer_stack (yyscanner); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } YY_CURRENT_BUFFER_LVALUE = new_buffer; re_yy_load_buffer_state(yyscanner ); /* We don't actually know whether we did this switch during * EOF (re_yywrap()) processing, but the only time this flag * is looked at is after re_yywrap() is called, so it's safe * to go ahead and always set it. */ yyg->yy_did_buffer_switch_on_eof = 1; } static void re_yy_load_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; yyg->yy_hold_char = *yyg->yy_c_buf_p; } /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * @param yyscanner The scanner object. * @return the allocated buffer state. */ YY_BUFFER_STATE re_yy_create_buffer (FILE * file, int size , yyscan_t yyscanner) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) re_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in re_yy_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) re_yyalloc(b->yy_buf_size + 2 ,yyscanner ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in re_yy_create_buffer()" ); b->yy_is_our_buffer = 1; re_yy_init_buffer(b,file ,yyscanner); return b; } /** Destroy the buffer. * @param b a buffer created with re_yy_create_buffer() * @param yyscanner The scanner object. */ void re_yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) re_yyfree((void *) b->yy_ch_buf ,yyscanner ); re_yyfree((void *) b ,yyscanner ); } #ifndef __cplusplus extern int isatty (int ); #endif /* __cplusplus */ /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a re_yyrestart() or at EOF. */ static void re_yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) { int oerrno = errno; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; re_yy_flush_buffer(b ,yyscanner); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then re_yy_init_buffer was _probably_ * called from re_yyrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * @param yyscanner The scanner object. */ void re_yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; b->yy_n_chars = 0; /* We always need two end-of-buffer characters. The first causes * a transition to the end-of-buffer state. The second causes * a jam in that state. */ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) re_yy_load_buffer_state(yyscanner ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * @param yyscanner The scanner object. */ void re_yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (new_buffer == NULL) return; re_yyensure_buffer_stack(yyscanner); /* This block is copied from re_yy_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) yyg->yy_buffer_stack_top++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from re_yy_switch_to_buffer. */ re_yy_load_buffer_state(yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * @param yyscanner The scanner object. */ void re_yypop_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!YY_CURRENT_BUFFER) return; re_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner); YY_CURRENT_BUFFER_LVALUE = NULL; if (yyg->yy_buffer_stack_top > 0) --yyg->yy_buffer_stack_top; if (YY_CURRENT_BUFFER) { re_yy_load_buffer_state(yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void re_yyensure_buffer_stack (yyscan_t yyscanner) { yy_size_t num_to_alloc; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!yyg->yy_buffer_stack) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; yyg->yy_buffer_stack = (struct yy_buffer_state**)re_yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in re_yyensure_buffer_stack()" ); memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; yyg->yy_buffer_stack_top = 0; return; } if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ /* Increase the buffer to prepare for a possible push. */ int grow_size = 8 /* arbitrary grow size */; num_to_alloc = yyg->yy_buffer_stack_max + grow_size; yyg->yy_buffer_stack = (struct yy_buffer_state**)re_yyrealloc (yyg->yy_buffer_stack, num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in re_yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE re_yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return 0; b = (YY_BUFFER_STATE) re_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in re_yy_scan_buffer()" ); b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = 0; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; re_yy_switch_to_buffer(b ,yyscanner ); return b; } /** Setup the input buffer state to scan a string. The next call to re_yylex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * @param yyscanner The scanner object. * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * re_yy_scan_bytes() instead. */ YY_BUFFER_STATE re_yy_scan_string (yyconst char * yystr , yyscan_t yyscanner) { return re_yy_scan_bytes(yystr,strlen(yystr) ,yyscanner); } /** Setup the input buffer state to scan the given bytes. The next call to re_yylex() will * scan from a @e copy of @a bytes. * @param bytes the byte buffer to scan * @param len the number of bytes in the buffer pointed to by @a bytes. * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE re_yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len , yyscan_t yyscanner) { YY_BUFFER_STATE b; char *buf; yy_size_t n, i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; buf = (char *) re_yyalloc(n ,yyscanner ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in re_yy_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = re_yy_scan_buffer(buf,n ,yyscanner); if ( ! b ) YY_FATAL_ERROR( "bad buffer in re_yy_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) { (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = yyg->yy_hold_char; \ yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ yyg->yy_hold_char = *yyg->yy_c_buf_p; \ *yyg->yy_c_buf_p = '\0'; \ yyleng = yyless_macro_arg; \ } \ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the user-defined data for this scanner. * @param yyscanner The scanner object. */ YY_EXTRA_TYPE re_yyget_extra (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyextra; } /** Get the current line number. * @param yyscanner The scanner object. */ int re_yyget_lineno (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yylineno; } /** Get the current column number. * @param yyscanner The scanner object. */ int re_yyget_column (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yycolumn; } /** Get the input stream. * @param yyscanner The scanner object. */ FILE *re_yyget_in (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyin; } /** Get the output stream. * @param yyscanner The scanner object. */ FILE *re_yyget_out (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyout; } /** Get the length of the current token. * @param yyscanner The scanner object. */ yy_size_t re_yyget_leng (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyleng; } /** Get the current token. * @param yyscanner The scanner object. */ char *re_yyget_text (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yytext; } /** Set the user-defined data. This data is never touched by the scanner. * @param user_defined The data to be associated with this scanner. * @param yyscanner The scanner object. */ void re_yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyextra = user_defined ; } /** Set the current line number. * @param line_number * @param yyscanner The scanner object. */ void re_yyset_lineno (int line_number , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* lineno is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) yy_fatal_error( "re_yyset_lineno called with no buffer" , yyscanner); yylineno = line_number; } /** Set the current column. * @param line_number * @param yyscanner The scanner object. */ void re_yyset_column (int column_no , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* column is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) yy_fatal_error( "re_yyset_column called with no buffer" , yyscanner); yycolumn = column_no; } /** Set the input stream. This does not discard the current * input buffer. * @param in_str A readable stream. * @param yyscanner The scanner object. * @see re_yy_switch_to_buffer */ void re_yyset_in (FILE * in_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyin = in_str ; } void re_yyset_out (FILE * out_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyout = out_str ; } int re_yyget_debug (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yy_flex_debug; } void re_yyset_debug (int bdebug , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_flex_debug = bdebug ; } /* Accessor methods for yylval and yylloc */ YYSTYPE * re_yyget_lval (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yylval; } void re_yyset_lval (YYSTYPE * yylval_param , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yylval = yylval_param; } /* User-visible API */ /* re_yylex_init is special because it creates the scanner itself, so it is * the ONLY reentrant function that doesn't take the scanner as the last argument. * That's why we explicitly handle the declaration, instead of using our macros. */ int re_yylex_init(yyscan_t* ptr_yy_globals) { if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) re_yyalloc ( sizeof( struct yyguts_t ), NULL ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); return yy_init_globals ( *ptr_yy_globals ); } /* re_yylex_init_extra has the same functionality as re_yylex_init, but follows the * convention of taking the scanner as the last argument. Note however, that * this is a *pointer* to a scanner, as it will be allocated by this call (and * is the reason, too, why this function also must handle its own declaration). * The user defined value in the first argument will be available to re_yyalloc in * the yyextra field. */ int re_yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals ) { struct yyguts_t dummy_yyguts; re_yyset_extra (yy_user_defined, &dummy_yyguts); if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) re_yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); re_yyset_extra (yy_user_defined, *ptr_yy_globals); return yy_init_globals ( *ptr_yy_globals ); } static int yy_init_globals (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Initialization is the same as for the non-reentrant scanner. * This function is called from re_yylex_destroy(), so don't allocate here. */ yyg->yy_buffer_stack = 0; yyg->yy_buffer_stack_top = 0; yyg->yy_buffer_stack_max = 0; yyg->yy_c_buf_p = (char *) 0; yyg->yy_init = 0; yyg->yy_start = 0; yyg->yy_start_stack_ptr = 0; yyg->yy_start_stack_depth = 0; yyg->yy_start_stack = NULL; /* Defined in main.c */ #ifdef YY_STDINIT yyin = stdin; yyout = stdout; #else yyin = (FILE *) 0; yyout = (FILE *) 0; #endif /* For future reference: Set errno on error, since we are called by * re_yylex_init() */ return 0; } /* re_yylex_destroy is for both reentrant and non-reentrant scanners. */ int re_yylex_destroy (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ re_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner ); YY_CURRENT_BUFFER_LVALUE = NULL; re_yypop_buffer_state(yyscanner); } /* Destroy the stack itself. */ re_yyfree(yyg->yy_buffer_stack ,yyscanner); yyg->yy_buffer_stack = NULL; /* Destroy the start condition stack. */ re_yyfree(yyg->yy_start_stack ,yyscanner ); yyg->yy_start_stack = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * re_yylex() is called, initialization will occur. */ yy_init_globals( yyscanner); /* Destroy the main struct (reentrant only). */ re_yyfree ( yyscanner , yyscanner ); yyscanner = NULL; return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) { register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) { register int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *re_yyalloc (yy_size_t size , yyscan_t yyscanner) { return (void *) malloc( size ); } void *re_yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) { /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return (void *) realloc( (char *) ptr, size ); } void re_yyfree (void * ptr , yyscan_t yyscanner) { free( (char *) ptr ); /* see re_yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" #line 376 "re_lexer.l" uint8_t read_escaped_char(yyscan_t yyscanner) { int result; char hex[3]; int c = input(yyscanner); switch(c) { case 'x': hex[0] = input(yyscanner); hex[1] = input(yyscanner); hex[2] = '\0'; sscanf(hex, "%x", &result); break; case 'n': result = '\n'; break; case 't': result = '\t'; break; case 'r': result = '\r'; break; case 'f': result = '\f'; break; case 'a': result = '\a'; break; default: result = c; } return result; } #ifdef WIN32 extern DWORD recovery_state_key; #else extern pthread_key_t recovery_state_key; #endif void yyfatal( yyscan_t yyscanner, const char *error_message) { jmp_buf* recovery_state; #ifdef WIN32 recovery_state = TlsGetValue(recovery_state_key) ; #else recovery_state = pthread_getspecific(recovery_state_key); #endif longjmp(*recovery_state, 1); } void yyerror( yyscan_t yyscanner, LEX_ENVIRONMENT* lex_env, const char *error_message) { if (lex_env->last_error_message == NULL) { lex_env->last_error_message = yr_strdup(error_message); } } int yr_parse_re_string( const char* re_string, RE** re) { yyscan_t yyscanner; jmp_buf recovery_state; LEX_ENVIRONMENT lex_env; lex_env.last_error_message = NULL; FAIL_ON_ERROR(yr_re_create(re)); #ifdef WIN32 TlsSetValue(recovery_state_key, (LPVOID) &recovery_state); #else pthread_setspecific(recovery_state_key, (void*) &recovery_state); #endif if (setjmp(recovery_state) != 0) return ERROR_INTERNAL_FATAL_ERROR; re_yylex_init(&yyscanner); re_yyset_extra(*re,yyscanner); re_yy_scan_string(re_string,yyscanner); yyparse(yyscanner, &lex_env); re_yylex_destroy(yyscanner); if (lex_env.last_error_message != NULL) { (*re)->error_message = lex_env.last_error_message; return ERROR_INVALID_REGULAR_EXPRESSION; } return (*re)->error_code; } yara-2.0.0/libyara/re_lexer.h000066400000000000000000000035511225703323600160550ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #include "re.h" #include "re_grammar.h" #define yyparse re_yyparse #define yylex re_yylex #define yyerror re_yyerror #define yyfatal re_yyfatal #define yychar re_yychar #define yydebug re_yydebug #define yynerrs re_yynerrs #define yyget_extra re_yyget_extra #define yyget_lineno re_yyget_lineno #ifndef YY_TYPEDEF_YY_SCANNER_T #define YY_TYPEDEF_YY_SCANNER_T typedef void* yyscan_t; #endif #define YY_EXTRA_TYPE RE* #define YY_USE_CONST typedef struct _LEX_ENVIRONMENT { int negated_class; uint8_t class_vector[32]; const char* last_error_message; } LEX_ENVIRONMENT; #define LEX_ENV ((LEX_ENVIRONMENT*) lex_env) #define YY_FATAL_ERROR(msg) re_yyfatal(yyscanner, msg) #define YY_DECL int re_yylex \ (YYSTYPE * yylval_param , yyscan_t yyscanner, LEX_ENVIRONMENT* lex_env) YY_EXTRA_TYPE yyget_extra( yyscan_t yyscanner); int yylex( YYSTYPE* yylval_param, yyscan_t yyscanner, LEX_ENVIRONMENT* lex_env); int yyparse( void *yyscanner, LEX_ENVIRONMENT *lex_env); void yyerror( yyscan_t yyscanner, LEX_ENVIRONMENT* lex_env, const char *error_message); void yyfatal( yyscan_t yyscanner, const char *error_message); int yr_parse_re_string( const char* re_string, RE** re); yara-2.0.0/libyara/re_lexer.l000066400000000000000000000203351225703323600160600ustar00rootroot00000000000000/* Copyright (c) 2013. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ /* Lexical analyzer for regular expressions */ %{ #include "yara.h" #include "atoms.h" #include "mem.h" #include "re.h" #include "re_grammar.h" #include "re_lexer.h" #include "utils.h" #include "config.h" #ifdef DMALLOC #include #endif #ifdef WIN32 #define snprintf _snprintf #endif uint8_t read_escaped_char(yyscan_t yyscanner); %} %option reentrant bison-bridge %option noyywrap %option nounistd %option yylineno %option prefix="re_yy" %option outfile="lex.yy.c" %option verbose %option warn %x char_class digit [0-9] hex_digit [0-9a-fA-F] %% \{{digit}*,{digit}*\} { // Examples: {3,8} {0,5} {,5} {7,} int hi_bound; int lo_bound = atoi(yytext + 1); char* comma = strchr(yytext, ','); if (comma - yytext == strlen(yytext) - 2) // if comma is followed by the closing curly bracket // (example: {2,}) set high bound value to maximum. hi_bound = INT16_MAX; else hi_bound = atoi(comma + 1); if (hi_bound > INT16_MAX) { yyerror(yyscanner, lex_env, "repeat interval too large"); yyterminate(); } if (hi_bound < lo_bound) { yyerror(yyscanner, lex_env, "bad repeat interval"); yyterminate(); } yylval->range = (hi_bound << 16) | lo_bound; return _RANGE_; } \{{digit}+\} { // Example: {10} int value = atoi(yytext + 1); if (value > INT16_MAX) { yyerror(yyscanner, lex_env, "repeat interval too large"); yyterminate(); } yylval->range = (value << 16) | value; return _RANGE_; } \[\^ { // Start of a negated character class. Example: [^abcd] BEGIN(char_class); memset(LEX_ENV->class_vector, 0, 32); LEX_ENV->negated_class = TRUE; } \[\^\] { // Start of character negated class containing a ]. // Example: [^]abc] this must be interpreted as a class // not matching ], a, b, nor c BEGIN(char_class); memset(LEX_ENV->class_vector, 0, 32); LEX_ENV->negated_class = TRUE; LEX_ENV->class_vector[']' / 8] |= 1 << ']' % 8; } \[\] { // Start of character class containing a ]. // Example: []abc] this must be interpreted as a class // matching ], a, b, or c. BEGIN(char_class); memset(LEX_ENV->class_vector, 0, 32); LEX_ENV->negated_class = FALSE; LEX_ENV->class_vector[']' / 8] |= 1 << ']' % 8; } \[ { // Start of character class. Example: [abcd] BEGIN(char_class); memset(LEX_ENV->class_vector, 0, 32); LEX_ENV->negated_class = FALSE; } [^\\\[\(\)\|\$\.\^\+\*\?] { // Any non-special character is passed as a CHAR token to the scanner. yylval->integer = yytext[0]; return _CHAR_; } \\w { return _WORD_CHAR_; } \\W { return _NON_WORD_CHAR_; } \\s { return _SPACE_; } \\S { return _NON_SPACE_; } \\d { return _DIGIT_; } \\D { return _NON_DIGIT_; } \\{digit}+ { yyerror(yyscanner, lex_env, "backreferences are not allowed"); yyterminate(); } \\ { yylval->integer = read_escaped_char(yyscanner); return _CHAR_; } \] { // End of character class. int i; yylval->class_vector = yr_malloc(32); memcpy(yylval->class_vector, LEX_ENV->class_vector, 32); if (LEX_ENV->negated_class) { for(i = 0; i < 32; i++) yylval->class_vector[i] = ~yylval->class_vector[i]; } BEGIN(INITIAL); return _CLASS_; } [^\\]\-[^]] { // A range inside a character class. // [abc0-9] // ^- matching here int c; uint8_t start = yytext[0]; uint8_t end = yytext[2]; if (end == '\\') end = read_escaped_char(yyscanner); if (end < start) { yyerror(yyscanner, lex_env, "bad character range"); yyterminate(); } for (c = start; c <= end; c++) { LEX_ENV->class_vector[c / 8] |= 1 << c % 8; } } \\] { LEX_ENV->class_vector[']' / 8] |= 1 << ']' % 8; } \\w { int i; char word_chars[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03, 0xFE, 0xFF, 0xFF, 0x87, 0xFE, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; for (i = 0; i < 32; i++) LEX_ENV->class_vector[i] |= word_chars[i]; } \\W { int i; char word_chars[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03, 0xFE, 0xFF, 0xFF, 0x87, 0xFE, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; for (i = 0; i < 32; i++) LEX_ENV->class_vector[i] |= ~word_chars[i]; } \\s { LEX_ENV->class_vector[' ' / 8] |= 1 << ' ' % 8; LEX_ENV->class_vector['\t' / 8] |= 1 << '\t' % 8; } \\S { int i; for (i = 0; i < 32; i++) LEX_ENV->class_vector[i] = 0xFF; LEX_ENV->class_vector[' ' / 8] &= ~(1 << ' ' % 8); LEX_ENV->class_vector['\t' / 8] &= ~(1 << '\t' % 8); } \\d { char c; for (c = '0'; c <= '9'; c++) LEX_ENV->class_vector[c / 8] |= 1 << c % 8; } \\D { int i; char c; for (i = 0; i < 32; i++) LEX_ENV->class_vector[i] = 0xFF; for (c = '0'; c <= '9'; c++) LEX_ENV->class_vector[c / 8] &= ~(1 << c % 8); } \\ { uint8_t c = read_escaped_char(yyscanner); unput(c); } (.|\n) { // A character class (i.e: [0-9a-f]) is represented by a 256-bits vector, // here we set to 1 the vector's bit corresponding to the input character. LEX_ENV->class_vector[yytext[0] / 8] |= 1 << yytext[0] % 8; } <> { // End of regexp reached while scanning a character class. yyerror(yyscanner, lex_env, "missing terminating ] for character class"); yyterminate(); } . { if (yytext[0] >= 32 && yytext[0] < 127) { return yytext[0]; } else { yyerror(yyscanner, lex_env, "non-ascii character"); yyterminate(); } } <> { yyterminate(); } %% uint8_t read_escaped_char(yyscan_t yyscanner) { int result; char hex[3]; int c = input(yyscanner); switch(c) { case 'x': hex[0] = input(yyscanner); hex[1] = input(yyscanner); hex[2] = '\0'; sscanf(hex, "%x", &result); break; case 'n': result = '\n'; break; case 't': result = '\t'; break; case 'r': result = '\r'; break; case 'f': result = '\f'; break; case 'a': result = '\a'; break; default: result = c; } return result; } #ifdef WIN32 extern DWORD recovery_state_key; #else extern pthread_key_t recovery_state_key; #endif void yyfatal( yyscan_t yyscanner, const char *error_message) { jmp_buf* recovery_state; #ifdef WIN32 recovery_state = TlsGetValue(recovery_state_key) ; #else recovery_state = pthread_getspecific(recovery_state_key); #endif longjmp(*recovery_state, 1); } void yyerror( yyscan_t yyscanner, LEX_ENVIRONMENT* lex_env, const char *error_message) { if (lex_env->last_error_message == NULL) { lex_env->last_error_message = yr_strdup(error_message); } } int yr_parse_re_string( const char* re_string, RE** re) { yyscan_t yyscanner; jmp_buf recovery_state; LEX_ENVIRONMENT lex_env; lex_env.last_error_message = NULL; FAIL_ON_ERROR(yr_re_create(re)); #ifdef WIN32 TlsSetValue(recovery_state_key, (LPVOID) &recovery_state); #else pthread_setspecific(recovery_state_key, (void*) &recovery_state); #endif if (setjmp(recovery_state) != 0) return ERROR_INTERNAL_FATAL_ERROR; yylex_init(&yyscanner); yyset_extra(*re, yyscanner); yy_scan_string(re_string, yyscanner); yyparse(yyscanner, &lex_env); yylex_destroy(yyscanner); if (lex_env.last_error_message != NULL) { (*re)->error_message = lex_env.last_error_message; return ERROR_INVALID_REGULAR_EXPRESSION; } return (*re)->error_code; } yara-2.0.0/libyara/rules.c000066400000000000000000000704061225703323600154000ustar00rootroot00000000000000 /* Copyright (c) 2013. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #include #include #include #include #include "ahocorasick.h" #include "arena.h" #include "exec.h" #include "exefiles.h" #include "filemap.h" #include "mem.h" #include "proc.h" #include "re.h" #include "utils.h" #include "yara.h" typedef struct _CALLBACK_ARGS { YR_STRING* string; YR_ARENA* matches_arena; int forward_matches; uint8_t* data; int data_size; int full_word; int tidx; } CALLBACK_ARGS; #define inline inline int _yr_scan_compare( uint8_t* data, int data_size, uint8_t* string, int string_length) { uint8_t* s1 = data; uint8_t* s2 = string; int i = 0; if (data_size < string_length) return 0; while (i < string_length && *s1++ == *s2++) i++; return ((i == string_length) ? i : 0); } inline int _yr_scan_icompare( uint8_t* data, int data_size, uint8_t* string, int string_length) { uint8_t* s1 = data; uint8_t* s2 = string; int i = 0; if (data_size < string_length) return 0; while (i < string_length && lowercase[*s1++] == lowercase[*s2++]) i++; return ((i == string_length) ? i : 0); } inline int _yr_scan_wcompare( uint8_t* data, int data_size, uint8_t* string, int string_length) { uint8_t* s1 = data; uint8_t* s2 = string; int i = 0; if (data_size < string_length * 2) return 0; while (i < string_length && *s1 == *s2) { s1+=2; s2++; i++; } return ((i == string_length) ? i * 2 : 0); } inline int _yr_scan_wicompare( uint8_t* data, int data_size, uint8_t* string, int string_length) { uint8_t* s1 = data; uint8_t* s2 = string; int i = 0; if (data_size < string_length * 2) return 0; while (i < string_length && lowercase[*s1] == lowercase[*s2]) { s1+=2; s2++; i++; } return ((i == string_length) ? i * 2 : 0); } // // _yr_scan_fast_hex_re_exec // // This function is a replacement for yr_re_exec in some particular cases of // regular expressions where a faster algorithm can be used. These regular // expressions are those derived from hex strings not containing OR (|) // operations. The following hex strings would apply: // // { 01 ?? 03 04 05 } // { 01 02 0? 04 04 } // { 01 02 [1] 04 05 } // { 01 02 [2-6] 04 06 } // // In order to match these strings we don't need to use the general case // matching algorithm (yr_re_exec), instead we can take advance of the // characteristics of the code generated for this kind of strings and do the // matching in a faster way. // #define MAX_FAST_HEX_RE_STACK 300 int _yr_scan_fast_hex_re_exec( uint8_t* code, uint8_t* input, size_t input_size, int flags, RE_MATCH_CALLBACK_FUNC callback, void* callback_args) { uint8_t* code_stack[MAX_FAST_HEX_RE_STACK]; uint8_t* input_stack[MAX_FAST_HEX_RE_STACK]; int matches_stack[MAX_FAST_HEX_RE_STACK]; int sp = 0; uint8_t* ip = code; uint8_t* current_input = input; uint8_t* next_input; uint8_t mask; uint8_t value; int i; int matches; int stop; int increment; increment = flags & RE_FLAGS_BACKWARDS ? -1 : 1; code_stack[sp] = code; input_stack[sp] = input; matches_stack[sp] = 0; sp++; while (sp > 0) { sp--; ip = code_stack[sp]; current_input = input_stack[sp]; matches = matches_stack[sp]; stop = FALSE; while(!stop) { if (flags & RE_FLAGS_BACKWARDS) { if (current_input <= input - input_size) break; } else { if (current_input >= input + input_size) break; } switch(*ip) { case RE_OPCODE_LITERAL: if (*current_input == *(ip + 1)) { matches++; current_input += increment; ip += 2; } else { stop = TRUE; } break; case RE_OPCODE_MASKED_LITERAL: value = *(int16_t*)(ip + 1) & 0xFF; mask = *(int16_t*)(ip + 1) >> 8; if ((*current_input & mask) == value) { matches++; current_input += increment; ip += 3; } else { stop = TRUE; } break; case RE_OPCODE_ANY: matches++; current_input += increment; ip += 1; break; case RE_OPCODE_PUSH: for (i = *(uint16_t*)(ip + 1); i > 0; i--) { if (flags & RE_FLAGS_BACKWARDS) { next_input = current_input - i; if (next_input <= input - input_size) continue; } else { next_input = current_input + i; if (next_input >= input + input_size) continue; } if ( *(ip + 11) != RE_OPCODE_LITERAL || (*(ip + 11) == RE_OPCODE_LITERAL && *(ip + 12) == *next_input)) { assert(sp < MAX_FAST_HEX_RE_STACK); code_stack[sp] = ip + 11; input_stack[sp] = next_input; matches_stack[sp] = matches + i; sp++; } } ip += 11; break; default: assert(FALSE); } if (*ip == RE_OPCODE_MATCH) { if (flags & RE_FLAGS_EXHAUSTIVE) { callback( flags & RE_FLAGS_BACKWARDS ? current_input + 1 : input, matches, flags, callback_args); stop = TRUE; } else { return matches; } } } } return -1; } void _yr_scan_update_match_chain_length( int tidx, YR_STRING* string, YR_MATCH* match_to_update, int chain_length) { YR_MATCH* match; size_t ending_offset; match_to_update->chain_length = chain_length; if (string->chained_to != NULL) match = string->chained_to->unconfirmed_matches[tidx].head; else match = NULL; while (match != NULL) { ending_offset = match->offset + match->length; if (ending_offset + string->chain_gap_max >= match_to_update->offset && ending_offset + string->chain_gap_min <= match_to_update->offset) { _yr_scan_update_match_chain_length( tidx, string->chained_to, match, chain_length + 1); } match = match->next; } } void _yr_scan_add_match_to_list( YR_MATCH* match, YR_MATCHES* matches_list) { YR_MATCH* insertion_point = matches_list->tail; while (insertion_point != NULL) { if (match->offset == insertion_point->offset) { insertion_point->length = match->length; return; } if (match->offset > insertion_point->offset) break; insertion_point = insertion_point->prev; } match->prev = insertion_point; if (insertion_point != NULL) { match->next = insertion_point->next; insertion_point->next = match; } else { match->next = matches_list->head; matches_list->head = match; } if (match->next != NULL) match->next->prev = match; else matches_list->tail = match; } void _yr_scan_remove_match_from_list( YR_MATCH* match, YR_MATCHES* matches_list) { if (match->prev != NULL) match->prev->next = match->next; if (match->next != NULL) match->next->prev = match->prev; if (matches_list->head == match) matches_list->head = match->next; if (matches_list->tail == match) matches_list->tail = match->prev; match->next = NULL; match->prev = NULL; } int _yr_scan_verify_chained_string_match( YR_ARENA* matches_arena, YR_STRING* matching_string, uint8_t* match_data, size_t match_offset, int32_t match_length, int tidx) { YR_STRING* string; YR_MATCH* match; YR_MATCH* next_match; YR_MATCH* new_match; size_t lower_offset; size_t ending_offset; int32_t full_chain_length; int add_match = FALSE; int result; if (matching_string->chained_to == NULL) { add_match = TRUE; } else { if (matching_string->unconfirmed_matches[tidx].head != NULL) lower_offset = matching_string->unconfirmed_matches[tidx].head->offset; else lower_offset = match_offset; match = matching_string->chained_to->unconfirmed_matches[tidx].head; while (match != NULL) { next_match = match->next; ending_offset = match->offset + match->length; if (ending_offset + matching_string->chain_gap_max < lower_offset) { _yr_scan_remove_match_from_list( match, &matching_string->chained_to->unconfirmed_matches[tidx]); } else { if (ending_offset + matching_string->chain_gap_max >= match_offset && ending_offset + matching_string->chain_gap_min <= match_offset) { add_match = TRUE; break; } } match = next_match; } } if (add_match) { if (STRING_IS_CHAIN_TAIL(matching_string)) { match = matching_string->chained_to->unconfirmed_matches[tidx].head; while (match != NULL) { ending_offset = match->offset + match->length; if (ending_offset + matching_string->chain_gap_max >= match_offset && ending_offset + matching_string->chain_gap_min <= match_offset) { _yr_scan_update_match_chain_length( tidx, matching_string->chained_to, match, 1); } match = match->next; } full_chain_length = 0; string = matching_string; while(string->chained_to != NULL) { full_chain_length++; string = string->chained_to; } // "string" points now to the head of the strings chain match = string->unconfirmed_matches[tidx].head; while (match != NULL) { next_match = match->next; if (match->chain_length == full_chain_length) { _yr_scan_remove_match_from_list( match, &string->unconfirmed_matches[tidx]); match->length = match_offset - match->offset + match_length; match->data = match_data - match_offset + match->offset; match->prev = NULL; match->next = NULL; _yr_scan_add_match_to_list( match, &string->matches[tidx]); } match = next_match; } } else { result = yr_arena_allocate_memory( matches_arena, sizeof(YR_MATCH), (void**) &new_match); if (result != ERROR_SUCCESS) return result; new_match->offset = match_offset; new_match->length = match_length; new_match->data = match_data; new_match->prev = NULL; new_match->next = NULL; _yr_scan_add_match_to_list( new_match, &matching_string->unconfirmed_matches[tidx]); } } return ERROR_SUCCESS; } int _yr_scan_match_callback( uint8_t* match_data, int32_t match_length, int flags, void* args) { CALLBACK_ARGS* callback_args = args; YR_STRING* string = callback_args->string; YR_MATCH* new_match; int character_size; int result = ERROR_SUCCESS; int tidx = callback_args->tidx; size_t match_offset = match_data - callback_args->data; if (flags & RE_FLAGS_WIDE) character_size = 2; else character_size = 1; // match_length > 0 means that we have found some backward matching // but backward matching overlaps one character with forward matching, // we decrement match_length here to compensate that overlapping. if (match_length > 0) match_length -= character_size; // total match length is the sum of backward and forward matches. match_length = match_length + callback_args->forward_matches; if (callback_args->full_word) { if (flags & RE_FLAGS_WIDE) { if (match_offset >= 2 && *(match_data - 1) == 0 && isalnum(*(match_data - 2))) return ERROR_SUCCESS; if (match_offset + match_length + 1 < callback_args->data_size && *(match_data + match_length + 1) == 0 && isalnum(*(match_data + match_length))) return ERROR_SUCCESS; } else { if (match_offset >= 1 && isalnum(*(match_data - 1))) return ERROR_SUCCESS; if (match_offset + match_length < callback_args->data_size && isalnum(*(match_data + match_length))) return ERROR_SUCCESS; } } if (STRING_IS_CHAIN_PART(string)) { result = _yr_scan_verify_chained_string_match( callback_args->matches_arena, string, match_data, match_offset, match_length, tidx); } else { result = yr_arena_allocate_memory( callback_args->matches_arena, sizeof(YR_MATCH), (void**) &new_match); if (result == ERROR_SUCCESS) { new_match->offset = match_offset; new_match->length = match_length; new_match->data = match_data; new_match->prev = NULL; new_match->next = NULL; _yr_scan_add_match_to_list( new_match, &string->matches[tidx]); } } return result; } typedef int (*RE_EXEC_FUNC)( uint8_t* code, uint8_t* input, size_t input_size, int flags, RE_MATCH_CALLBACK_FUNC callback, void* callback_args); int _yr_scan_verify_re_match( YR_AC_MATCH* ac_match, uint8_t* data, size_t data_size, size_t offset, YR_ARENA* matches_arena) { CALLBACK_ARGS callback_args; RE_EXEC_FUNC exec; int forward_matches = -1; int flags = 0; if (STRING_IS_FAST_HEX_REGEXP(ac_match->string)) exec = _yr_scan_fast_hex_re_exec; else exec = yr_re_exec; if (STRING_IS_NO_CASE(ac_match->string)) flags |= RE_FLAGS_NO_CASE; if (STRING_IS_HEX(ac_match->string)) flags |= RE_FLAGS_DOT_ALL; if (STRING_IS_ASCII(ac_match->string)) { forward_matches = exec( ac_match->forward_code, data + offset, data_size - offset, flags, NULL, NULL); } if (STRING_IS_WIDE(ac_match->string) && forward_matches < 0) { flags |= RE_FLAGS_WIDE; forward_matches = exec( ac_match->forward_code, data + offset, data_size - offset, flags, NULL, NULL); } if (forward_matches < 0) return ERROR_SUCCESS; if (forward_matches == 0 && ac_match->backward_code == NULL) return ERROR_SUCCESS; callback_args.string = ac_match->string; callback_args.data = data; callback_args.data_size = data_size; callback_args.matches_arena = matches_arena; callback_args.forward_matches = forward_matches; callback_args.full_word = STRING_IS_FULL_WORD(ac_match->string); callback_args.tidx = yr_get_tidx(); if (ac_match->backward_code != NULL) { exec( ac_match->backward_code, data + offset, offset + 1, flags | RE_FLAGS_BACKWARDS | RE_FLAGS_EXHAUSTIVE, _yr_scan_match_callback, (void*) &callback_args); } else { _yr_scan_match_callback( data + offset, 0, flags, &callback_args); } return ERROR_SUCCESS; } int _yr_scan_verify_literal_match( YR_AC_MATCH* ac_match, uint8_t* data, size_t data_size, size_t offset, YR_ARENA* matches_arena) { int flags = 0; int forward_matches = 0; CALLBACK_ARGS callback_args; YR_STRING* string = ac_match->string; if (STRING_FITS_IN_ATOM(string)) { if (STRING_IS_WIDE(string)) forward_matches = string->length * 2; else forward_matches = string->length; } else if (STRING_IS_NO_CASE(string)) { flags |= RE_FLAGS_NO_CASE; if (STRING_IS_ASCII(string)) { forward_matches = _yr_scan_icompare( data + offset, data_size - offset, string->string, string->length); } if (STRING_IS_WIDE(string) && forward_matches == 0) { flags |= RE_FLAGS_WIDE; forward_matches = _yr_scan_wicompare( data + offset, data_size - offset, string->string, string->length); } } else { if (STRING_IS_ASCII(string)) { forward_matches = _yr_scan_compare( data + offset, data_size - offset, string->string, string->length); } if (STRING_IS_WIDE(string) && forward_matches == 0) { flags |= RE_FLAGS_WIDE; forward_matches = _yr_scan_wcompare( data + offset, data_size - offset, string->string, string->length); } } if (forward_matches > 0) { if (STRING_IS_FULL_WORD(string)) { if (flags & RE_FLAGS_WIDE) { if (offset >= 2 && *(data + offset - 1) == 0 && isalnum(*(data + offset - 2))) return ERROR_SUCCESS; if (offset + forward_matches + 1 < data_size && *(data + offset + forward_matches + 1) == 0 && isalnum(*(data + offset + forward_matches))) return ERROR_SUCCESS; } else { if (offset >= 1 && isalnum(*(data + offset - 1))) return ERROR_SUCCESS; if (offset + forward_matches < data_size && isalnum(*(data + offset + forward_matches))) return ERROR_SUCCESS; } } callback_args.string = string; callback_args.data = data; callback_args.data_size = data_size; callback_args.matches_arena = matches_arena; callback_args.forward_matches = forward_matches; callback_args.full_word = STRING_IS_FULL_WORD(string); callback_args.tidx = yr_get_tidx(); _yr_scan_match_callback( data + offset, 0, flags, &callback_args); } return ERROR_SUCCESS; } inline int _yr_scan_verify_match( YR_AC_MATCH* ac_match, uint8_t* data, size_t data_size, size_t offset, YR_ARENA* matches_arena, int fast_scan_mode) { YR_STRING* string = ac_match->string; if (data_size - offset <= 0) return ERROR_SUCCESS; if (fast_scan_mode && STRING_IS_SINGLE_MATCH(string) && STRING_FOUND(string)) return ERROR_SUCCESS; if (STRING_IS_LITERAL(string)) { FAIL_ON_ERROR(_yr_scan_verify_literal_match( ac_match, data, data_size, offset, matches_arena)); } else { FAIL_ON_ERROR(_yr_scan_verify_re_match( ac_match, data, data_size, offset, matches_arena)); } return ERROR_SUCCESS; } void _yr_rules_lock( YR_RULES* rules) { #ifdef WIN32 WaitForSingleObject(rules->mutex, INFINITE); #else pthread_mutex_lock(&rules->mutex); #endif } void _yr_rules_unlock( YR_RULES* rules) { #ifdef WIN32 ReleaseMutex(rules->mutex); #else pthread_mutex_unlock(&rules->mutex); #endif } int yr_rules_define_integer_variable( YR_RULES* rules, const char* identifier, int64_t value) { YR_EXTERNAL_VARIABLE* external; external = rules->externals_list_head; while (!EXTERNAL_VARIABLE_IS_NULL(external)) { if (strcmp(external->identifier, identifier) == 0) { external->integer = value; break; } external++; } return ERROR_SUCCESS; } int yr_rules_define_boolean_variable( YR_RULES* rules, const char* identifier, int value) { YR_EXTERNAL_VARIABLE* external; external = rules->externals_list_head; while (!EXTERNAL_VARIABLE_IS_NULL(external)) { if (strcmp(external->identifier, identifier) == 0) { external->integer = value; break; } external++; } return ERROR_SUCCESS; } int yr_rules_define_string_variable( YR_RULES* rules, const char* identifier, const char* value) { YR_EXTERNAL_VARIABLE* external; external = rules->externals_list_head; while (!EXTERNAL_VARIABLE_IS_NULL(external)) { if (strcmp(external->identifier, identifier) == 0) { if (external->type == EXTERNAL_VARIABLE_TYPE_MALLOC_STRING && external->string != NULL) { yr_free(external->string); } external->type = EXTERNAL_VARIABLE_TYPE_MALLOC_STRING; external->string = yr_strdup(value); if (external->string == NULL) return ERROR_INSUFICIENT_MEMORY; else return ERROR_SUCCESS; } external++; } return ERROR_SUCCESS; } void _yr_rules_clean_matches( YR_RULES* rules) { YR_RULE* rule; YR_STRING* string; int tidx = yr_get_tidx(); rule = rules->rules_list_head; while (!RULE_IS_NULL(rule)) { rule->t_flags[tidx] &= ~RULE_TFLAGS_MATCH; rule->ns->t_flags[tidx] &= ~NAMESPACE_TFLAGS_UNSATISFIED_GLOBAL; string = rule->strings; while (!STRING_IS_NULL(string)) { string->matches[tidx].head = NULL; string->matches[tidx].tail = NULL; string->unconfirmed_matches[tidx].head = NULL; string->unconfirmed_matches[tidx].tail = NULL; string++; } rule++; } } int yr_rules_scan_mem_block( YR_RULES* rules, uint8_t* data, size_t data_size, int fast_scan_mode, int timeout, time_t start_time, YR_ARENA* matches_arena) { YR_AC_STATE* next_state; YR_AC_MATCH* ac_match; YR_AC_STATE* current_state; time_t current_time; size_t i; current_state = rules->automaton->root; i = 0; while (i < data_size) { ac_match = current_state->matches; while (ac_match != NULL) { if (ac_match->backtrack <= i) { _yr_scan_verify_match( ac_match, data, data_size, i - ac_match->backtrack, matches_arena, fast_scan_mode); } ac_match = ac_match->next; } next_state = yr_ac_next_state(current_state, data[i]); while (next_state == NULL && current_state->depth > 0) { current_state = current_state->failure; next_state = yr_ac_next_state(current_state, data[i]); } if (next_state != NULL) current_state = next_state; i++; if (timeout > 0 && i % 256 == 0) { current_time = time(NULL); if (difftime(current_time, start_time) > timeout) return ERROR_SCAN_TIMEOUT; } } ac_match = current_state->matches; while (ac_match != NULL) { if (ac_match->backtrack <= data_size) { _yr_scan_verify_match( ac_match, data, data_size, data_size - ac_match->backtrack, matches_arena, fast_scan_mode); } ac_match = ac_match->next; } return ERROR_SUCCESS; } int yr_rules_scan_mem_blocks( YR_RULES* rules, YR_MEMORY_BLOCK* block, int scanning_process_memory, YR_CALLBACK_FUNC callback, void* user_data, int fast_scan_mode, int timeout) { YR_RULE* rule; EVALUATION_CONTEXT context; YR_ARENA* matches_arena = NULL; time_t start_time; int message; int tidx; int result = ERROR_SUCCESS; context.file_size = block->size; context.mem_block = block; context.entry_point = UNDEFINED; tidx = yr_get_tidx(); if (tidx == -1) { _yr_rules_lock(rules); tidx = rules->threads_count; if (tidx < MAX_THREADS) rules->threads_count++; else result = ERROR_TOO_MANY_SCAN_THREADS; _yr_rules_unlock(rules); if (result != ERROR_SUCCESS) return result; yr_set_tidx(tidx); } result = yr_arena_create(1024, 0, &matches_arena); if (result != ERROR_SUCCESS) goto _exit; start_time = time(NULL); while (block != NULL) { if (context.entry_point == UNDEFINED) { if (scanning_process_memory) context.entry_point = yr_get_entry_point_address( block->data, block->size, block->base); else context.entry_point = yr_get_entry_point_offset( block->data, block->size); } result = yr_rules_scan_mem_block( rules, block->data, block->size, fast_scan_mode, timeout, start_time, matches_arena); if (result != ERROR_SUCCESS) goto _exit; block = block->next; } result = yr_execute_code(rules, &context); if (result != ERROR_SUCCESS) goto _exit; rule = rules->rules_list_head; while (!RULE_IS_NULL(rule)) { if (RULE_IS_GLOBAL(rule) && !(rule->t_flags[tidx] & RULE_TFLAGS_MATCH)) { rule->ns->t_flags[tidx] |= NAMESPACE_TFLAGS_UNSATISFIED_GLOBAL; } rule++; } rule = rules->rules_list_head; while (!RULE_IS_NULL(rule)) { if (rule->t_flags[tidx] & RULE_TFLAGS_MATCH && !(rule->ns->t_flags[tidx] & NAMESPACE_TFLAGS_UNSATISFIED_GLOBAL)) { message = CALLBACK_MSG_RULE_MATCHING; } else { message = CALLBACK_MSG_RULE_NOT_MATCHING; } if (!RULE_IS_PRIVATE(rule)) { switch (callback(message, rule, user_data)) { case CALLBACK_ABORT: result = ERROR_SUCCESS; goto _exit; case CALLBACK_ERROR: result = ERROR_CALLBACK_ERROR; goto _exit; } } rule++; } callback(CALLBACK_MSG_SCAN_FINISHED, NULL, user_data); _exit: _yr_rules_clean_matches(rules); if (matches_arena != NULL) yr_arena_destroy(matches_arena); return result; } int yr_rules_scan_mem( YR_RULES* rules, uint8_t* buffer, size_t buffer_size, YR_CALLBACK_FUNC callback, void* user_data, int fast_scan_mode, int timeout) { YR_MEMORY_BLOCK block; block.data = buffer; block.size = buffer_size; block.base = 0; block.next = NULL; return yr_rules_scan_mem_blocks( rules, &block, FALSE, callback, user_data, fast_scan_mode, timeout); } int yr_rules_scan_file( YR_RULES* rules, const char* filename, YR_CALLBACK_FUNC callback, void* user_data, int fast_scan_mode, int timeout) { MAPPED_FILE mfile; int result; result = yr_filemap_map(filename, &mfile); if (result == ERROR_SUCCESS) { result = yr_rules_scan_mem( rules, mfile.data, mfile.size, callback, user_data, fast_scan_mode, timeout); yr_filemap_unmap(&mfile); } return result; } int yr_rules_scan_proc( YR_RULES* rules, int pid, YR_CALLBACK_FUNC callback, void* user_data, int fast_scan_mode, int timeout) { YR_MEMORY_BLOCK* first_block; YR_MEMORY_BLOCK* next_block; YR_MEMORY_BLOCK* block; int result; result = yr_process_get_memory(pid, &first_block); if (result == ERROR_SUCCESS) result = yr_rules_scan_mem_blocks( rules, first_block, TRUE, callback, user_data, fast_scan_mode, timeout); block = first_block; while (block != NULL) { next_block = block->next; yr_free(block->data); yr_free(block); block = next_block; } return result; } int yr_rules_save( YR_RULES* rules, const char* filename) { assert(rules->threads_count == 0); return yr_arena_save(rules->arena, filename); } int yr_rules_load( const char* filename, YR_RULES** rules) { YR_RULES* new_rules; YARA_RULES_FILE_HEADER* header; YR_RULE* rule; int result; new_rules = yr_malloc(sizeof(YR_RULES)); if (new_rules == NULL) return ERROR_INSUFICIENT_MEMORY; result = yr_arena_load(filename, &new_rules->arena); if (result != ERROR_SUCCESS) { yr_free(new_rules); return result; } header = (YARA_RULES_FILE_HEADER*) yr_arena_base_address(new_rules->arena); new_rules->automaton = header->automaton; new_rules->code_start = header->code_start; new_rules->externals_list_head = header->externals_list_head; new_rules->rules_list_head = header->rules_list_head; new_rules->threads_count = 0; #if WIN32 new_rules->mutex = CreateMutex(NULL, FALSE, NULL); #else pthread_mutex_init(&new_rules->mutex, NULL); #endif rule = new_rules->rules_list_head; *rules = new_rules; return ERROR_SUCCESS; } int yr_rules_destroy( YR_RULES* rules) { YR_EXTERNAL_VARIABLE* external; external = rules->externals_list_head; while (!EXTERNAL_VARIABLE_IS_NULL(external)) { if (external->type == EXTERNAL_VARIABLE_TYPE_MALLOC_STRING) yr_free(external->string); external++; } yr_arena_destroy(rules->arena); yr_free(rules); return ERROR_SUCCESS; } yara-2.0.0/libyara/sizedstr.h000066400000000000000000000017211225703323600161140ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #ifndef _SIZEDSTR_H #define _SIZEDSTR_H // // This struct is used to support strings containing null chars. The length of // the string is stored along the string data. However the string data is also // terminated with a null char. // #define SIZED_STRING_FLAGS_NO_CASE 1 typedef struct _SIZED_STRING { int length; int flags; char c_string[1]; } SIZED_STRING; #endif yara-2.0.0/libyara/utils.c000066400000000000000000000026441225703323600154050ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #include #include size_t xtoi(const char* hexstr) { size_t r = 0; int i; int l = strlen(hexstr); for (i = 0; i < l; i++) { switch(hexstr[i]) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': r |= ((size_t)(hexstr[i] - '0')) << ((l - i - 1) * 4); break; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': r |= ((size_t)(hexstr[i] - 'a' + 10)) << ((l - i - 1) * 4); break; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': r |= ((size_t)(hexstr[i] - 'A' + 10)) << ((l - i - 1) * 4); break; default: i = l; // force loop exit } } return r; }yara-2.0.0/libyara/utils.h000066400000000000000000000012311225703323600154010ustar00rootroot00000000000000/* Copyright (c) 2013. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #ifndef _UTILS_H #define _UTILS_H size_t xtoi(const char* hexstr); #endifyara-2.0.0/libyara/yara.h000066400000000000000000000367321225703323600152130ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #ifndef _YARA_H #define _YARA_H #include #include #include #ifdef WIN32 #include typedef HANDLE mutex_t; #else #include typedef pthread_mutex_t mutex_t; #endif #ifdef _MSC_VER #define snprintf _snprintf #endif #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif #ifndef NULL #define NULL 0 #endif #define FAIL_ON_ERROR(x) { \ int result = (x); \ if (result != ERROR_SUCCESS) \ return result; \ } #ifndef ERROR_SUCCESS #define ERROR_SUCCESS 0 #endif #define ERROR_INSUFICIENT_MEMORY 1 #define ERROR_COULD_NOT_ATTACH_TO_PROCESS 2 #define ERROR_COULD_NOT_OPEN_FILE 3 #define ERROR_COULD_NOT_MAP_FILE 4 #define ERROR_ZERO_LENGTH_FILE 5 #define ERROR_INVALID_FILE 6 #define ERROR_CORRUPT_FILE 7 #define ERROR_UNSUPPORTED_FILE_VERSION 8 #define ERROR_INVALID_REGULAR_EXPRESSION 9 #define ERROR_INVALID_HEX_STRING 10 #define ERROR_SYNTAX_ERROR 11 #define ERROR_LOOP_NESTING_LIMIT_EXCEEDED 12 #define ERROR_DUPLICATE_LOOP_IDENTIFIER 13 #define ERROR_DUPLICATE_RULE_IDENTIFIER 14 #define ERROR_DUPLICATE_TAG_IDENTIFIER 15 #define ERROR_DUPLICATE_META_IDENTIFIER 16 #define ERROR_DUPLICATE_STRING_IDENTIFIER 17 #define ERROR_UNREFERENCED_STRING 18 #define ERROR_UNDEFINED_STRING 19 #define ERROR_UNDEFINED_IDENTIFIER 20 #define ERROR_MISPLACED_ANONYMOUS_STRING 21 #define ERROR_INCLUDES_CIRCULAR_REFERENCE 22 #define ERROR_INCLUDE_DEPTH_EXCEEDED 23 #define ERROR_INCORRECT_VARIABLE_TYPE 24 #define ERROR_EXEC_STACK_OVERFLOW 25 #define ERROR_SCAN_TIMEOUT 26 #define ERROR_TOO_MANY_SCAN_THREADS 27 #define ERROR_CALLBACK_ERROR 28 #define ERROR_INVALID_ARGUMENT 29 #define ERROR_INTERNAL_FATAL_ERROR 30 #define CALLBACK_MSG_RULE_MATCHING 1 #define CALLBACK_MSG_RULE_NOT_MATCHING 2 #define CALLBACK_MSG_SCAN_FINISHED 3 #define CALLBACK_CONTINUE 0 #define CALLBACK_ABORT 1 #define CALLBACK_ERROR 2 #define MAX_ATOM_LENGTH 4 #define LOOP_LOCAL_VARS 4 #define MAX_LOOP_NESTING 4 #define MAX_INCLUDE_DEPTH 16 #define MAX_THREADS 32 #define STRING_CHAINING_THRESHOLD 200 #define LEX_BUF_SIZE 1024 #ifndef MAX_PATH #define MAX_PATH 1024 #endif /* Mask examples: string : B1 ( 01 02 | 03 04 ) 3? ?? 45 mask: FF AA FF FF AA FF FF BB F0 00 FF string : C5 45 [3] 00 45| mask: FF FF CC 03 FF FF string : C5 45 [2-5] 00 45 mask: FF FF DD 02 03 FF FF */ #define MASK_OR 0xAA #define MASK_OR_END 0xBB #define MASK_EXACT_SKIP 0xCC #define MASK_RANGE_SKIP 0xDD #define MASK_END 0xEE #define MASK_MAX_SKIP 255 #define META_TYPE_NULL 0 #define META_TYPE_INTEGER 1 #define META_TYPE_STRING 2 #define META_TYPE_BOOLEAN 3 #define META_IS_NULL(x) \ ((x) != NULL ? (x)->type == META_TYPE_NULL : TRUE) #define EXTERNAL_VARIABLE_TYPE_NULL 0 #define EXTERNAL_VARIABLE_TYPE_ANY 1 #define EXTERNAL_VARIABLE_TYPE_INTEGER 2 #define EXTERNAL_VARIABLE_TYPE_BOOLEAN 3 #define EXTERNAL_VARIABLE_TYPE_FIXED_STRING 4 #define EXTERNAL_VARIABLE_TYPE_MALLOC_STRING 5 #define EXTERNAL_VARIABLE_IS_NULL(x) \ ((x) != NULL ? (x)->type == EXTERNAL_VARIABLE_TYPE_NULL : TRUE) #define STRING_TFLAGS_FOUND 0x01 #define STRING_GFLAGS_REFERENCED 0x01 #define STRING_GFLAGS_HEXADECIMAL 0x02 #define STRING_GFLAGS_NO_CASE 0x04 #define STRING_GFLAGS_ASCII 0x08 #define STRING_GFLAGS_WIDE 0x10 #define STRING_GFLAGS_REGEXP 0x20 #define STRING_GFLAGS_FAST_HEX_REGEXP 0x40 #define STRING_GFLAGS_FULL_WORD 0x80 #define STRING_GFLAGS_ANONYMOUS 0x100 #define STRING_GFLAGS_SINGLE_MATCH 0x200 #define STRING_GFLAGS_LITERAL 0x400 #define STRING_GFLAGS_FITS_IN_ATOM 0x800 #define STRING_GFLAGS_NULL 0x1000 #define STRING_GFLAGS_CHAIN_PART 0x2000 #define STRING_GFLAGS_CHAIN_TAIL 0x4000 #define STRING_IS_HEX(x) \ (((x)->g_flags) & STRING_GFLAGS_HEXADECIMAL) #define STRING_IS_NO_CASE(x) \ (((x)->g_flags) & STRING_GFLAGS_NO_CASE) #define STRING_IS_ASCII(x) \ (((x)->g_flags) & STRING_GFLAGS_ASCII) #define STRING_IS_WIDE(x) \ (((x)->g_flags) & STRING_GFLAGS_WIDE) #define STRING_IS_REGEXP(x) \ (((x)->g_flags) & STRING_GFLAGS_REGEXP) #define STRING_IS_FULL_WORD(x) \ (((x)->g_flags) & STRING_GFLAGS_FULL_WORD) #define STRING_IS_ANONYMOUS(x) \ (((x)->g_flags) & STRING_GFLAGS_ANONYMOUS) #define STRING_IS_REFERENCED(x) \ (((x)->g_flags) & STRING_GFLAGS_REFERENCED) #define STRING_IS_SINGLE_MATCH(x) \ (((x)->g_flags) & STRING_GFLAGS_SINGLE_MATCH) #define STRING_IS_LITERAL(x) \ (((x)->g_flags) & STRING_GFLAGS_LITERAL) #define STRING_IS_FAST_HEX_REGEXP(x) \ (((x)->g_flags) & STRING_GFLAGS_FAST_HEX_REGEXP) #define STRING_IS_CHAIN_PART(x) \ (((x)->g_flags) & STRING_GFLAGS_CHAIN_PART) #define STRING_IS_CHAIN_TAIL(x) \ (((x)->g_flags) & STRING_GFLAGS_CHAIN_TAIL) #define STRING_IS_NULL(x) \ ((x) == NULL || ((x)->g_flags) & STRING_GFLAGS_NULL) #define STRING_FITS_IN_ATOM(x) \ (((x)->g_flags) & STRING_GFLAGS_FITS_IN_ATOM) #define STRING_FOUND(x) \ ((x)->matches[yr_get_tidx()].tail != NULL) #define RULE_TFLAGS_MATCH 0x01 #define RULE_GFLAGS_PRIVATE 0x01 #define RULE_GFLAGS_GLOBAL 0x02 #define RULE_GFLAGS_REQUIRE_EXECUTABLE 0x04 #define RULE_GFLAGS_REQUIRE_FILE 0x08 #define RULE_GFLAGS_NULL 0x1000 #define RULE_IS_PRIVATE(x) \ (((x)->g_flags) & RULE_GFLAGS_PRIVATE) #define RULE_IS_GLOBAL(x) \ (((x)->g_flags) & RULE_GFLAGS_GLOBAL) #define RULE_IS_NULL(x) \ (((x)->g_flags) & RULE_GFLAGS_NULL) #define RULE_MATCHES(x) \ ((x)->t_flags[yr_get_tidx()] & RULE_TFLAGS_MATCH) #define NAMESPACE_TFLAGS_UNSATISFIED_GLOBAL 0x01 #define NAMESPACE_HAS_UNSATISFIED_GLOBAL(x) \ ((x)->t_flags[yr_get_tidx()] & NAMESPACE_TFLAGS_UNSATISFIED_GLOBAL) #define MAX_ARENA_PAGES 32 #define EOL ((size_t) -1) #define DECLARE_REFERENCE(type, name) \ union { type name; int64_t name##_; } #define UINT64_TO_PTR(type, x) ((type)(size_t) x) #define PTR_TO_UINT64(x) ((uint64_t) (size_t) x) #define STRING_MATCHES(x) (x->matches[yr_get_tidx()]) typedef struct _YR_RELOC { int32_t offset; struct _YR_RELOC* next; } YR_RELOC; typedef struct _YR_ARENA_PAGE { uint8_t* new_address; uint8_t* address; size_t size; size_t used; YR_RELOC* reloc_list_head; YR_RELOC* reloc_list_tail; struct _YR_ARENA_PAGE* next; struct _YR_ARENA_PAGE* prev; } YR_ARENA_PAGE; typedef struct _YR_ARENA { int flags; YR_ARENA_PAGE* page_list_head; YR_ARENA_PAGE* current_page; } YR_ARENA; #pragma pack(push) #pragma pack(1) typedef struct _YR_MATCH { int64_t offset; int32_t length; union { uint8_t* data; // Confirmed matches use "data", int32_t chain_length; // unconfirmed ones use "chain_length" }; struct _YR_MATCH* prev; struct _YR_MATCH* next; } YR_MATCH; typedef struct _YR_NAMESPACE { int32_t t_flags[MAX_THREADS]; // Thread-specific flags DECLARE_REFERENCE(char*, name); } YR_NAMESPACE; typedef struct _YR_META { int32_t type; int32_t integer; DECLARE_REFERENCE(char*, identifier); DECLARE_REFERENCE(char*, string); } YR_META; typedef struct _YR_MATCHES { DECLARE_REFERENCE(YR_MATCH*, head); DECLARE_REFERENCE(YR_MATCH*, tail); } YR_MATCHES; typedef struct _YR_STRING { int32_t g_flags; int32_t length; DECLARE_REFERENCE(char*, identifier); DECLARE_REFERENCE(uint8_t*, string); DECLARE_REFERENCE(struct _YR_STRING*, chained_to); int32_t chain_gap_min; int32_t chain_gap_max; YR_MATCHES matches[MAX_THREADS]; YR_MATCHES unconfirmed_matches[MAX_THREADS]; } YR_STRING; typedef struct _YR_RULE { int32_t g_flags; // Global flags int32_t t_flags[MAX_THREADS]; // Thread-specific flags DECLARE_REFERENCE(char*, identifier); DECLARE_REFERENCE(char*, tags); DECLARE_REFERENCE(YR_META*, metas); DECLARE_REFERENCE(YR_STRING*, strings); DECLARE_REFERENCE(YR_NAMESPACE*, ns); } YR_RULE; typedef struct _YR_EXTERNAL_VARIABLE { int32_t type; int64_t integer; DECLARE_REFERENCE(char*, identifier); DECLARE_REFERENCE(char*, string); } YR_EXTERNAL_VARIABLE; typedef struct _YR_AC_MATCH { uint16_t backtrack; DECLARE_REFERENCE(YR_STRING*, string); DECLARE_REFERENCE(uint8_t*, forward_code); DECLARE_REFERENCE(uint8_t*, backward_code); DECLARE_REFERENCE(struct _YR_AC_MATCH*, next); } YR_AC_MATCH; typedef struct _YR_AC_STATE { int8_t depth; DECLARE_REFERENCE(struct _YR_AC_STATE*, failure); DECLARE_REFERENCE(YR_AC_MATCH*, matches); } YR_AC_STATE; typedef struct _YR_AC_STATE_TRANSITION { uint8_t input; DECLARE_REFERENCE(YR_AC_STATE*, state); DECLARE_REFERENCE(struct _YR_AC_STATE_TRANSITION*, next); } YR_AC_STATE_TRANSITION; typedef struct _YR_AC_TABLE_BASED_STATE { int8_t depth; DECLARE_REFERENCE(YR_AC_STATE*, failure); DECLARE_REFERENCE(YR_AC_MATCH*, matches); DECLARE_REFERENCE(YR_AC_STATE*, state) transitions[256]; } YR_AC_TABLE_BASED_STATE; typedef struct _YR_AC_LIST_BASED_STATE { int8_t depth; DECLARE_REFERENCE(YR_AC_STATE*, failure); DECLARE_REFERENCE(YR_AC_MATCH*, matches); DECLARE_REFERENCE(YR_AC_STATE_TRANSITION*, transitions); } YR_AC_LIST_BASED_STATE; typedef struct _YR_AC_AUTOMATON { DECLARE_REFERENCE(YR_AC_STATE*, root); } YR_AC_AUTOMATON; typedef struct _YARA_RULES_FILE_HEADER { uint32_t version; DECLARE_REFERENCE(YR_RULE*, rules_list_head); DECLARE_REFERENCE(YR_EXTERNAL_VARIABLE*, externals_list_head); DECLARE_REFERENCE(uint8_t*, code_start); DECLARE_REFERENCE(YR_AC_AUTOMATON*, automaton); } YARA_RULES_FILE_HEADER; #pragma pack(pop) typedef struct _YR_HASH_TABLE_ENTRY { char* key; char* ns; void* value; struct _YR_HASH_TABLE_ENTRY* next; } YR_HASH_TABLE_ENTRY; typedef struct _YR_HASH_TABLE { int size; YR_HASH_TABLE_ENTRY* buckets[0]; } YR_HASH_TABLE; typedef struct _YR_ATOM_LIST_ITEM { uint8_t atom_length; uint8_t atom[MAX_ATOM_LENGTH]; uint16_t backtrack; void* forward_code; void* backward_code; struct _YR_ATOM_LIST_ITEM* next; } YR_ATOM_LIST_ITEM; #define YARA_ERROR_LEVEL_ERROR 0 #define YARA_ERROR_LEVEL_WARNING 1 typedef void (*YR_REPORT_FUNC)( int error_level, const char* file_name, int line_number, const char* message); typedef int (*YR_CALLBACK_FUNC)( int message, YR_RULE* rule, void* data); typedef struct _YR_COMPILER { int last_result; YR_REPORT_FUNC error_report_function; int errors; int error_line; int last_error; int last_error_line; jmp_buf error_recovery; YR_ARENA* sz_arena; YR_ARENA* rules_arena; YR_ARENA* strings_arena; YR_ARENA* code_arena; YR_ARENA* re_code_arena; YR_ARENA* automaton_arena; YR_ARENA* compiled_rules_arena; YR_ARENA* externals_arena; YR_ARENA* namespaces_arena; YR_ARENA* metas_arena; YR_AC_AUTOMATON* automaton; YR_HASH_TABLE* rules_table; YR_NAMESPACE* current_namespace; YR_STRING* current_rule_strings; int current_rule_flags; int externals_count; int namespaces_count; int8_t* loop_address[MAX_LOOP_NESTING]; char* loop_identifier[MAX_LOOP_NESTING]; int loop_depth; int allow_includes; char* file_name_stack[MAX_INCLUDE_DEPTH]; int file_name_stack_ptr; FILE* file_stack[MAX_INCLUDE_DEPTH]; int file_stack_ptr; char last_error_extra_info[256]; char lex_buf[LEX_BUF_SIZE]; char* lex_buf_ptr; unsigned short lex_buf_len; char include_base_dir[MAX_PATH]; } YR_COMPILER; typedef struct _YR_MEMORY_BLOCK { uint8_t* data; size_t size; size_t base; struct _YR_MEMORY_BLOCK* next; } YR_MEMORY_BLOCK; typedef struct _YR_RULES { int threads_count; uint8_t* code_start; mutex_t mutex; YR_ARENA* arena; YR_RULE* rules_list_head; YR_EXTERNAL_VARIABLE* externals_list_head; YR_AC_AUTOMATON* automaton; } YR_RULES; extern char lowercase[256]; extern char altercase[256]; void yr_initialize(void); void yr_finalize(void); void yr_finalize_thread(void); int yr_get_tidx(void); void yr_set_tidx(int); int yr_compiler_create( YR_COMPILER** compiler); void yr_compiler_destroy( YR_COMPILER* compiler); int yr_compiler_add_file( YR_COMPILER* compiler, FILE* rules_file, const char* namespace); int yr_compiler_add_string( YR_COMPILER* compiler, const char* rules_string, const char* namespace); int yr_compiler_push_file_name( YR_COMPILER* compiler, const char* file_name); void yr_compiler_pop_file_name( YR_COMPILER* compiler); char* yr_compiler_get_error_message( YR_COMPILER* compiler, char* buffer, int buffer_size); char* yr_compiler_get_current_file_name( YR_COMPILER* context); int yr_compiler_define_integer_variable( YR_COMPILER* compiler, const char* identifier, int64_t value); int yr_compiler_define_boolean_variable( YR_COMPILER* compiler, const char* identifier, int value); int yr_compiler_define_string_variable( YR_COMPILER* compiler, const char* identifier, const char* value); int yr_compiler_get_rules( YR_COMPILER* compiler, YR_RULES** rules); int yr_rules_scan_mem( YR_RULES* rules, uint8_t* buffer, size_t buffer_size, YR_CALLBACK_FUNC callback, void* user_data, int fast_scan_mode, int timeout); int yr_rules_scan_file( YR_RULES* rules, const char* filename, YR_CALLBACK_FUNC callback, void* user_data, int fast_scan_mode, int timeout); int yr_rules_scan_proc( YR_RULES* rules, int pid, YR_CALLBACK_FUNC callback, void* user_data, int fast_scan_mode, int timeout); int yr_rules_save( YR_RULES* rules, const char* filename); int yr_rules_load( const char* filename, YR_RULES** rules); int yr_rules_destroy( YR_RULES* rules); int yr_rules_define_integer_variable( YR_RULES* rules, const char* identifier, int64_t value); int yr_rules_define_boolean_variable( YR_RULES* rules, const char* identifier, int value); int yr_rules_define_string_variable( YR_RULES* rules, const char* identifier, const char* value); #endif yara-2.0.0/sample.rules000066400000000000000000000002161225703323600150040ustar00rootroot00000000000000 rule UPX : Packer { strings: $a = {60 E8 00 00 00 00 58 83 E8 3D 50 8D B8} condition: $a at entrypoint } yara-2.0.0/threading.c000066400000000000000000000050761225703323600145710ustar00rootroot00000000000000/* Copyright (c) 2013. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #include #include "threading.h" void mutex_init( MUTEX* mutex) { #ifdef WIN32 *mutex = CreateMutex(NULL, FALSE, NULL); #else pthread_mutex_init(mutex, NULL); #endif } void mutex_destroy( MUTEX* mutex) { #ifdef WIN32 CloseHandle(*mutex); #else pthread_mutex_destroy(mutex); #endif } void mutex_lock( MUTEX* mutex) { #ifdef WIN32 WaitForSingleObject(*mutex, INFINITE); #else pthread_mutex_lock(mutex); #endif } void mutex_unlock( MUTEX* mutex) { #ifdef WIN32 ReleaseMutex(*mutex); #else pthread_mutex_unlock(mutex); #endif } void semaphore_init( SEMAPHORE* semaphore, int value) { #ifdef WIN32 *semaphore = CreateSemaphore(NULL, value, 65535, NULL); #else // Mac OS X doesn't support unnamed semaphores via sem_init, that's why // we use sem_open instead sem_init and immediately unlink the semaphore // from the name. More info at: // // http://stackoverflow.com/questions/1413785/sem-init-on-os-x *semaphore = sem_open("/semaphore", O_CREAT, S_IRUSR, value); sem_unlink("/semaphore"); #endif } void semaphore_destroy( SEMAPHORE* semaphore) { #ifdef WIN32 CloseHandle(*semaphore); #else sem_close(*semaphore); #endif } void semaphore_wait( SEMAPHORE* semaphore) { #ifdef WIN32 WaitForSingleObject(*semaphore, INFINITE); #else sem_wait(*semaphore); #endif } void semaphore_release( SEMAPHORE* semaphore) { #ifdef WIN32 ReleaseSemaphore(*semaphore, 1, NULL); #else sem_post(*semaphore); #endif } int create_thread( THREAD* thread, THREAD_START_ROUTINE start_routine, void* param) { #ifdef WIN32 *thread = CreateThread(NULL, 0, start_routine, param, 0, NULL); if (*thread == NULL) return GetLastError(); else return 0; #else return pthread_create(thread, NULL, start_routine, param); #endif } void thread_join( THREAD* thread) { #ifdef WIN32 WaitForSingleObject(*thread, INFINITE); #else pthread_join(*thread, NULL); #endif } yara-2.0.0/threading.h000066400000000000000000000030171225703323600145670ustar00rootroot00000000000000/* Copyright (c) 2013. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #ifndef _THREADING_H #define _THREADING_H #ifdef WIN32 #include #else #include #include #include #endif #ifdef WIN32 typedef HANDLE SEMAPHORE; typedef HANDLE MUTEX; typedef HANDLE THREAD; typedef LPTHREAD_START_ROUTINE THREAD_START_ROUTINE; #else typedef sem_t* SEMAPHORE; typedef pthread_mutex_t MUTEX; typedef pthread_t THREAD; typedef void *(*THREAD_START_ROUTINE) (void *); #endif void mutex_init( MUTEX* mutex); void mutex_destroy( MUTEX* mutex); void mutex_lock( MUTEX* mutex); void mutex_unlock( MUTEX* mutex); void semaphore_init( SEMAPHORE* semaphore, int value); void semaphore_destroy( SEMAPHORE* semaphore); void semaphore_wait( SEMAPHORE* semaphore); void semaphore_release( SEMAPHORE* semaphore); int create_thread( THREAD* thread, THREAD_START_ROUTINE start_routine, void* param); void thread_join( THREAD* thread); #endifyara-2.0.0/windows/000077500000000000000000000000001225703323600141425ustar00rootroot00000000000000yara-2.0.0/windows/include/000077500000000000000000000000001225703323600155655ustar00rootroot00000000000000yara-2.0.0/windows/include/getopt.h000066400000000000000000000002251225703323600172370ustar00rootroot00000000000000 extern int opterr; extern int optind; extern int optopt; extern char * optarg; int getopt( int nargc, char * const *nargv, const char *ostr);yara-2.0.0/windows/include/pcre.h000066400000000000000000000301541225703323600166720ustar00rootroot00000000000000/************************************************* * Perl-Compatible Regular Expressions * *************************************************/ /* This is the public header file for the PCRE library, to be #included by applications that call the PCRE functions. Copyright (c) 1997-2006 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the University of Cambridge nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ----------------------------------------------------------------------------- */ #ifndef _PCRE_H #define _PCRE_H /* The current PCRE version information. */ /* NOTES FOR FUTURE MAINTAINERS: Do not use numbers with leading zeros, because they may be treated as octal constants. The PCRE_PRERELEASE feature is for identifying release candidates. It might be defined as -RC2, for example. In real releases, it should be defined empty. Do not change the alignment of these statments. The code in ./configure greps out the version numbers by using "cut" to get values from column 29 onwards. These are substituted into pcre-config and libpcre.pc. The values are not put into configure.ac and substituted here (which would simplify this issue) because that makes life harder for those who cannot run ./configure. As it now stands, this file need not be edited in that circumstance. */ #define PCRE_MAJOR 7 #define PCRE_MINOR 0 #define PCRE_PRERELEASE #define PCRE_DATE 18-Dec-2006 /* Win32 uses DLL by default; it needs special stuff for exported functions when building PCRE. */ #ifdef _WIN32 # ifdef PCRE_DEFINITION # ifdef DLL_EXPORT # define PCRE_DATA_SCOPE __declspec(dllexport) # endif # else # ifndef PCRE_STATIC # define PCRE_DATA_SCOPE extern __declspec(dllimport) # endif # endif #endif /* Otherwise, we use the standard "extern". */ #ifndef PCRE_DATA_SCOPE # ifdef __cplusplus # define PCRE_DATA_SCOPE extern "C" # else # define PCRE_DATA_SCOPE extern # endif #endif /* Have to include stdlib.h in order to ensure that size_t is defined; it is needed here for malloc. */ #include /* Allow for C++ users */ #ifdef __cplusplus extern "C" { #endif /* Options */ #define PCRE_CASELESS 0x00000001 #define PCRE_MULTILINE 0x00000002 #define PCRE_DOTALL 0x00000004 #define PCRE_EXTENDED 0x00000008 #define PCRE_ANCHORED 0x00000010 #define PCRE_DOLLAR_ENDONLY 0x00000020 #define PCRE_EXTRA 0x00000040 #define PCRE_NOTBOL 0x00000080 #define PCRE_NOTEOL 0x00000100 #define PCRE_UNGREEDY 0x00000200 #define PCRE_NOTEMPTY 0x00000400 #define PCRE_UTF8 0x00000800 #define PCRE_NO_AUTO_CAPTURE 0x00001000 #define PCRE_NO_UTF8_CHECK 0x00002000 #define PCRE_AUTO_CALLOUT 0x00004000 #define PCRE_PARTIAL 0x00008000 #define PCRE_DFA_SHORTEST 0x00010000 #define PCRE_DFA_RESTART 0x00020000 #define PCRE_FIRSTLINE 0x00040000 #define PCRE_DUPNAMES 0x00080000 #define PCRE_NEWLINE_CR 0x00100000 #define PCRE_NEWLINE_LF 0x00200000 #define PCRE_NEWLINE_CRLF 0x00300000 #define PCRE_NEWLINE_ANY 0x00400000 /* Exec-time and get/set-time error codes */ #define PCRE_ERROR_NOMATCH (-1) #define PCRE_ERROR_NULL (-2) #define PCRE_ERROR_BADOPTION (-3) #define PCRE_ERROR_BADMAGIC (-4) #define PCRE_ERROR_UNKNOWN_OPCODE (-5) #define PCRE_ERROR_UNKNOWN_NODE (-5) /* For backward compatibility */ #define PCRE_ERROR_NOMEMORY (-6) #define PCRE_ERROR_NOSUBSTRING (-7) #define PCRE_ERROR_MATCHLIMIT (-8) #define PCRE_ERROR_CALLOUT (-9) /* Never used by PCRE itself */ #define PCRE_ERROR_BADUTF8 (-10) #define PCRE_ERROR_BADUTF8_OFFSET (-11) #define PCRE_ERROR_PARTIAL (-12) #define PCRE_ERROR_BADPARTIAL (-13) #define PCRE_ERROR_INTERNAL (-14) #define PCRE_ERROR_BADCOUNT (-15) #define PCRE_ERROR_DFA_UITEM (-16) #define PCRE_ERROR_DFA_UCOND (-17) #define PCRE_ERROR_DFA_UMLIMIT (-18) #define PCRE_ERROR_DFA_WSSIZE (-19) #define PCRE_ERROR_DFA_RECURSE (-20) #define PCRE_ERROR_RECURSIONLIMIT (-21) #define PCRE_ERROR_NULLWSLIMIT (-22) #define PCRE_ERROR_BADNEWLINE (-23) /* Request types for pcre_fullinfo() */ #define PCRE_INFO_OPTIONS 0 #define PCRE_INFO_SIZE 1 #define PCRE_INFO_CAPTURECOUNT 2 #define PCRE_INFO_BACKREFMAX 3 #define PCRE_INFO_FIRSTBYTE 4 #define PCRE_INFO_FIRSTCHAR 4 /* For backwards compatibility */ #define PCRE_INFO_FIRSTTABLE 5 #define PCRE_INFO_LASTLITERAL 6 #define PCRE_INFO_NAMEENTRYSIZE 7 #define PCRE_INFO_NAMECOUNT 8 #define PCRE_INFO_NAMETABLE 9 #define PCRE_INFO_STUDYSIZE 10 #define PCRE_INFO_DEFAULT_TABLES 11 /* Request types for pcre_config(). Do not re-arrange, in order to remain compatible. */ #define PCRE_CONFIG_UTF8 0 #define PCRE_CONFIG_NEWLINE 1 #define PCRE_CONFIG_LINK_SIZE 2 #define PCRE_CONFIG_POSIX_MALLOC_THRESHOLD 3 #define PCRE_CONFIG_MATCH_LIMIT 4 #define PCRE_CONFIG_STACKRECURSE 5 #define PCRE_CONFIG_UNICODE_PROPERTIES 6 #define PCRE_CONFIG_MATCH_LIMIT_RECURSION 7 /* Bit flags for the pcre_extra structure. Do not re-arrange or redefine these bits, just add new ones on the end, in order to remain compatible. */ #define PCRE_EXTRA_STUDY_DATA 0x0001 #define PCRE_EXTRA_MATCH_LIMIT 0x0002 #define PCRE_EXTRA_CALLOUT_DATA 0x0004 #define PCRE_EXTRA_TABLES 0x0008 #define PCRE_EXTRA_MATCH_LIMIT_RECURSION 0x0010 /* Types */ struct real_pcre; /* declaration; the definition is private */ typedef struct real_pcre pcre; /* When PCRE is compiled as a C++ library, the subject pointer type can be replaced with a custom type. For conventional use, the public interface is a const char *. */ #ifndef PCRE_SPTR #define PCRE_SPTR const char * #endif /* The structure for passing additional data to pcre_exec(). This is defined in such as way as to be extensible. Always add new fields at the end, in order to remain compatible. */ typedef struct pcre_extra { unsigned long int flags; /* Bits for which fields are set */ void *study_data; /* Opaque data from pcre_study() */ unsigned long int match_limit; /* Maximum number of calls to match() */ void *callout_data; /* Data passed back in callouts */ const unsigned char *tables; /* Pointer to character tables */ unsigned long int match_limit_recursion; /* Max recursive calls to match() */ } pcre_extra; /* The structure for passing out data via the pcre_callout_function. We use a structure so that new fields can be added on the end in future versions, without changing the API of the function, thereby allowing old clients to work without modification. */ typedef struct pcre_callout_block { int version; /* Identifies version of block */ /* ------------------------ Version 0 ------------------------------- */ int callout_number; /* Number compiled into pattern */ int *offset_vector; /* The offset vector */ PCRE_SPTR subject; /* The subject being matched */ int subject_length; /* The length of the subject */ int start_match; /* Offset to start of this match attempt */ int current_position; /* Where we currently are in the subject */ int capture_top; /* Max current capture */ int capture_last; /* Most recently closed capture */ void *callout_data; /* Data passed in with the call */ /* ------------------- Added for Version 1 -------------------------- */ int pattern_position; /* Offset to next item in the pattern */ int next_item_length; /* Length of next item in the pattern */ /* ------------------------------------------------------------------ */ } pcre_callout_block; /* Indirection for store get and free functions. These can be set to alternative malloc/free functions if required. Special ones are used in the non-recursive case for "frames". There is also an optional callout function that is triggered by the (?) regex item. For Virtual Pascal, these definitions have to take another form. */ #ifndef VPCOMPAT PCRE_DATA_SCOPE void *(*pcre_malloc)(size_t); PCRE_DATA_SCOPE void (*pcre_free)(void *); PCRE_DATA_SCOPE void *(*pcre_stack_malloc)(size_t); PCRE_DATA_SCOPE void (*pcre_stack_free)(void *); PCRE_DATA_SCOPE int (*pcre_callout)(pcre_callout_block *); #else /* VPCOMPAT */ PCRE_DATA_SCOPE void *pcre_malloc(size_t); PCRE_DATA_SCOPE void pcre_free(void *); PCRE_DATA_SCOPE void *pcre_stack_malloc(size_t); PCRE_DATA_SCOPE void pcre_stack_free(void *); PCRE_DATA_SCOPE int pcre_callout(pcre_callout_block *); #endif /* VPCOMPAT */ /* Exported PCRE functions */ PCRE_DATA_SCOPE pcre *pcre_compile(const char *, int, const char **, int *, const unsigned char *); PCRE_DATA_SCOPE pcre *pcre_compile2(const char *, int, int *, const char **, int *, const unsigned char *); PCRE_DATA_SCOPE int pcre_config(int, void *); PCRE_DATA_SCOPE int pcre_copy_named_substring(const pcre *, const char *, int *, int, const char *, char *, int); PCRE_DATA_SCOPE int pcre_copy_substring(const char *, int *, int, int, char *, int); PCRE_DATA_SCOPE int pcre_dfa_exec(const pcre *, const pcre_extra *, const char *, int, int, int, int *, int , int *, int); PCRE_DATA_SCOPE int pcre_exec(const pcre *, const pcre_extra *, PCRE_SPTR, int, int, int, int *, int); PCRE_DATA_SCOPE void pcre_free_substring(const char *); PCRE_DATA_SCOPE void pcre_free_substring_list(const char **); PCRE_DATA_SCOPE int pcre_fullinfo(const pcre *, const pcre_extra *, int, void *); PCRE_DATA_SCOPE int pcre_get_named_substring(const pcre *, const char *, int *, int, const char *, const char **); PCRE_DATA_SCOPE int pcre_get_stringnumber(const pcre *, const char *); PCRE_DATA_SCOPE int pcre_get_stringtable_entries(const pcre *, const char *, char **, char **); PCRE_DATA_SCOPE int pcre_get_substring(const char *, int *, int, int, const char **); PCRE_DATA_SCOPE int pcre_get_substring_list(const char *, int *, int, const char ***); PCRE_DATA_SCOPE int pcre_info(const pcre *, int *, int *); PCRE_DATA_SCOPE const unsigned char *pcre_maketables(void); PCRE_DATA_SCOPE int pcre_refcount(pcre *, int); PCRE_DATA_SCOPE pcre_extra *pcre_study(const pcre *, int, const char **); PCRE_DATA_SCOPE const char *pcre_version(void); #ifdef __cplusplus } /* extern "C" */ #endif #endif /* End of pcre.h */ yara-2.0.0/windows/include/pcreposix.h000066400000000000000000000112471225703323600177570ustar00rootroot00000000000000/************************************************* * Perl-Compatible Regular Expressions * *************************************************/ #ifndef _PCREPOSIX_H #define _PCREPOSIX_H /* This is the header for the POSIX wrapper interface to the PCRE Perl- Compatible Regular Expression library. It defines the things POSIX says should be there. I hope. Copyright (c) 1997-2006 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the University of Cambridge nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ----------------------------------------------------------------------------- */ /* Have to include stdlib.h in order to ensure that size_t is defined. */ #include /* Allow for C++ users */ #ifdef __cplusplus extern "C" { #endif /* Options, mostly defined by POSIX, but with a couple of extras. */ #define REG_ICASE 0x0001 #define REG_NEWLINE 0x0002 #define REG_NOTBOL 0x0004 #define REG_NOTEOL 0x0008 #define REG_DOTALL 0x0010 /* NOT defined by POSIX. */ #define REG_NOSUB 0x0020 #define REG_UTF8 0x0040 /* NOT defined by POSIX. */ /* This is not used by PCRE, but by defining it we make it easier to slot PCRE into existing programs that make POSIX calls. */ #define REG_EXTENDED 0 /* Error values. Not all these are relevant or used by the wrapper. */ enum { REG_ASSERT = 1, /* internal error ? */ REG_BADBR, /* invalid repeat counts in {} */ REG_BADPAT, /* pattern error */ REG_BADRPT, /* ? * + invalid */ REG_EBRACE, /* unbalanced {} */ REG_EBRACK, /* unbalanced [] */ REG_ECOLLATE, /* collation error - not relevant */ REG_ECTYPE, /* bad class */ REG_EESCAPE, /* bad escape sequence */ REG_EMPTY, /* empty expression */ REG_EPAREN, /* unbalanced () */ REG_ERANGE, /* bad range inside [] */ REG_ESIZE, /* expression too big */ REG_ESPACE, /* failed to get memory */ REG_ESUBREG, /* bad back reference */ REG_INVARG, /* bad argument */ REG_NOMATCH /* match failed */ }; /* The structure representing a compiled regular expression. */ typedef struct { void *re_pcre; size_t re_nsub; size_t re_erroffset; } regex_t; /* The structure in which a captured offset is returned. */ typedef int regoff_t; typedef struct { regoff_t rm_so; regoff_t rm_eo; } regmatch_t; /* Win32 uses DLL by default; it needs special stuff for exported functions when building PCRE. */ #ifndef PCRE_DATA_SCOPE #ifdef _WIN32 # ifdef PCRE_DEFINITION # ifdef DLL_EXPORT # define PCRE_DATA_SCOPE __declspec(dllexport) # endif # else # ifndef PCRE_STATIC # define PCRE_DATA_SCOPE extern __declspec(dllimport) # endif # endif #endif #endif /* Otherwise, we use the standard "extern". */ #ifndef PCRE_DATA_SCOPE # ifdef __cplusplus # define PCRE_DATA_SCOPE extern "C" # else # define PCRE_DATA_SCOPE extern # endif #endif /* The functions */ PCRE_DATA_SCOPE int regcomp(regex_t *, const char *, int); PCRE_DATA_SCOPE int regexec(const regex_t *, const char *, size_t, regmatch_t *, int); PCRE_DATA_SCOPE size_t regerror(int, const regex_t *, char *, size_t); PCRE_DATA_SCOPE void regfree(regex_t *); #ifdef __cplusplus } /* extern "C" */ #endif #endif /* End of pcreposix.h */ yara-2.0.0/windows/include/regex.h000066400000000000000000000001471225703323600170520ustar00rootroot00000000000000#ifndef _REGEX_H #define _REGEX_H 1 # include # include #endif /* _REGEX_H */ yara-2.0.0/windows/libyara/000077500000000000000000000000001225703323600155655ustar00rootroot00000000000000yara-2.0.0/windows/libyara/libyara.vcxproj000066400000000000000000000203341225703323600206270ustar00rootroot00000000000000 Debug Win32 Debug x64 Release Win32 Release x64 StaticLibrary true StaticLibrary true StaticLibrary false StaticLibrary false $(ProjectName)32 $(Configuration)\ $(ProjectName)64 $(Configuration)\ $(Configuration)\ $(ProjectName)32 $(Configuration)\ $(ProjectName)64 $(Configuration)\ $(Configuration)\ WIN32;_CRT_SECURE_NO_WARNINGS ..\libyara\regex;..\libyara;..\..\windows\include;%(AdditionalIncludeDirectories) MultiThreadedDebugDLL 4005;4273;4090; $(OutDir)$(TargetName)$(TargetExt) advapi32.lib;%(AdditionalDependencies) ..\lib false WIN32; ..\..\windows\include;..\libyara;%(AdditionalIncludeDirectories) 4005;4273;4090; $(OutDir)$(TargetName)$(TargetExt) advapi32.lib;%(AdditionalDependencies) ..\lib false WIN32;_CRT_SECURE_NO_WARNINGS ..\libyara\regex;..\libyara;..\..\windows\include;%(AdditionalIncludeDirectories) MultiThreadedDLL 4005;4273;4090;%(DisableSpecificWarnings) advapi32.lib;%(AdditionalDependencies) ..\lib WIN32; ..\..\windows\include;..\libyara;%(AdditionalIncludeDirectories) 4005;4273;4090;%(DisableSpecificWarnings) advapi32.lib;%(AdditionalDependencies) ..\lib false yara-2.0.0/windows/yara/000077500000000000000000000000001225703323600150765ustar00rootroot00000000000000yara-2.0.0/windows/yara/getopt.c000066400000000000000000000116041225703323600165460ustar00rootroot00000000000000/* * getopt.c -- * * Standard UNIX getopt function. Code is from BSD. * * Copyright (c) 1987-2002 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * A. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * B. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * C. Neither the names of the copyright holders nor the names of its * contributors may be used to endorse or promote products derived from this * software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* #if !defined(lint) * static char sccsid[] = "@(#)getopt.c 8.2 (Berkeley) 4/2/94"; * #endif */ #include #include #include /* declarations to provide consistent linkage */ extern char *optarg; extern int optind; extern int opterr; int opterr = 1, /* if error message should be printed */ optind = 1, /* index into parent argv vector */ optopt, /* character checked for validity */ optreset; /* reset getopt */ char *optarg; /* argument associated with option */ #define BADCH (int)'?' #define BADARG (int)':' #define EMSG "" /* * getopt -- * Parse argc/argv argument vector. */ int getopt( int nargc, char * const *nargv, const char *ostr) { static char *place = EMSG; /* option letter processing */ char *oli; /* option letter list index */ if (optreset || !*place) { /* update scanning pointer */ optreset = 0; if (optind >= nargc || *(place = nargv[optind]) != '-') { place = EMSG; return (EOF); } if (place[1] && *++place == '-') { /* found "--" */ ++optind; place = EMSG; return (EOF); } } /* option letter okay? */ if ((optopt = (int)*place++) == (int)':' || !(oli = (char*) strchr(ostr, optopt))) { /* * if the user didn't specify '-' as an option, * assume it means EOF. */ if (optopt == (int)'-') return (EOF); if (!*place) ++optind; if (opterr && *ostr != ':') (void)fprintf(stderr, "illegal option -- %c\n", optopt); return (BADCH); } if (*++oli != ':') { /* don't need argument */ optarg = NULL; if (!*place) ++optind; } else { /* need an argument */ if (*place) /* no white space */ optarg = place; else if (nargc <= ++optind) { /* no arg */ place = EMSG; if (*ostr == ':') return (BADARG); if (opterr) (void)fprintf(stderr, "option requires an argument -- %c\n", optopt); return (BADCH); } else /* white space */ optarg = nargv[optind]; place = EMSG; ++optind; } return (optopt); /* dump back option letter */ }yara-2.0.0/windows/yara/yara.sln000066400000000000000000000056541225703323600165620ustar00rootroot00000000000000 Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libyara", "..\libyara\libyara.vcxproj", "{632EE910-8B6F-A478-8D69-83878CE26140}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "yara", "yara.vcxproj", "{E203D7BB-29B9-4152-9208-BB410983CE8C}" ProjectSection(ProjectDependencies) = postProject {632EE910-8B6F-A478-8D69-83878CE26140} = {632EE910-8B6F-A478-8D69-83878CE26140} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "yarac", "..\yarac\yarac.vcxproj", "{C2EE445F-2BA5-4E2D-A9E5-44ADE8CAF8E4}" ProjectSection(ProjectDependencies) = postProject {632EE910-8B6F-A478-8D69-83878CE26140} = {632EE910-8B6F-A478-8D69-83878CE26140} EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {632EE910-8B6F-A478-8D69-83878CE26140}.Debug|Win32.ActiveCfg = Debug|Win32 {632EE910-8B6F-A478-8D69-83878CE26140}.Debug|Win32.Build.0 = Debug|Win32 {632EE910-8B6F-A478-8D69-83878CE26140}.Debug|x64.ActiveCfg = Debug|x64 {632EE910-8B6F-A478-8D69-83878CE26140}.Debug|x64.Build.0 = Debug|x64 {632EE910-8B6F-A478-8D69-83878CE26140}.Release|Win32.ActiveCfg = Release|Win32 {632EE910-8B6F-A478-8D69-83878CE26140}.Release|Win32.Build.0 = Release|Win32 {632EE910-8B6F-A478-8D69-83878CE26140}.Release|x64.ActiveCfg = Release|x64 {632EE910-8B6F-A478-8D69-83878CE26140}.Release|x64.Build.0 = Release|x64 {E203D7BB-29B9-4152-9208-BB410983CE8C}.Debug|Win32.ActiveCfg = Debug|Win32 {E203D7BB-29B9-4152-9208-BB410983CE8C}.Debug|Win32.Build.0 = Debug|Win32 {E203D7BB-29B9-4152-9208-BB410983CE8C}.Debug|x64.ActiveCfg = Debug|x64 {E203D7BB-29B9-4152-9208-BB410983CE8C}.Debug|x64.Build.0 = Debug|x64 {E203D7BB-29B9-4152-9208-BB410983CE8C}.Release|Win32.ActiveCfg = Release|Win32 {E203D7BB-29B9-4152-9208-BB410983CE8C}.Release|Win32.Build.0 = Release|Win32 {E203D7BB-29B9-4152-9208-BB410983CE8C}.Release|x64.ActiveCfg = Release|x64 {E203D7BB-29B9-4152-9208-BB410983CE8C}.Release|x64.Build.0 = Release|x64 {C2EE445F-2BA5-4E2D-A9E5-44ADE8CAF8E4}.Debug|Win32.ActiveCfg = Debug|Win32 {C2EE445F-2BA5-4E2D-A9E5-44ADE8CAF8E4}.Debug|Win32.Build.0 = Debug|Win32 {C2EE445F-2BA5-4E2D-A9E5-44ADE8CAF8E4}.Debug|x64.ActiveCfg = Debug|Win32 {C2EE445F-2BA5-4E2D-A9E5-44ADE8CAF8E4}.Release|Win32.ActiveCfg = Release|Win32 {C2EE445F-2BA5-4E2D-A9E5-44ADE8CAF8E4}.Release|Win32.Build.0 = Release|Win32 {C2EE445F-2BA5-4E2D-A9E5-44ADE8CAF8E4}.Release|x64.ActiveCfg = Release|x64 {C2EE445F-2BA5-4E2D-A9E5-44ADE8CAF8E4}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal yara-2.0.0/windows/yara/yara.vcxproj000066400000000000000000000226421225703323600174550ustar00rootroot00000000000000 Debug Win32 Debug x64 Release Win32 Release x64 {E203D7BB-29B9-4152-9208-BB410983CE8C} Win32Proj yara Application true MultiByte Application true Unicode Application false true MultiByte Application false true NotSet false false $(SolutionDir)\$(Configuration)\ false $(ProjectName)32 false $(ProjectName)64 $(Configuration)\ $(SolutionDir)$(Configuration)\ NotUsing Level3 Disabled WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) ..\..\libyara;..\include;%(AdditionalIncludeDirectories) MultiThreadedDebugDLL Console true libyara32.lib;%(AdditionalDependencies) .\Debug;..\libyara\Debug;%(AdditionalLibraryDirectories) false NotUsing Level3 Disabled WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) ..\..\libyara;..\include;%(AdditionalIncludeDirectories) Console true libyara64.lib;%(AdditionalDependencies) .\Debug;..\libyara\Debug;%(AdditionalLibraryDirectories) false Level3 NotUsing MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) ..\..\libyara;..\include;%(AdditionalIncludeDirectories) MultiThreadedDLL Console false true true .\Release;..\libyara\Release;%(AdditionalLibraryDirectories) libyara32.lib;%(AdditionalDependencies) false false Level3 NotUsing MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) ..\..\libyara;..\include;%(AdditionalIncludeDirectories) Console false true true .\Release;..\libyara\Release;%(AdditionalLibraryDirectories) libyara64.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) false yara-2.0.0/windows/yarac/000077500000000000000000000000001225703323600152415ustar00rootroot00000000000000yara-2.0.0/windows/yarac/getopt.c000066400000000000000000000114151225703323600167110ustar00rootroot00000000000000/* * getopt.c -- * * Standard UNIX getopt function. Code is from BSD. * * Copyright (c) 1987-2002 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * A. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * B. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * C. Neither the names of the copyright holders nor the names of its * contributors may be used to endorse or promote products derived from this * software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* #if !defined(lint) * static char sccsid[] = "@(#)getopt.c 8.2 (Berkeley) 4/2/94"; * #endif */ #include #include #include /* declarations to provide consistent linkage */ extern char *optarg; extern int optind; extern int opterr; int opterr = 1, /* if error message should be printed */ optind = 1, /* index into parent argv vector */ optopt, /* character checked for validity */ optreset; /* reset getopt */ char *optarg; /* argument associated with option */ #define BADCH (int)'?' #define BADARG (int)':' #define EMSG "" /* * getopt -- * Parse argc/argv argument vector. */ int getopt( int nargc, char * const *nargv, const char *ostr) { static char *place = EMSG; /* option letter processing */ char *oli; /* option letter list index */ if (optreset || !*place) { /* update scanning pointer */ optreset = 0; if (optind >= nargc || *(place = nargv[optind]) != '-') { place = EMSG; return (EOF); } if (place[1] && *++place == '-') { /* found "--" */ ++optind; place = EMSG; return (EOF); } } /* option letter okay? */ if ((optopt = (int)*place++) == (int)':' || !(oli = (char*) strchr(ostr, optopt))) { /* * if the user didn't specify '-' as an option, * assume it means EOF. */ if (optopt == (int)'-') return (EOF); if (!*place) ++optind; if (opterr && *ostr != ':') (void)fprintf(stderr, "illegal option -- %c\n", optopt); return (BADCH); } if (*++oli != ':') { /* don't need argument */ optarg = NULL; if (!*place) ++optind; } else { /* need an argument */ if (*place) /* no white space */ optarg = place; else if (nargc <= ++optind) { /* no arg */ place = EMSG; if (*ostr == ':') return (BADARG); if (opterr) (void)fprintf(stderr, "option requires an argument -- %c\n", optopt); return (BADCH); } else /* white space */ optarg = nargv[optind]; place = EMSG; ++optind; } return (optopt); /* dump back option letter */ }yara-2.0.0/windows/yarac/yarac.vcxproj000066400000000000000000000160241225703323600177600ustar00rootroot00000000000000 Debug Win32 Debug x64 Release Win32 Release x64 {C2EE445F-2BA5-4E2D-A9E5-44ADE8CAF8E4} Win32Proj yarac Application true Unicode Application false true Unicode false $(ProjectName)32 false $(ProjectName)32 $(ProjectName)64 $(SolutionDir)\$(Configuration)\ $(Configuration)\ $(ProjectName)64 $(SolutionDir)\$(Configuration)\ Level3 Disabled WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) ..\..\libyara;..\include;%(AdditionalIncludeDirectories) Console true libyara32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) .\Debug;..\libyara\Debug;%(AdditionalLibraryDirectories) Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) ..\..\libyara;..\include;%(AdditionalIncludeDirectories) Console true true true libyara32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) .\Release;..\libyara\Release;%(AdditionalLibraryDirectories) ..\..\libyara;..\include;%(AdditionalIncludeDirectories) WIN32;_CRT_SECURE_NO_WARNINGS libyara64.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) .\Release;..\libyara\Release;%(AdditionalLibraryDirectories) ..\..\libyara;..\include;%(AdditionalIncludeDirectories) WIN32;_CRT_SECURE_NO_WARNINGS libyara64.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) .\Debug;..\libyara\Debug;%(AdditionalLibraryDirectories) yara-2.0.0/yara-python/000077500000000000000000000000001225703323600147235ustar00rootroot00000000000000yara-2.0.0/yara-python/MANIFEST000066400000000000000000000000361225703323600160530ustar00rootroot00000000000000README setup.py yara-python.c yara-2.0.0/yara-python/README000066400000000000000000000132741225703323600156120ustar00rootroot00000000000000 YARA for Python =============== This is a Python extension that gives you access to YARA's powerful features from your own Python scripts. HOW TO BUILD ============ yara-python depends on libyara, a library that implements YARA's core functions. You must build and install YARA in your system before building yara-python. The latest YARA version can be downloaded from: http://yara.googlecode.com/files/yara-1.6.tar.gz After installing YARA you can build yara-python this way: $ tar xzvf yara-python-1.6.tar.gz $ cd yara-python-1.6 $ python setup.py build $ sudo python setup.py install You can test your installation by invoking Python and importing the YARA module: $ python Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:05) [GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import yara >>> In some operating systems (e.g: Ubuntu) you can get an error message like this one: Traceback (most recent call last): File "", line 1, in ? ImportError: libyara.so.0: cannot open shared object file: No such file or directory If you get the previous error you should add the path /usr/local/lib to the loader configuration file: $ sudo su $ echo "/usr/local/lib" >> /etc/ld.so.conf $ ldconfig HOW TO USE ========== Once yara-python is built and installed on your system you can use it as shown below: import yara Then you will need to compile your YARA rules before applying them to your data, the rules can be compiled from a file path: rules = yara.compile(filepath='/foo/bar/myrules') The default argument is 'filepath', so you don't need to explicitly specify its name: rules = yara.compile('/foo/bar/myrules') You can also compile your rules from a file object: fh = open('/foo/bar/myrules') rules = yara.compile(file=fh) fh.close() Or you can compile them directly from a Python string: rules = yara.compile(source='rule dummy { condition: true }') If you want to compile a group of files or strings at the same time you can do it by using the 'filepaths' or 'sources' named arguments: rules = yara.compile(filepaths={ 'namespace1':'/my/path/rules1', 'namespace2':'/my/path/rules2' }) rules = yara.compile(sources={ 'namespace1':'rule dummy { condition: true }', 'namespace2':'rule dummy { condition: false }' }) Notice that both 'filepaths' and 'sources' must be dictionaries with keys of string type. The dictionary keys are used as a namespace identifier, allowing to differentiate between rules with the same name in different sources, as occurs in the second example with the “dummy” name. The compile method also have an optional boolean parameter 'includes' which allows you to control whether or not the include directive should be accepted in the source files, for example: rules = yara.compile('/foo/bar/myrules', includes=False) If the source file contains include directives the previous line would raise an exception. If you are using external variables in your rules you must define those externals variables either while compiling the rules, or while applying the rules to some file. To define your variables at the moment of compilation you should pass the 'externals' parameter to the compile method. For example: rules = yara.compile( '/foo/rules', externals= { 'var1': 'some string', 'var2': 4, 'var3': True }) The 'externals' parameter must be a dictionary with the names of the variables as keys and an associated value of either string, integer or boolean type. In all cases compile returns an instance of the class Rules, which in turn has a match method: matches = rules.match('/foo/bar/myfile') But you can also apply the rules to a Python string: f = fopen('/foo/bar/myfile', 'rb') matches = rules.match(data=f.read()) As in the case of compile, the 'match' method can receive definitions for externals variables in the externals parameter. matches = rules.match( '/foo/bar/myfile', externals= { 'var1': 'some other string', 'var4': 100, }) Externals variables defined during compile-time don’t need to be defined again in subsequent invocations of 'match' method. However you can redefine any variable as needed, or provide additional definitions that weren’t provided during compilation. You can also specify a callback function when invoking match method. The provided function will be called for every rule, no matter if matching or not. Your callback function should expect a single parameter of dictionary type, and should return CALLBACK_CONTINUE to proceed to the next rule or CALLBACK_ABORT to stop applying rules to your data. Here is an example: import yara def mycallback(data): print data yara.CALLBACK_CONTINUE matches = rules.match('/foo/bar/myfile', callback=mycallback) The passed dictionary will be something like this: { 'tags': ['foo', 'bar'], 'matches': True, 'namespace': 'default', 'rule': 'my_rule', 'meta': {}, 'strings': [(81, '$a', 'abc'), (141, '$b', 'def')] } The 'matches' field indicates if the rules matches the data or not. The 'strings' fields is a list of matching strings, with vectors of the form: (, , ) The 'match' method returns a list of instances of the class Match. The instances of this class can be treated as text strings containing the name of the matching rule. For example you can print them: for m in matches: print "%s" % m In some circumstances you may need to explicitly convert the instance of Match to string, for example when comparing it with another string: if str(matches[0]) == 'SomeRuleName': ... The Match class has the same attributes as the dictionary passed to the callback function: -rule -namespace -meta -tags -strings yara-2.0.0/yara-python/setup.py000066400000000000000000000005421225703323600164360ustar00rootroot00000000000000from distutils.core import setup, Extension setup(name='yara-python', version='2.0', author='Victor M. Alvarez', author_email='vmalvarez@virustotal.com', ext_modules=[Extension( name='yara', sources=['yara-python.c'], libraries=['yara'], include_dirs=['../windows/include', '../libyara'], )]) yara-2.0.0/yara-python/setupwin32.py000066400000000000000000000007141225703323600173220ustar00rootroot00000000000000from distutils.core import setup, Extension setup(name='yara-python', version='2.0', author='Victor M. Alvarez', author_email='vmalvarez@virustotal.com', ext_modules=[Extension( name='yara', sources=['yara-python.c'], include_dirs=['../windows/include', '../libyara'], define_macros=[('WIN32', None)], extra_objects=[ '../windows/yara/Release/libyara32.lib'] )]) yara-2.0.0/yara-python/setupwin64.py000066400000000000000000000007101225703323600173230ustar00rootroot00000000000000from distutils.core import setup, Extension setup(name='yara-python', version='2.0', author='Victor M. Alvarez', author_email='vmalvarez@virustotal.com', ext_modules=[Extension( name='yara', sources=['yara-python.c'], include_dirs=['../windows/include', '../libyara'], define_macros=[('WIN32', None)], extra_objects=[ '../windows/yara/Release/libyara64.lib'] )]) yara-2.0.0/yara-python/tests.py000066400000000000000000000550611225703323600164460ustar00rootroot00000000000000import tempfile import binascii import os import sys import unittest import yara PE32_FILE = binascii.unhexlify('\ 4d5a000000000000000000000000000000000000000000000000000000000000\ 0000000000000000000000000000000000000000000000000000000040000000\ 504500004c0101005dbe45450000000000000000e00003010b01080004000000\ 0000000000000000600100006001000064010000000040000100000001000000\ 0400000000000000040000000000000064010000600100000000000002000004\ 0000100000100000000010000010000000000000100000000000000000000000\ 0000000000000000000000000000000000000000000000000000000000000000\ 0000000000000000000000000000000000000000000000000000000000000000\ 0000000000000000000000000000000000000000000000000000000000000000\ 0000000000000000000000000000000000000000000000002e74657874000000\ 0400000060010000040000006001000000000000000000000000000020000060\ 6a2a58c3') ELF32_FILE = binascii.unhexlify('\ 7f454c4601010100000000000000000002000300010000006080040834000000\ a800000000000000340020000100280004000300010000000000000000800408\ 008004086c0000006c0000000500000000100000000000000000000000000000\ b801000000bb2a000000cd8000546865204e65747769646520417373656d626c\ 657220322e30352e303100002e7368737472746162002e74657874002e636f6d\ 6d656e7400000000000000000000000000000000000000000000000000000000\ 000000000000000000000000000000000b000000010000000600000060800408\ 600000000c000000000000000000000010000000000000001100000001000000\ 00000000000000006c0000001f00000000000000000000000100000000000000\ 010000000300000000000000000000008b0000001a0000000000000000000000\ 0100000000000000') ELF64_FILE = binascii.unhexlify('\ 7f454c4602010100000000000000000002003e00010000008000400000000000\ 4000000000000000c80000000000000000000000400038000100400004000300\ 0100000005000000000000000000000000004000000000000000400000000000\ 8c000000000000008c0000000000000000002000000000000000000000000000\ b801000000bb2a000000cd8000546865204e65747769646520417373656d626c\ 657220322e30352e303100002e7368737472746162002e74657874002e636f6d\ 6d656e7400000000000000000000000000000000000000000000000000000000\ 0000000000000000000000000000000000000000000000000000000000000000\ 00000000000000000b0000000100000006000000000000008000400000000000\ 80000000000000000c0000000000000000000000000000001000000000000000\ 0000000000000000110000000100000000000000000000000000000000000000\ 8c000000000000001f0000000000000000000000000000000100000000000000\ 0000000000000000010000000300000000000000000000000000000000000000\ ab000000000000001a0000000000000000000000000000000100000000000000\ 0000000000000000') # The 3 possible outcomes for each pattern [SUCCEED, FAIL, SYNTAX_ERROR] = range(3) RE_TESTS = [ # RE, string, expected result, expected matching (')', '', SYNTAX_ERROR), ('abc', 'abc', SUCCEED, 'abc'), ('abc', 'xbc', FAIL), ('abc', 'axc', FAIL), ('abc', 'abx', FAIL), ('abc', 'xabcx', SUCCEED, 'abc'), ('abc', 'ababc', SUCCEED, 'abc'), ('a.c', 'abc', SUCCEED, 'abc'), ('a.b', 'a\nb', FAIL), ('a.*b', 'acc\nccb', FAIL), ('a.{4,5}b', 'acc\nccb', FAIL), ('a.b', 'a\rb', SUCCEED, 'a\rb'), ('ab*c', 'abc', SUCCEED, 'abc'), ('ab*c', 'ac', SUCCEED, 'ac'), ('ab*bc', 'abc', SUCCEED, 'abc'), ('ab*bc', 'abbc', SUCCEED, 'abbc'), ('a.*c', 'ac', SUCCEED, 'ac'), ('a.*c', 'axyzc', SUCCEED, 'axyzc'), ('ab+c', 'abbc', SUCCEED, 'abbc'), ('ab+c', 'ac', FAIL), ('ab+', 'abbbb', SUCCEED, 'abbbb'), ('ab+?', 'abbbb', SUCCEED, 'ab'), ('ab+bc', 'abc', FAIL), ('ab+bc', 'abq', FAIL), ('a+b+c', 'aabbabc', SUCCEED, 'abc'), ('ab?bc', 'abbbbc', FAIL), ('ab?c', 'abc', SUCCEED, 'abc'), ('ab*?', 'abbb', SUCCEED, 'a'), ('ab?c', 'abc', SUCCEED, 'abc'), ('ab??', 'ab', SUCCEED, 'a'), ('a(b|x)c', 'abc', SUCCEED, 'abc'), ('a(b|x)c', 'axc', SUCCEED, 'axc'), ('a(b|.)c', 'axc', SUCCEED, 'axc'), ('a(b|x|y)c', 'ayc', SUCCEED, 'ayc'), ('(a+|b)*', 'ab', SUCCEED, 'ab'), ('a|b|c|d|e', 'e', SUCCEED, 'e'), ('(a|b|c|d|e)f', 'ef', SUCCEED, 'ef'), ('ab{1}c', 'abc', SUCCEED, 'abc'), ('ab{1,2}c', 'abbc', SUCCEED, 'abbc'), ('ab{1,}c', 'abbbc', SUCCEED, 'abbbc'), ('ab{1,}b', 'ab', FAIL), ('ab{1}c', 'abbc', FAIL), ('ab{0,}c', 'ac', SUCCEED, 'ac'), ('ab{0,}c', 'abbbc', SUCCEED, 'abbbc'), ('ab{,3}c', 'abbbc', SUCCEED, 'abbbc'), ('ab{,2}c', 'abbbc', FAIL), ('ab{.*}', 'ab{c}', SUCCEED, 'ab{c}'), ('(ab{1,2}c){1,3}', 'abbcabc', SUCCEED, 'abbcabc'), ('ab(c|cc){1,3}d', 'abccccccd', SUCCEED, 'abccccccd'), ('a[bx]c', 'abc', SUCCEED, 'abc'), ('a[bx]c', 'axc', SUCCEED, 'axc'), ('a[0-9]*b', 'ab', SUCCEED, 'ab'), ('a[0-9]*b', 'a0123456789b', SUCCEED, 'a0123456789b'), ('[0-9a-f]+', '0123456789abcdef', SUCCEED, '0123456789abcdef'), ('[0-9a-f]+', 'xyz0123456789xyz', SUCCEED, '0123456789'), ('[x-z]+', 'abc', FAIL), ('a[-]?c', 'ac', SUCCEED, 'ac'), ('a[-b]', 'a-', SUCCEED, 'a-'), ('a[-b]', 'ab', SUCCEED, 'ab'), ('a[b-]', 'a-', SUCCEED, 'a-'), ('a[b-]', 'ab', SUCCEED, 'ab'), ('[a-c-e]', 'b', SUCCEED, 'b'), ('[a-c-e]', '-', SUCCEED, '-'), ('[a-c-e]', 'd', FAIL), ('[b-a]', '', SYNTAX_ERROR), ('(abc', '', SYNTAX_ERROR), ('abc)', '', SYNTAX_ERROR), ('a[]b', '', SYNTAX_ERROR), ('a\\', '', SYNTAX_ERROR), ('a[\\-b]', 'a-', SUCCEED, 'a-'), ('a[\\-b]', 'ab', SUCCEED, 'ab'), ('a[\\', '', SYNTAX_ERROR), ('a]', 'a]', SUCCEED, 'a]'), ('a[]]b', 'a]b', SUCCEED, 'a]b'), ('a[\]]b', 'a]b', SUCCEED, 'a]b'), ('a[^bc]d', 'aed', SUCCEED, 'aed'), ('a[^bc]d', 'abd', FAIL), ('a[^-b]c', 'adc', SUCCEED, 'adc'), ('a[^-b]c', 'a-c', FAIL), ('a[^]b]c', 'a]c', FAIL), ('a[^]b]c', 'adc', SUCCEED, 'adc'), ('[^ab]*', 'cde', SUCCEED, 'cde'), (')(', '', SYNTAX_ERROR), (r'\n\r\t\f\a', '\n\r\t\f\a', SUCCEED, '\n\r\t\f\a'), (r'[\n][\r][\t][\f][\a]', '\n\r\t\f\a', SUCCEED, '\n\r\t\f\a'), (r'\x00\x01\x02', '\x00\x01\x02', SUCCEED, '\x00\x01\x02'), (r'[\x00-\x02]+', '\x00\x01\x02', SUCCEED, '\x00\x01\x02'), (r'[\x00-\x02]+', '\x03\x04\x05', FAIL), ('a\wc', 'abc', SUCCEED, 'abc'), ('a\wc', 'a_c', SUCCEED, 'a_c'), ('a\wc', 'a0c', SUCCEED, 'a0c'), ('a\wc', 'a*c', FAIL), ('\w+', '--ab_cd0123--', SUCCEED, 'ab_cd0123'), ('[\w]+', '--ab_cd0123--', SUCCEED, 'ab_cd0123'), ('\D+', '1234abc5678', SUCCEED, 'abc'), ('[\D]+', '1234abc5678', SUCCEED, 'abc'), ('[\da-fA-F]+', '123abc', SUCCEED, '123abc'), ('^(ab|cd)e', 'abcde', FAIL), ('(abc|)ef', 'abcdef', SUCCEED, 'ef'), ('(abc|)ef', 'abcef', SUCCEED, 'abcef'), # This is allowed in most regexp engines but in order to keep the # grammar free of shift/reduce conflicts I've decided not supporting # it. Users can use the (abc|) form instead. ('(|abc)ef', '', SYNTAX_ERROR), ('((a)(b)c)(d)', 'abcd', SUCCEED, 'abcd'), ('(a|b)c*d', 'abcd', SUCCEED, 'bcd'), ('(ab|ab*)bc', 'abc', SUCCEED, 'abc'), ('a([bc]*)c*', 'abc', SUCCEED, 'abc'), ('a([bc]*)c*', 'ac', SUCCEED, 'ac'), ('a([bc]*)c*', 'a', SUCCEED, 'a'), ('a([bc]*)(c*d)', 'abcd', SUCCEED, 'abcd'), ('a([bc]+)(c*d)', 'abcd', SUCCEED, 'abcd'), ('a([bc]*)(c+d)', 'abcd', SUCCEED, 'abcd'), ('a[bcd]*dcdcde', 'adcdcde', SUCCEED, 'adcdcde'), ('a[bcd]+dcdcde', 'adcdcde', FAIL), (r'\((.*), (.*)\)', '(a, b)', SUCCEED, '(a, b)'), ('abc|123$', 'abcx', SUCCEED, 'abc'), ('abc|123$', '123x', FAIL), ('abc|^123', '123', SUCCEED, '123'), ('abc|^123', 'x123', FAIL), ('^a(bc+|b[eh])g|.h$', 'abhg', SUCCEED, 'abhg'), ('(bc+d$|ef*g.|h?i(j|k))', 'effgz', SUCCEED, 'effgz'), ('(bc+d$|ef*g.|h?i(j|k))', 'ij', SUCCEED, 'ij'), ('(bc+d$|ef*g.|h?i(j|k))', 'effg', FAIL), ('(bc+d$|ef*g.|h?i(j|k))', 'bcdd', FAIL), ('(bc+d$|ef*g.|h?i(j|k))', 'reffgz', SUCCEED, 'effgz'), ] class TestYara(unittest.TestCase): def assertTrueRules(self, rules, data='dummy'): for r in rules: r = yara.compile(source=r) self.assertTrue(r.match(data=data)) def assertFalseRules(self, rules, data='dummy'): for r in rules: r = yara.compile(source=r) self.assertFalse(r.match(data=data)) def runReTest(self, test): regexp = test[0] string = test[1] expected_result = test[2] source = 'rule test { strings: $a = /%s/ condition: $a }' % regexp if expected_result == SYNTAX_ERROR: self.assertRaises(yara.SyntaxError, yara.compile, source=source) else: rule = yara.compile(source=source) matches = rule.match(data=string) if expected_result == SUCCEED: self.assertTrue(matches) _, _, matching_string = matches[0].strings[0] if sys.version_info[0] >= 3: self.assertTrue(matching_string == bytes(test[3], 'utf-8')) else: self.assertTrue(matching_string == test[3]) else: self.assertFalse(matches) def testBooleanOperators(self): self.assertTrueRules([ 'rule test { condition: true }', 'rule test { condition: true or false }', 'rule test { condition: true and true }' ]) self.assertFalseRules([ 'rule test { condition: false }', 'rule test { condition: true and false }', 'rule test { condition: false or false }' ]) def testComparisonOperators(self): self.assertTrueRules([ 'rule test { condition: 2 > 1 }', 'rule test { condition: 1 < 2 }', 'rule test { condition: 2 >= 1 }', 'rule test { condition: 1 <= 1 }', 'rule test { condition: 1 == 1 }' ]) self.assertFalseRules([ 'rule test { condition: 1 != 1}', 'rule test { condition: 2 > 3}', ]) def testArithmeticOperators(self): self.assertTrueRules([ 'rule test { condition: (1 + 1) * 2 == (9 - 1) \ 2 }', 'rule test { condition: 5 % 2 == 1 }' ]) def testBitwiseOperators(self): self.assertTrueRules([ 'rule test { condition: 0x55 | 0xAA == 0xFF }', 'rule test { condition: ~0xAA ^ 0x5A & 0xFF == 0x0F }', 'rule test { condition: ~0x55 & 0xFF == 0xAA }', 'rule test { condition: 8 >> 2 == 2 }', 'rule test { condition: 1 << 3 == 8 }' ]) def testStrings(self): self.assertTrueRules([ 'rule test { strings: $a = "a" condition: $a }', 'rule test { strings: $a = "abc" condition: $a }', 'rule test { strings: $a = "xyz" condition: $a }', 'rule test { strings: $a = "abc" nocase fullword condition: $a }', 'rule test { strings: $a = "aBc" nocase condition: $a }', 'rule test { strings: $a = "abc" fullword condition: $a }', ], "---- abc ---- xyz") self.assertTrueRules([ 'rule test { strings: $a = "a" wide condition: $a }', 'rule test { strings: $a = "abc" wide condition: $a }', 'rule test { strings: $a = "abc" wide nocase fullword condition: $a }', 'rule test { strings: $a = "aBc" wide nocase condition: $a }', 'rule test { strings: $a = "---xyz" wide nocase condition: $a }' ], "---- a\x00b\x00c\x00 -\x00-\x00-\x00-\x00x\x00y\x00z\x00") self.assertTrueRules([ 'rule test { strings: $a = "abc" fullword condition: $a }', ], "abc") self.assertFalseRules([ 'rule test { strings: $a = "abc" fullword condition: $a }', ], "xabcx") self.assertFalseRules([ 'rule test { strings: $a = "abc" fullword condition: $a }', ], "xabc") self.assertFalseRules([ 'rule test { strings: $a = "abc" fullword condition: $a }', ], "abcx") self.assertTrueRules([ 'rule test { strings: $a = "abc" wide fullword condition: $a }', ], "a\x00b\x00c\x00") self.assertFalseRules([ 'rule test { strings: $a = "abc" wide fullword condition: $a }', ], "x\x00a\x00b\x00c\x00x\x00") self.assertFalseRules([ 'rule test { strings: $a = "abc" wide fullword condition: $a }', ], "x\x00a\x00b\x00c\x00") self.assertTrueRules([ 'rule test { strings: $a = "abc" wide fullword condition: $a }', ], "x\x01a\x00b\x00c\x00") self.assertTrueRules([ 'rule test {\ strings:\ $a = "abcdef"\ $b = "cdef"\ $c = "ef"\ condition:\ all of them\ }' ], 'abcdef') def testWildcardStrings(self): self.assertTrueRules([ 'rule test {\ strings:\ $s1 = "abc"\ $s2 = "xyz"\ condition:\ for all of ($*) : ($)\ }' ], "---- abc ---- A\x00B\x00C\x00 ---- xyz") def testHexStrings(self): self.assertTrueRules([ 'rule test { strings: $a = { 64 01 00 00 60 01 } condition: $a }', 'rule test { strings: $a = { 64 0? 00 00 ?0 01 } condition: $a }', 'rule test { strings: $a = { 64 01 [1-3] 60 01 } condition: $a }', 'rule test { strings: $a = { 64 01 [1-3] (60|61) 01 } condition: $a }', 'rule test { strings: $a = { 4D 5A [-] 6A 2A [-] 58 C3} condition: $a }', 'rule test { strings: $a = { 4D 5A [300-] 6A 2A [-] 58 C3} condition: $a }' ], PE32_FILE) self.assertFalseRules([ 'rule test { strings: $a = { 4D 5A [0-300] 6A 2A } condition: $a }' ], PE32_FILE) self.assertTrueRules([ 'rule test { strings: $a = { 31 32 [-] 38 39 } condition: $a }', 'rule test { strings: $a = { 31 32 [-] 33 34 [-] 38 39 } condition: $a }', 'rule test { strings: $a = { 31 32 [1] 34 35 [2] 38 39 } condition: $a }', 'rule test { strings: $a = { 31 32 [1-] 34 35 [1-] 38 39 } condition: $a }', 'rule test { strings: $a = { 31 32 [0-3] 34 35 [1-] 38 39 } condition: $a }', ], '123456789') self.assertFalseRules([ 'rule test { strings: $a = { 31 32 [-] 32 33 } condition: $a }', 'rule test { strings: $a = { 35 36 [-] 31 32 } condition: $a }', 'rule test { strings: $a = { 31 32 [2-] 34 35 } condition: $a }', 'rule test { strings: $a = { 31 32 [0-3] 37 38 } condition: $a }', ], '123456789') rules = yara.compile(source='rule test { strings: $a = { 61 [0-3] (62|63) } condition: $a }') matches = rules.match(data='abbb') self.assertTrue(matches[0].strings == [(0L, '$a', 'ab')]) def testCount(self): self.assertTrueRules([ 'rule test { strings: $a = "ssi" condition: #a == 2 }', ], 'mississippi') def testAt(self): self.assertTrueRules([ 'rule test { strings: $a = "ssi" condition: $a at 2 and $a at 5 }', ], 'mississippi') def testOffset(self): self.assertTrueRules([ 'rule test { strings: $a = "ssi" condition: @a == 2 }', 'rule test { strings: $a = "ssi" condition: @a == @a[1] }', 'rule test { strings: $a = "ssi" condition: @a[2] == 5 }' ], 'mississippi') def testOf(self): self.assertTrueRules([ 'rule test { strings: $a = "ssi" $b = "mis" $c = "oops" condition: any of them }', 'rule test { strings: $a = "ssi" $b = "mis" $c = "oops" condition: 1 of them }', 'rule test { strings: $a = "ssi" $b = "mis" $c = "oops" condition: 2 of them }', 'rule test { strings: $a1 = "dummy1" $b1 = "dummy1" $b2 = "ssi" condition: any of ($a*, $b*) }', ], 'mississipi') self.assertFalseRules([ 'rule test { strings: $a = "ssi" $b = "mis" $c = "oops" condition: all of them }' ], 'mississipi') def testFor(self): self.assertTrueRules([ 'rule test { strings: $a = "ssi" condition: for all i in (1..#a) : (@a[i] >= 2 and @a[i] <= 5) }', 'rule test { strings: $a = "ssi" $b = "mi" condition: for all i in (1..#a) : ( for all j in (1..#b) : (@a[i] >= @b[j])) }' ], 'mississipi') self.assertFalseRules([ 'rule test { strings: $a = "ssi" condition: for all i in (1..#a) : (@a[i] == 5) }', ], 'mississipi') def testRE(self): self.assertTrueRules([ 'rule test { strings: $a = /ssi/ condition: $a }', 'rule test { strings: $a = /ssi(s|p)/ condition: $a }', 'rule test { strings: $a = /ssim*/ condition: $a }', 'rule test { strings: $a = /ssa?/ condition: $a }', 'rule test { strings: $a = /Miss/ nocase condition: $a }', 'rule test { strings: $a = /(M|N)iss/ nocase condition: $a }', 'rule test { strings: $a = /[M-N]iss/ nocase condition: $a }', 'rule test { strings: $a = /(Mi|ssi)ssippi/ nocase condition: $a }', 'rule test { strings: $a = /ppi\tmi/ condition: $a }', 'rule test { strings: $a = /ppi\.mi/ condition: $a }', 'rule test { strings: $a = /^mississippi/ fullword condition: $a }', ], 'mississippi\tmississippi.mississippi') self.assertFalseRules([ 'rule test { strings: $a = /^ssi/ condition: $a }', 'rule test { strings: $a = /ssi$/ condition: $a }', 'rule test { strings: $a = /ssissi/ fullword condition: $a }' ], 'mississippi') for test in RE_TESTS: try: self.runReTest(test) except Exception as e: print('\nFailed test: %s\n' % str(test)) raise e def testEntrypoint(self): self.assertTrueRules([ 'rule test { strings: $a = { 6a 2a 58 c3 } condition: $a at entrypoint }', ], PE32_FILE) self.assertTrueRules([ 'rule test { strings: $a = { b8 01 00 00 00 bb 2a } condition: $a at entrypoint }', ], ELF32_FILE) self.assertTrueRules([ 'rule test { strings: $a = { b8 01 00 00 00 bb 2a } condition: $a at entrypoint }', ], ELF64_FILE) self.assertFalseRules([ 'rule test { condition: entrypoint >= 0 }', ]) def testFilesize(self): self.assertTrueRules([ 'rule test { condition: filesize == %d }' % len(PE32_FILE), ], PE32_FILE) def testCompileFile(self): f = tempfile.TemporaryFile('wt') f.write('rule test { condition: true }') f.flush() f.seek(0) r = yara.compile(file=f) self.assertTrue(r.match(data=PE32_FILE)) def testCompileFiles(self): tmpdir = tempfile.gettempdir() p1 = os.path.join(tmpdir, 'test1') f1 = open(p1, 'wt') f1.write('rule test1 { condition: true }') f1.close() p2 = os.path.join(tmpdir, 'test2') t2 = open(p2, 'wt') t2.write('rule test2 { condition: true }') t2.close() r = yara.compile(filepaths={ 'test1': p1, 'test2': p2 }) self.assertTrue(len(r.match(data='dummy')) == 2) for m in r.match(data='dummy'): self.assertTrue(m.rule in ('test1', 'test2')) self.assertTrue(m.namespace == m.rule) os.remove(p1) os.remove(p2) def testIncludeFiles(self): tmpdir = tempfile.gettempdir() p1 = os.path.join(tmpdir, 'test1') f1 = open(p1, 'wt') f1.write('rule test1 { condition: true }') f1.close() p2 = os.path.join(tmpdir, 'test2') f2 = open(p2, 'wt') f2.write('include "%s" rule test2 { condition: test1 }' % p1) f2.close() r = yara.compile(p2) self.assertTrue(len(r.match(data='dummy')) == 2) def testExternals(self): r = yara.compile(source='rule test { condition: ext_int == 15 }', externals={'ext_int': 15}) self.assertTrue(r.match(data='dummy')) r = yara.compile(source='rule test { condition: ext_bool }', externals={'ext_bool': True}) self.assertTrue(r.match(data='dummy')) r = yara.compile(source='rule test { condition: ext_bool }', externals={'ext_bool': False}) self.assertFalse(r.match(data='dummy')) r = yara.compile(source='rule test { condition: ext_str contains "ssi" }', externals={'ext_str': 'mississippi'}) self.assertTrue(r.match(data='dummy')) r = yara.compile(source='rule test { condition: ext_str matches /foo/ }', externals={'ext_str': ''}) self.assertFalse(r.match(data='dummy')) r = yara.compile(source='rule test { condition: ext_str matches /foo/ }', externals={'ext_str': 'FOO'}) self.assertFalse(r.match(data='dummy')) r = yara.compile(source='rule test { condition: ext_str matches /foo/i }', externals={'ext_str': 'FOO'}) self.assertTrue(r.match(data='dummy')) r = yara.compile(source='rule test { condition: ext_str matches /ssi(s|p)/ }', externals={'ext_str': 'mississippi'}) self.assertTrue(r.match(data='dummy')) r = yara.compile(source='rule test { condition: ext_str matches /ppi$/ }', externals={'ext_str': 'mississippi'}) self.assertTrue(r.match(data='dummy')) r = yara.compile(source='rule test { condition: ext_str matches /ssi$/ }', externals={'ext_str': 'mississippi'}) self.assertFalse(r.match(data='dummy')) r = yara.compile(source='rule test { condition: ext_str matches /^miss/ }', externals={'ext_str': 'mississippi'}) self.assertTrue(r.match(data='dummy')) r = yara.compile(source='rule test { condition: ext_str matches /ssi$/ }', externals={'ext_str': 'mississippi'}) self.assertFalse(r.match(data='dummy')) def testCallback(self): global rule_data rule_data = None def callback(data): global rule_data rule_data = data return yara.CALLBACK_CONTINUE r = yara.compile(source='rule test { strings: $a = { 50 45 00 00 4c 01 } condition: $a }') r.match(data=PE32_FILE, callback=callback) self.assertTrue(rule_data['matches']) self.assertTrue(rule_data['rule'] == 'test') def testCompare(self): r = yara.compile(sources={ 'test1': 'rule test { condition: true}', 'test2': 'rule test { condition: true}' }) m = r.match(data="dummy") self.assertTrue(len(m) == 2) self.assertTrue(m[0] < m[1]) self.assertTrue(m[0] != m[1]) self.assertFalse(m[0] > m[1]) self.assertFalse(m[0] == m[1]) def testComments(self): self.assertTrueRules([ """ rule test { condition: // this is a comment /*** this is a comment ***/ /* /* /* this is a comment */ true } """, ]) if __name__ == "__main__": unittest.main() yara-2.0.0/yara-python/yara-python.c000066400000000000000000000722331225703323600173510ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ /* headers */ #include #include "structmember.h" #if PY_VERSION_HEX >= 0x02060000 #include "bytesobject.h" #elif PY_VERSION_HEX < 0x02060000 #define PyBytes_AsString PyString_AsString #define PyBytes_Check PyString_Check #endif #include #if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN) typedef int Py_ssize_t; #define PY_SSIZE_T_MAX INT_MAX #define PY_SSIZE_T_MIN INT_MIN #endif #ifndef PyVarObject_HEAD_INIT #define PyVarObject_HEAD_INIT(type, size) PyObject_HEAD_INIT(type) size, #endif #if PY_MAJOR_VERSION >= 3 #define PY_STRING(x) PyUnicode_FromString(x) #define PY_STRING_TO_C(x) PyBytes_AsString(\ PyUnicode_AsEncodedString(x, "utf-8", "Error")) #define PY_STRING_CHECK(x) PyUnicode_Check(x) #else #define PY_STRING(x) PyString_FromString(x) #define PY_STRING_TO_C(x) PyString_AsString(x) #define PY_STRING_CHECK(x) PyString_Check(x) #endif /* Module globals */ static PyObject *YaraError = NULL; static PyObject *YaraSyntaxError = NULL; static PyObject *YaraTimeoutError = NULL; #define YARA_DOC "\ This module allows you to apply YARA rules to files or strings.\n\ \n\ For complete documentation please visit:\n\ http://code.google.com/p/yara-project/\n" // Match object typedef struct { PyObject_HEAD PyObject* rule; PyObject* ns; PyObject* tags; PyObject* meta; PyObject* strings; } Match; static PyMemberDef Match_members[] = { { "rule", T_OBJECT_EX, offsetof(Match, rule), READONLY, "Name of the matching rule" }, { "namespace", T_OBJECT_EX, offsetof(Match, ns), READONLY, "Namespace of the matching rule" }, { "tags", T_OBJECT_EX, offsetof(Match, tags), READONLY, "List of tags associated to the rule" }, { "meta", T_OBJECT_EX, offsetof(Match, meta), READONLY, "Dictionary with metadata associated to the rule" }, { "strings", T_OBJECT_EX, offsetof(Match, strings), READONLY, "Dictionary with offsets and strings that matched the file" }, { NULL } // End marker }; static PyObject * Match_NEW( const char* rule, const char* ns, PyObject* tags, PyObject* meta, PyObject* strings); static void Match_dealloc( PyObject *self); static PyObject * Match_repr( PyObject *self); static PyObject * Match_getattro( PyObject *self, PyObject *name); static PyObject * Match_richcompare( PyObject *self, PyObject *other, int op); static long Match_hash( PyObject *self); static PyMethodDef Match_methods[] = { { NULL }, }; static PyTypeObject Match_Type = { PyVarObject_HEAD_INIT(NULL, 0) "yara.Match", /*tp_name*/ sizeof(Match), /*tp_basicsize*/ 0, /*tp_itemsize*/ (destructor)Match_dealloc, /*tp_dealloc*/ 0, /*tp_print*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ 0, /*tp_compare*/ Match_repr, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ Match_hash, /*tp_hash */ 0, /*tp_call*/ 0, /*tp_str*/ Match_getattro, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/ "Match class", /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ Match_richcompare, /* tp_richcompare */ 0, /* tp_weaklistoffset */ 0, /* tp_iter */ 0, /* tp_iternext */ Match_methods, /* tp_methods */ Match_members, /* tp_members */ 0, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ 0, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ 0, /* tp_init */ 0, /* tp_alloc */ 0, /* tp_new */ }; // Rules object typedef struct { PyObject_HEAD YR_RULES* rules; } Rules; static void Rules_dealloc( PyObject *self); static PyObject * Rules_match( PyObject *self, PyObject *args, PyObject *keywords); static PyObject * Rules_save( PyObject *self, PyObject *args); static PyObject * Rules_getattro( PyObject *self, PyObject *name); static PyMethodDef Rules_methods[] = { { "match", (PyCFunction) Rules_match, METH_VARARGS | METH_KEYWORDS }, { "save", (PyCFunction) Rules_save, METH_VARARGS }, { NULL, NULL } }; static PyTypeObject Rules_Type = { PyVarObject_HEAD_INIT(NULL, 0) "yara.Rules", /*tp_name*/ sizeof(Rules), /*tp_basicsize*/ 0, /*tp_itemsize*/ (destructor)Rules_dealloc, /*tp_dealloc*/ 0, /*tp_print*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ 0, /*tp_compare*/ 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash */ 0, /*tp_call*/ 0, /*tp_str*/ Rules_getattro, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/ "Rules class", /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ 0, /* tp_weaklistoffset */ 0, /* tp_iter */ 0, /* tp_iternext */ Rules_methods, /* tp_methods */ 0, /* tp_members */ 0, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ 0, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ 0, /* tp_init */ 0, /* tp_alloc */ 0, /* tp_new */ }; typedef struct _CALLBACK_DATA { PyObject *matches; PyObject *callback; } CALLBACK_DATA; int yara_callback( int message, YR_RULE* rule, void* data) { YR_STRING* string; YR_MATCH* m; YR_META* meta; char* tag_name; size_t tag_length; PyObject* tag_list = NULL; PyObject* string_list = NULL; PyObject* meta_list = NULL; PyObject* match; PyObject* callback_dict; PyObject* object; PyObject* tuple; PyObject* matches = ((CALLBACK_DATA*) data)->matches; PyObject* callback = ((CALLBACK_DATA*) data)->callback; PyObject* callback_result; PyGILState_STATE gil_state; int result = CALLBACK_CONTINUE; if (message == CALLBACK_MSG_SCAN_FINISHED) return CALLBACK_CONTINUE; if (message == CALLBACK_MSG_RULE_NOT_MATCHING && callback == NULL) return CALLBACK_CONTINUE; gil_state = PyGILState_Ensure(); tag_list = PyList_New(0); string_list = PyList_New(0); meta_list = PyDict_New(); if (tag_list == NULL || string_list == NULL || meta_list == NULL) { Py_XDECREF(tag_list); Py_XDECREF(string_list); Py_XDECREF(meta_list); PyGILState_Release(gil_state); return CALLBACK_ERROR; } tag_name = rule->tags; tag_length = tag_name != NULL ? strlen(tag_name) : 0; while (tag_length > 0) { object = PY_STRING(tag_name); PyList_Append(tag_list, object); Py_DECREF(object); tag_name += tag_length + 1; tag_length = strlen(tag_name); } meta = rule->metas; while(!META_IS_NULL(meta)) { if (meta->type == META_TYPE_INTEGER) object = Py_BuildValue("I", meta->integer); else if (meta->type == META_TYPE_BOOLEAN) object = PyBool_FromLong(meta->integer); else object = PY_STRING(meta->string); PyDict_SetItemString(meta_list, meta->identifier, object); Py_DECREF(object); meta++; } string = rule->strings; while (!STRING_IS_NULL(string)) { if (STRING_FOUND(string)) { m = STRING_MATCHES(string).head; while (m != NULL) { object = PyBytes_FromStringAndSize((char*) m->data, m->length); tuple = Py_BuildValue( "(L,s,O)", m->offset, string->identifier, object); PyList_Append(string_list, tuple); Py_DECREF(object); Py_DECREF(tuple); m = m->next; } } string++; } if (message == CALLBACK_MSG_RULE_MATCHING) { match = Match_NEW( rule->identifier, rule->ns->name, tag_list, meta_list, string_list); if (match != NULL) { PyList_Append(matches, match); Py_DECREF(match); } else { Py_DECREF(tag_list); Py_DECREF(string_list); Py_DECREF(meta_list); PyGILState_Release(gil_state); return CALLBACK_ERROR; } } if (callback != NULL) { Py_INCREF(callback); callback_dict = PyDict_New(); object = PyBool_FromLong(message == CALLBACK_MSG_RULE_MATCHING); PyDict_SetItemString(callback_dict, "matches", object); Py_DECREF(object); object = PY_STRING(rule->identifier); PyDict_SetItemString(callback_dict, "rule", object); Py_DECREF(object); object = PY_STRING(rule->ns->name); PyDict_SetItemString(callback_dict, "namespace", object); Py_DECREF(object); PyDict_SetItemString(callback_dict, "tags", tag_list); PyDict_SetItemString(callback_dict, "meta", meta_list); PyDict_SetItemString(callback_dict, "strings", string_list); callback_result = PyObject_CallFunctionObjArgs( callback, callback_dict, NULL); if (callback_result != NULL) { #if PY_MAJOR_VERSION >= 3 if (PyLong_Check(callback_result)) #else if (PyLong_Check(callback_result) || PyInt_Check(callback_result)) #endif { result = (int) PyLong_AsLong(callback_result); } Py_DECREF(callback_result); } else { result = CALLBACK_ERROR; } Py_DECREF(callback_dict); Py_DECREF(callback); } Py_DECREF(tag_list); Py_DECREF(string_list); Py_DECREF(meta_list); PyGILState_Release(gil_state); return result; } int process_compile_externals( PyObject* externals, YR_COMPILER* compiler) { PyObject *key, *value; Py_ssize_t pos = 0; char* identifier = NULL; while (PyDict_Next(externals, &pos, &key, &value)) { identifier = PY_STRING_TO_C(key); if (PyBool_Check(value)) { yr_compiler_define_boolean_variable( compiler, identifier, PyObject_IsTrue(value)); } #if PY_MAJOR_VERSION >= 3 else if (PyLong_Check(value)) #else else if (PyLong_Check(value) || PyInt_Check(value)) #endif { yr_compiler_define_integer_variable( compiler, identifier, PyLong_AsLong(value)); } else if (PY_STRING_CHECK(value)) { yr_compiler_define_string_variable( compiler, identifier, PY_STRING_TO_C(value)); } else { return FALSE; } } return TRUE; } int process_match_externals( PyObject* externals, YR_RULES* rules) { PyObject *key, *value; Py_ssize_t pos = 0; char* identifier = NULL; while (PyDict_Next(externals, &pos, &key, &value)) { identifier = PY_STRING_TO_C(key); if (PyBool_Check(value)) { yr_rules_define_boolean_variable( rules, identifier, PyObject_IsTrue(value)); } #if PY_MAJOR_VERSION >= 3 else if (PyLong_Check(value)) #else else if (PyLong_Check(value) || PyInt_Check(value)) #endif { yr_rules_define_integer_variable( rules, identifier, PyLong_AsLong(value)); } else if (PY_STRING_CHECK(value)) { yr_rules_define_string_variable( rules, identifier, PY_STRING_TO_C(value)); } else { return FALSE; } } return TRUE; } PyObject* handle_error( int error, char* extra) { switch(error) { case ERROR_COULD_NOT_ATTACH_TO_PROCESS: return PyErr_Format( YaraError, "access denied"); case ERROR_INSUFICIENT_MEMORY: return PyErr_NoMemory(); case ERROR_COULD_NOT_OPEN_FILE: return PyErr_Format( YaraError, "could not open file \"%s\"", extra); case ERROR_COULD_NOT_MAP_FILE: return PyErr_Format( YaraError, "could not map file \"%s\" into memory", extra); case ERROR_ZERO_LENGTH_FILE: return PyErr_Format( YaraError, "zero length file \"%s\"", extra); case ERROR_INVALID_FILE: return PyErr_Format( YaraError, "invalid rules file \"%s\"", extra); case ERROR_CORRUPT_FILE: return PyErr_Format( YaraError, "corrupt rules file \"%s\"", extra); case ERROR_SCAN_TIMEOUT: return PyErr_Format( YaraTimeoutError, "scanning timed out"); default: return PyErr_Format( YaraError, "internal error: %d", error); } } static PyObject * Match_NEW( const char* rule, const char* ns, PyObject* tags, PyObject* meta, PyObject* strings) { Match* object; object = PyObject_NEW(Match, &Match_Type); if (object != NULL) { object->rule = PY_STRING(rule); object->ns = PY_STRING(ns); object->tags = tags; object->meta = meta; object->strings = strings; Py_INCREF(tags); Py_INCREF(meta); Py_INCREF(strings); } return (PyObject *)object; } static void Match_dealloc( PyObject *self) { Match *object = (Match *) self; Py_DECREF(object->rule); Py_DECREF(object->ns); Py_DECREF(object->tags); Py_DECREF(object->meta); Py_DECREF(object->strings); PyObject_Del(self); } static PyObject * Match_repr( PyObject *self) { Match *object = (Match *) self; Py_INCREF(object->rule); return object->rule; } static PyObject * Match_getattro( PyObject *self, PyObject *name) { return PyObject_GenericGetAttr(self, name); } static PyObject * Match_richcompare( PyObject *self, PyObject *other, int op) { PyObject* result = NULL; Match *a = (Match *) self; Match *b = (Match *) other; if(PyObject_TypeCheck(other, &Match_Type)) { switch(op) { case Py_EQ: if (PyObject_RichCompareBool(a->rule, b->rule, Py_EQ) && PyObject_RichCompareBool(a->ns, b->ns, Py_EQ)) result = Py_True; else result = Py_False; Py_INCREF(result); break; case Py_NE: if (PyObject_RichCompareBool(a->rule, b->rule, Py_NE) || PyObject_RichCompareBool(a->ns, b->ns, Py_NE)) result = Py_True; else result = Py_False; Py_INCREF(result); break; case Py_LT: case Py_LE: case Py_GT: case Py_GE: if (PyObject_RichCompareBool(a->rule, b->rule, Py_EQ)) result = PyObject_RichCompare(a->ns, b->ns, op); else result = PyObject_RichCompare(a->rule, b->rule, op); break; } } else { result = PyErr_Format( PyExc_TypeError, "'Match' objects must be compared with objects of the same class"); } return result; } static long Match_hash( PyObject *self) { Match *match = (Match *) self; return PyObject_Hash(match->rule) + PyObject_Hash(match->ns); } //////////////////////////////////////////////////////////////////////////////// static void Rules_dealloc(PyObject *self) { yr_rules_destroy(((Rules*) self)->rules); PyObject_Del(self); } static PyObject * Rules_match( PyObject *self, PyObject *args, PyObject *keywords) { static char *kwlist[] = { "filepath", "pid", "data", "externals", "callback", "fast", "timeout", NULL }; char* filepath = NULL; char* data = NULL; int pid = 0; int timeout = 0; int length; int error; int fast_mode = FALSE; PyObject *externals = NULL; PyObject *fast = NULL; Rules* object = (Rules*) self; CALLBACK_DATA callback_data; callback_data.matches = NULL; callback_data.callback = NULL; if (PyArg_ParseTupleAndKeywords( args, keywords, "|sis#OOOi", kwlist, &filepath, &pid, &data, &length, &externals, &callback_data.callback, &fast, &timeout)) { if (externals != NULL) { if (PyDict_Check(externals)) { if (!process_match_externals(externals, object->rules)) { return PyErr_Format( PyExc_TypeError, "external values must be of type integer, boolean or string"); } } else { return PyErr_Format( PyExc_TypeError, "'externals' must be a dictionary"); } } if (callback_data.callback != NULL) { if (!PyCallable_Check(callback_data.callback)) { return PyErr_Format( YaraError, "callback must be callable"); } } if (fast != NULL) { fast_mode = (PyObject_IsTrue(fast) == 1); } if (filepath != NULL) { callback_data.matches = PyList_New(0); Py_BEGIN_ALLOW_THREADS error = yr_rules_scan_file( object->rules, filepath, yara_callback, &callback_data, fast_mode, timeout); Py_END_ALLOW_THREADS if (error != ERROR_SUCCESS) { Py_DECREF(callback_data.matches); if (error == ERROR_CALLBACK_ERROR) return NULL; else return handle_error(error, filepath); } } else if (data != NULL) { callback_data.matches = PyList_New(0); Py_BEGIN_ALLOW_THREADS error = yr_rules_scan_mem( object->rules, (unsigned char*) data, (unsigned int) length, yara_callback, &callback_data, fast_mode, timeout); Py_END_ALLOW_THREADS if (error != ERROR_SUCCESS) { Py_DECREF(callback_data.matches); if (error == ERROR_CALLBACK_ERROR) return NULL; else return handle_error(error, NULL); } } else if (pid != 0) { callback_data.matches = PyList_New(0); Py_BEGIN_ALLOW_THREADS error = yr_rules_scan_proc( object->rules, pid, yara_callback, &callback_data, fast_mode, timeout); Py_END_ALLOW_THREADS if (error != ERROR_SUCCESS) { Py_DECREF(callback_data.matches); if (error == ERROR_CALLBACK_ERROR) return NULL; else return handle_error(error, NULL); } } else { return PyErr_Format( PyExc_TypeError, "match() takes 1 argument"); } } return callback_data.matches; } static PyObject * Rules_save( PyObject *self, PyObject *args) { char* filepath; int error; Rules* rules = (Rules*) self; if (PyArg_ParseTuple(args, "s", &filepath)) { Py_BEGIN_ALLOW_THREADS error = yr_rules_save(rules->rules, filepath); Py_END_ALLOW_THREADS if (error != ERROR_SUCCESS) return handle_error(error, filepath); Py_INCREF(Py_None); return Py_None; } else { return PyErr_Format( PyExc_TypeError, "save() takes 1 argument"); } } static PyObject * Rules_getattro( PyObject *self, PyObject *name) { return PyObject_GenericGetAttr(self, name); } //////////////////////////////////////////////////////////////////////////////// static PyObject * yara_compile( PyObject *self, PyObject *args, PyObject *keywords) { static char *kwlist[] = { "filepath", "source", "file", "filepaths", "sources", "includes", "externals", NULL}; YR_COMPILER* compiler; YR_RULES* yara_rules; FILE* fh; int fd; int error = 0; int error_line; char error_message[256]; Rules* rules; PyObject *result = NULL; PyObject *file = NULL; PyObject *sources_dict = NULL; PyObject *filepaths_dict = NULL; PyObject *includes = NULL; PyObject *externals = NULL; PyObject *key, *value; Py_ssize_t pos = 0; char* filepath = NULL; char* source = NULL; char* ns = NULL; if (PyArg_ParseTupleAndKeywords( args, keywords, "|ssOOOOO", kwlist, &filepath, &source, &file, &filepaths_dict, &sources_dict, &includes, &externals)) { error = yr_compiler_create(&compiler); if (error != ERROR_SUCCESS) return handle_error(error, NULL); if (includes != NULL) { if (PyBool_Check(includes)) { // PyObject_IsTrue can return -1 in case of error compiler->allow_includes = (PyObject_IsTrue(includes) == 1); } else { yr_compiler_destroy(compiler); return PyErr_Format( PyExc_TypeError, "'includes' param must be of boolean type"); } } if (externals != NULL) { if (PyDict_Check(externals)) { if (!process_compile_externals(externals, compiler)) { yr_compiler_destroy(compiler); return PyErr_Format( PyExc_TypeError, "external values must be of type integer, boolean or string"); } } else { yr_compiler_destroy(compiler); return PyErr_Format( PyExc_TypeError, "'externals' must be a dictionary"); } } if (filepath != NULL) { fh = fopen(filepath, "r"); if (fh != NULL) { Py_BEGIN_ALLOW_THREADS yr_compiler_push_file_name(compiler, filepath); error = yr_compiler_add_file(compiler, fh, NULL); fclose(fh); Py_END_ALLOW_THREADS } else { result = PyErr_SetFromErrno(YaraError); } } else if (source != NULL) { Py_BEGIN_ALLOW_THREADS error = yr_compiler_add_string(compiler, source, NULL); Py_END_ALLOW_THREADS } else if (file != NULL) { fd = dup(PyObject_AsFileDescriptor(file)); Py_BEGIN_ALLOW_THREADS fh = fdopen(fd, "r"); error = yr_compiler_add_file(compiler, fh, NULL); fclose(fh); Py_END_ALLOW_THREADS } else if (sources_dict != NULL) { if (PyDict_Check(sources_dict)) { while (PyDict_Next(sources_dict, &pos, &key, &value)) { source = PY_STRING_TO_C(value); ns = PY_STRING_TO_C(key); if (source != NULL && ns != NULL) { Py_BEGIN_ALLOW_THREADS error = yr_compiler_add_string(compiler, source, ns); Py_END_ALLOW_THREADS if (error > 0) break; } else { result = PyErr_Format( PyExc_TypeError, "keys and values of the 'sources' dictionary must be " "of string type"); break; } } } else { result = PyErr_Format( PyExc_TypeError, "'sources' must be a dictionary"); } } else if (filepaths_dict != NULL) { if (PyDict_Check(filepaths_dict)) { while (PyDict_Next(filepaths_dict, &pos, &key, &value)) { filepath = PY_STRING_TO_C(value); ns = PY_STRING_TO_C(key); if (filepath != NULL && ns != NULL) { fh = fopen(filepath, "r"); if (fh != NULL) { Py_BEGIN_ALLOW_THREADS yr_compiler_push_file_name(compiler, filepath); error = yr_compiler_add_file(compiler, fh, ns); fclose(fh); Py_END_ALLOW_THREADS if (error > 0) break; } else { result = PyErr_SetFromErrno(YaraError); break; } } else { result = PyErr_Format( PyExc_TypeError, "keys and values of the filepaths dictionary must be of " "string type"); break; } } } else { result = PyErr_Format( PyExc_TypeError, "filepaths must be a dictionary"); } } else { result = PyErr_Format( PyExc_TypeError, "compile() takes 1 argument"); } if (PyErr_Occurred() == NULL) { if (error > 0) { error_line = compiler->last_error_line; yr_compiler_get_error_message( compiler, error_message, sizeof(error_message)); result = PyErr_Format( YaraSyntaxError, "line %d: %s", error_line, error_message); } else { rules = PyObject_NEW(Rules, &Rules_Type); if (rules != NULL) { Py_BEGIN_ALLOW_THREADS error = yr_compiler_get_rules(compiler, &yara_rules); Py_END_ALLOW_THREADS if (error == ERROR_SUCCESS) { rules->rules = yara_rules; result = (PyObject*) rules; } else { printf("yr_compiler_get_rules: %d\n", error); result = handle_error(error, NULL); } } else { printf("PyObject_NEW: ERROR_INSUFICIENT_MEMORY\n"); result = handle_error(ERROR_INSUFICIENT_MEMORY, NULL); } } } else { printf("PyErr_Occurred() != NULL\n"); } yr_compiler_destroy(compiler); } return result; } static PyObject * yara_load( PyObject *self, PyObject *args) { int error; char* filepath; Rules* rules; if (PyArg_ParseTuple(args, "s", &filepath)) { rules = PyObject_NEW(Rules, &Rules_Type); Py_BEGIN_ALLOW_THREADS if (rules != NULL) error = yr_rules_load(filepath, &rules->rules); else error = ERROR_INSUFICIENT_MEMORY; Py_END_ALLOW_THREADS if (error != ERROR_SUCCESS) return handle_error(error, filepath); return (PyObject*) rules; } else { return PyErr_Format( PyExc_TypeError, "load() takes 1 argument"); } } static PyMethodDef yara_methods[] = { { "compile", (PyCFunction) yara_compile, METH_VARARGS | METH_KEYWORDS, "Compiles a YARA rules file and returns an instance of class Rules" }, { "load", (PyCFunction) yara_load, METH_VARARGS, "Loads a previously saved YARA rules file and returns an instance of class Rules" }, { NULL, NULL } }; #if PY_MAJOR_VERSION >= 3 #define MOD_ERROR_VAL NULL #define MOD_SUCCESS_VAL(val) val #define MOD_INIT(name) PyMODINIT_FUNC PyInit_##name(void) #define MOD_DEF(ob, name, doc, methods) \ static struct PyModuleDef moduledef = { \ PyModuleDef_HEAD_INIT, name, doc, -1, methods, }; \ ob = PyModule_Create(&moduledef); #else #define MOD_ERROR_VAL #define MOD_SUCCESS_VAL(val) #define MOD_INIT(name) void init##name(void) #define MOD_DEF(ob, name, doc, methods) \ ob = Py_InitModule3(name, methods, doc); #endif MOD_INIT(yara) { PyObject *m; MOD_DEF(m, "yara", YARA_DOC, yara_methods) if (m == NULL) return MOD_ERROR_VAL; /* initialize module variables/constants */ PyModule_AddIntConstant(m, "CALLBACK_CONTINUE", 0); PyModule_AddIntConstant(m, "CALLBACK_ABORT", 1); #if PYTHON_API_VERSION >= 1007 YaraError = PyErr_NewException("yara.Error", PyExc_Exception, NULL); YaraSyntaxError = PyErr_NewException("yara.SyntaxError", YaraError, NULL); YaraTimeoutError = PyErr_NewException("yara.TimeoutError", YaraError, NULL); #else YaraError = Py_BuildValue("s", "yara.Error"); YaraSyntaxError = Py_BuildValue("s", "yara.SyntaxError"); YaraTimeoutError = Py_BuildValue("s", "yara.TimeoutError"); #endif if (PyType_Ready(&Rules_Type) < 0) return MOD_ERROR_VAL; if (PyType_Ready(&Match_Type) < 0) return MOD_ERROR_VAL; PyModule_AddObject(m, "Error", YaraError); PyModule_AddObject(m, "SyntaxError", YaraSyntaxError); PyModule_AddObject(m, "TimeoutError", YaraTimeoutError); yr_initialize(); Py_AtExit(yr_finalize); return MOD_SUCCESS_VAL(m); } yara-2.0.0/yara.c000066400000000000000000000503571225703323600135620ustar00rootroot00000000000000/* Copyright (c) 2013. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #ifndef WIN32 #include #include #include #include #include #else #include #include "getopt.h" #define PRIx64 "llx" #endif #include #include #include #include #include #include "threading.h" #include "config.h" #ifdef DMALLOC #include #endif #define USAGE \ "usage: yara [OPTION]... RULES_FILE FILE | PID\n"\ "options:\n"\ " -t only print rules tagged as .\n"\ " -i only print rules named .\n"\ " -n only print not satisfied rules (negate).\n"\ " -g print tags.\n"\ " -m print metadata.\n"\ " -s print matching strings.\n"\ " -p use the specified of threads to scan a directory.\n"\ " -l abort scanning after matching a number rules.\n"\ " -a abort scanning after a number of seconds has elapsed.\n"\ " -d = define external variable.\n"\ " -r recursively search directories.\n"\ " -f fast matching mode.\n"\ " -w disable warnings.\n"\ " -v show version information.\n" #define EXTERNAL_TYPE_INTEGER 1 #define EXTERNAL_TYPE_BOOLEAN 2 #define EXTERNAL_TYPE_STRING 3 #define ERROR_COULD_NOT_CREATE_THREAD 100 #ifndef MAX_PATH #define MAX_PATH 255 #endif #ifndef min #define min(x, y) ((x < y) ? (x) : (y)) #endif #ifdef _MSC_VER #define snprintf _snprintf #define strdup _strdup #endif #define MAX_QUEUED_FILES 64 typedef struct _TAG { char* identifier; struct _TAG* next; } TAG; typedef struct _IDENTIFIER { char* name; struct _IDENTIFIER* next; } IDENTIFIER; typedef struct _EXTERNAL { char type; char* name; union { char* string; int integer; int boolean; }; struct _EXTERNAL* next; } EXTERNAL; typedef struct _QUEUED_FILE { char* path; } QUEUED_FILE; int recursive_search = FALSE; int show_tags = FALSE; int show_specified_tags = FALSE; int show_specified_rules = FALSE; int show_strings = FALSE; int show_warnings = TRUE; int show_meta = FALSE; int fast_scan = FALSE; int negate = FALSE; int count = 0; int limit = 0; int timeout = 0; int threads = 8; TAG* specified_tags_list = NULL; IDENTIFIER* specified_rules_list = NULL; EXTERNAL* externals_list = NULL; // file_queue is size-limited queue stored as a circular array, files are // removed from queue_head position and new files are added at queue_tail // position. The array has room for one extra element to avoid queue_head // being equal to queue_tail in a full queue. The only situation where // queue_head == queue_tail is when queue is empty. QUEUED_FILE file_queue[MAX_QUEUED_FILES + 1]; int queue_head; int queue_tail; SEMAPHORE used_slots; SEMAPHORE unused_slots; MUTEX queue_mutex; MUTEX output_mutex; void file_queue_init() { queue_tail = 0; queue_head = 0; mutex_init(&queue_mutex); semaphore_init(&used_slots, 0); semaphore_init(&unused_slots, MAX_QUEUED_FILES); } void file_queue_destroy() { mutex_destroy(&queue_mutex); semaphore_destroy(&unused_slots); semaphore_destroy(&used_slots); } void file_queue_finish() { int i; for (i = 0; i < MAX_THREADS; i++) semaphore_release(&used_slots); } void file_queue_put( const char* file_path) { semaphore_wait(&unused_slots); mutex_lock(&queue_mutex); file_queue[queue_tail].path = strdup(file_path); queue_tail = (queue_tail + 1) % (MAX_QUEUED_FILES + 1); mutex_unlock(&queue_mutex); semaphore_release(&used_slots); } char* file_queue_get() { char* result; semaphore_wait(&used_slots); mutex_lock(&queue_mutex); if (queue_head == queue_tail) // queue is empty { result = NULL; } else { result = file_queue[queue_head].path; queue_head = (queue_head + 1) % (MAX_QUEUED_FILES + 1); } mutex_unlock(&queue_mutex); semaphore_release(&unused_slots); return result; } #ifdef WIN32 int is_directory( const char* path) { if (GetFileAttributes(path) & FILE_ATTRIBUTE_DIRECTORY) return TRUE; else return FALSE; } void scan_dir( const char* dir, int recursive, YR_RULES* rules, YR_CALLBACK_FUNC callback) { WIN32_FIND_DATA FindFileData; HANDLE hFind; char full_path[MAX_PATH]; static char path_and_mask[MAX_PATH]; snprintf(path_and_mask, sizeof(path_and_mask), "%s\\*", dir); hFind = FindFirstFile(path_and_mask, &FindFileData); if (hFind != INVALID_HANDLE_VALUE) { do { snprintf(full_path, sizeof(full_path), "%s\\%s", dir, FindFileData.cFileName); if (!(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { file_queue_put(full_path); } else if (recursive && FindFileData.cFileName[0] != '.' ) { scan_dir(full_path, recursive, rules, callback); } } while (FindNextFile(hFind, &FindFileData)); FindClose(hFind); } } #else int is_directory( const char* path) { struct stat st; if (stat(path,&st) == 0) return S_ISDIR(st.st_mode); return 0; } void scan_dir( const char* dir, int recursive, YR_RULES* rules, YR_CALLBACK_FUNC callback) { DIR *dp; struct dirent *de; struct stat st; char full_path[MAX_PATH]; dp = opendir(dir); if (dp) { de = readdir(dp); while (de) { snprintf(full_path, sizeof(full_path), "%s/%s", dir, de->d_name); int err = lstat(full_path, &st); if (err == 0) { if(S_ISREG(st.st_mode)) { file_queue_put(full_path); } else if(recursive && S_ISDIR(st.st_mode) && !S_ISLNK(st.st_mode) && de->d_name[0] != '.') { scan_dir(full_path, recursive, rules, callback); } } de = readdir(dp); } closedir(dp); } } #endif void print_string( uint8_t* data, int length) { int i; char* str; str = (char*) (data); for (i = 0; i < length; i++) { if (str[i] >= 32 && str[i] <= 126) printf("%c", str[i]); else printf("\\x%02X", (uint8_t) str[i]); } printf("\n"); } void print_hex_string( uint8_t* data, int length) { int i; for (i = 0; i < min(32, length); i++) printf("%02X ", (uint8_t) data[i]); if (length > 32) printf("..."); printf("\n"); } void print_scanner_error(int error) { switch (error) { case ERROR_SUCCESS: break; case ERROR_COULD_NOT_ATTACH_TO_PROCESS: fprintf(stderr, "can not attach to process (try running as root)\n"); break; case ERROR_INSUFICIENT_MEMORY: fprintf(stderr, "not enough memory\n"); break; case ERROR_SCAN_TIMEOUT: fprintf(stderr, "scanning timed out\n"); break; case ERROR_COULD_NOT_OPEN_FILE: fprintf(stderr, "could not open file\n"); break; case ERROR_ZERO_LENGTH_FILE: fprintf(stderr, "zero length file\n"); break; case ERROR_UNSUPPORTED_FILE_VERSION: fprintf(stderr, "rules were compiled with a newer version of YARA.\n"); break; case ERROR_CORRUPT_FILE: fprintf(stderr, "corrupt compiled rules file.\n"); break; default: fprintf(stderr, "internal error: %d\n", error); break; } } void print_compiler_error( int error_level, const char* file_name, int line_number, const char* message) { if (error_level == YARA_ERROR_LEVEL_ERROR) { fprintf(stderr, "%s(%d): error: %s\n", file_name, line_number, message); } else { if (show_warnings) fprintf(stderr, "%s(%d): warning: %s\n", file_name, line_number, message); } } int handle_message(int message, YR_RULE* rule, void* data) { TAG* tag; IDENTIFIER* identifier; YR_STRING* string; YR_MATCH* match; YR_META* meta; char* tag_name; size_t tag_length; int is_matching; int string_found; int show = TRUE; if (show_specified_tags) { show = FALSE; tag = specified_tags_list; while (tag != NULL) { tag_name = rule->tags; tag_length = tag_name != NULL ? strlen(tag_name) : 0; while (tag_length > 0) { if (strcmp(tag_name, tag->identifier) == 0) { show = TRUE; break; } tag_name += tag_length + 1; tag_length = strlen(tag_name); } tag = tag->next; } } if (show_specified_rules) { show = FALSE; identifier = specified_rules_list; while (identifier != NULL) { if (strcmp(identifier->name, rule->identifier) == 0) { show = TRUE; break; } identifier = identifier->next; } } is_matching = (message == CALLBACK_MSG_RULE_MATCHING); show = show && ((!negate && is_matching) || (negate && !is_matching)); if (show) { mutex_lock(&output_mutex); printf("%s ", rule->identifier); if (show_tags) { printf("["); tag_name = rule->tags; tag_length = tag_name != NULL ? strlen(tag_name) : 0; while (tag_length > 0) { printf("%s", tag_name); tag_name += tag_length + 1; tag_length = strlen(tag_name); if (tag_length > 0) printf(","); } printf("] "); } // Show meta-data. if (show_meta) { meta = rule->metas; printf("["); while(!META_IS_NULL(meta)) { if (meta->type == META_TYPE_INTEGER) printf("%s=%d", meta->identifier, meta->integer); else if (meta->type == META_TYPE_BOOLEAN) printf("%s=%s", meta->identifier, meta->integer ? "true" : "false"); else printf("%s=\"%s\"", meta->identifier, meta->string); meta++; if (!META_IS_NULL(meta)) printf(","); } printf("] "); } printf("%s\n", (char*) data); // Show matched strings. if (show_strings) { string = rule->strings; while (!STRING_IS_NULL(string)) { string_found = STRING_FOUND(string); if (string_found) { match = STRING_MATCHES(string).head; while (match != NULL) { printf("0x%" PRIx64 ":%s: ", match->offset, string->identifier); if (STRING_IS_HEX(string)) print_hex_string(match->data, match->length); else print_string(match->data, match->length); match = match->next; } } string++; } } mutex_unlock(&output_mutex); } if (is_matching) count++; if (limit != 0 && count >= limit) return CALLBACK_ABORT; return CALLBACK_CONTINUE; } int callback(int message, YR_RULE* rule, void* data) { switch(message) { case CALLBACK_MSG_RULE_MATCHING: case CALLBACK_MSG_RULE_NOT_MATCHING: return handle_message(message, rule, data); } return CALLBACK_ERROR; } #ifdef WIN32 DWORD WINAPI scanning_thread(LPVOID param) #else void* scanning_thread(void* param) #endif { YR_RULES* rules = (YR_RULES*) param; char* file_path; int result; file_path = file_queue_get(); while (file_path != NULL) { result = yr_rules_scan_file( rules, file_path, callback, file_path, fast_scan, timeout); if (result != ERROR_SUCCESS) { mutex_lock(&output_mutex); fprintf(stderr, "Error scanning %s: ", file_path); print_scanner_error(result); mutex_unlock(&output_mutex); } free(file_path); file_path = file_queue_get(); } yr_finalize_thread(); return 0; } void cleanup() { IDENTIFIER* identifier; IDENTIFIER* next_identifier; TAG* tag; TAG* next_tag; EXTERNAL* external; EXTERNAL* next_external; tag = specified_tags_list; while(tag != NULL) { next_tag = tag->next; free(tag); tag = next_tag; } external = externals_list; while(external != NULL) { next_external = external->next; free(external); external = next_external; } identifier = specified_rules_list; while(identifier != NULL) { next_identifier = identifier->next; free(identifier); identifier = next_identifier; } } int is_numeric( const char *str) { while(*str) { if(!isdigit(*str++)) return 0; } return 1; } int process_cmd_line( int argc, char const* argv[]) { char* equal_sign; char* value; int c; TAG* tag; IDENTIFIER* identifier; EXTERNAL* external; opterr = 0; while ((c = getopt (argc, (char**) argv, "wrnsvgma:l:t:i:d:p:f")) != -1) { switch (c) { case 'v': printf("%s\n", PACKAGE_STRING); return 0; case 'r': recursive_search = TRUE; break; case 'g': show_tags = TRUE; break; case 'm': show_meta = TRUE; break; case 's': show_strings = TRUE; break; case 'w': show_warnings = FALSE; break; case 'f': fast_scan = TRUE; break; case 'n': negate = TRUE; break; case 't': show_specified_tags = TRUE; tag = malloc(sizeof(TAG)); if (tag != NULL) { tag->identifier = optarg; tag->next = specified_tags_list; specified_tags_list = tag; } else { fprintf(stderr, "Not enough memory.\n"); return 0; } break; case 'i': show_specified_rules = TRUE; identifier = malloc(sizeof(IDENTIFIER)); if (identifier != NULL) { identifier->name = optarg; identifier->next = specified_rules_list; specified_rules_list = identifier; } else { fprintf(stderr, "Not enough memory.\n"); return 0; } break; case 'd': equal_sign = strchr(optarg, '='); external = malloc(sizeof(EXTERNAL)); if (external != NULL) { external->name = optarg; external->next = externals_list; externals_list = external; } else { fprintf(stderr, "Not enough memory.\n"); return 0; } if (equal_sign != NULL) { *equal_sign = '\0'; value = equal_sign + 1; if (is_numeric(value)) { external->type = EXTERNAL_TYPE_INTEGER; external->integer = atoi(value); } else if (strcmp(value, "true") == 0 || strcmp(value, "false") == 0) { external->type = EXTERNAL_TYPE_BOOLEAN; external->boolean = strcmp(value, "true") == 0; } else { external->type = EXTERNAL_TYPE_STRING; external->string = value; } } break; case 'l': limit = atoi(optarg); break; case 'a': timeout = atoi(optarg); break; case 'p': threads = atoi(optarg); break; case '?': if (optopt == 't') { fprintf(stderr, "Option -%c requires an argument.\n", optopt); } else if (isprint(optopt)) { fprintf(stderr, "Unknown option `-%c'.\n", optopt); } else { fprintf(stderr, "Unknown option character `\\x%x'.\n", optopt); } return 0; default: abort(); } } return 1; } void show_help() { printf(USAGE); printf("\nReport bugs to: <%s>\n", PACKAGE_BUGREPORT); } int main( int argc, char const* argv[]) { YR_COMPILER* compiler; YR_RULES* rules; FILE* rule_file; EXTERNAL* external; int pid; int i; int errors; int result; THREAD thread[MAX_THREADS]; if (!process_cmd_line(argc, argv)) return EXIT_FAILURE; if (argc == 1 || optind == argc) { show_help(); cleanup(); return EXIT_FAILURE; } yr_initialize(); result = yr_rules_load(argv[optind], &rules); if (result == ERROR_UNSUPPORTED_FILE_VERSION || result == ERROR_CORRUPT_FILE) { print_scanner_error(result); yr_finalize(); cleanup(); return EXIT_FAILURE; } if (result == ERROR_SUCCESS) { external = externals_list; while (external != NULL) { switch (external->type) { case EXTERNAL_TYPE_INTEGER: yr_rules_define_integer_variable( rules, external->name, external->integer); break; case EXTERNAL_TYPE_BOOLEAN: yr_rules_define_boolean_variable( rules, external->name, external->boolean); break; case EXTERNAL_TYPE_STRING: yr_rules_define_string_variable( rules, external->name, external->string); break; } external = external->next; } } else { if (yr_compiler_create(&compiler) != ERROR_SUCCESS) { yr_finalize(); cleanup(); return EXIT_FAILURE; } external = externals_list; while (external != NULL) { switch (external->type) { case EXTERNAL_TYPE_INTEGER: yr_compiler_define_integer_variable( compiler, external->name, external->integer); break; case EXTERNAL_TYPE_BOOLEAN: yr_compiler_define_boolean_variable( compiler, external->name, external->boolean); break; case EXTERNAL_TYPE_STRING: yr_compiler_define_string_variable( compiler, external->name, external->string); break; } external = external->next; } compiler->error_report_function = print_compiler_error; rule_file = fopen(argv[optind], "r"); if (rule_file == NULL) { fprintf(stderr, "could not open file: %s\n", argv[optind]); yr_compiler_destroy(compiler); yr_finalize(); cleanup(); return EXIT_FAILURE; } yr_compiler_push_file_name(compiler, argv[optind]); errors = yr_compiler_add_file(compiler, rule_file, NULL); fclose(rule_file); if (errors > 0) { yr_compiler_destroy(compiler); yr_finalize(); cleanup(); return EXIT_FAILURE; } result = yr_compiler_get_rules(compiler, &rules); yr_compiler_destroy(compiler); if (result != ERROR_SUCCESS) { yr_finalize(); cleanup(); return EXIT_FAILURE; } } mutex_init(&output_mutex); if (is_numeric(argv[argc - 1])) { pid = atoi(argv[argc - 1]); result = yr_rules_scan_proc( rules, pid, callback, (void*) argv[argc - 1], fast_scan, timeout); if (result != ERROR_SUCCESS) print_scanner_error(result); } else if (is_directory(argv[argc - 1])) { file_queue_init(); for (i = 0; i < threads; i++) { if (create_thread(&thread[i], scanning_thread, (void*) rules) != 0) { print_scanner_error(ERROR_COULD_NOT_CREATE_THREAD); return EXIT_FAILURE; } } scan_dir( argv[argc - 1], recursive_search, rules, callback); file_queue_finish(); // Wait for scan threads to finish for (i = 0; i < threads; i++) thread_join(&thread[i]); file_queue_destroy(); } else { result = yr_rules_scan_file( rules, argv[argc - 1], callback, (void*) argv[argc - 1], fast_scan, timeout); if (result != ERROR_SUCCESS) { fprintf(stderr, "Error scanning %s: ", argv[argc - 1]); print_scanner_error(result); } } yr_rules_destroy(rules); yr_finalize(); mutex_destroy(&output_mutex); cleanup(); return EXIT_SUCCESS; } yara-2.0.0/yara.man000066400000000000000000000041761225703323600141110ustar00rootroot00000000000000.TH yara 1 "September 22, 2008" "Victor M. Alvarez" .SH NAME yara \- find files matching patterns and rules written in a special-purpose language. .SH SYNOPSIS .B yara [OPTION]... [RULEFILE]... FILE | PID .SH DESCRIPTION .I Yara scans the given .I FILE or the process indentified by .I PID looking if it matches the patterns and rules provided in a special purpose-language. The rules are read from .I RULEFILEs or standard input. .PP The options to .IR yara (1) are: .TP .BI \-t " tag" Print rules tagged as .I tag and ignore the rest. This option can be used multiple times. .TP .BI \-i " identifier" Print rules named .I identifier and ignore the rest. This option can be used multiple times. .TP .B \-n Print rules that doesn't apply (negate) .TP .B \-g Print the tags associated to the rule. .TP .B \-m Print metadata associated to the rule. .TP .B \-s Print strings found in the file. .TP .BI \-p " number" Use the specified .I number of threads to scan a directory. .TP .BI \-l " number" Abort scanning after a .I number of rules matched. .TP .BI \-a " seconds" Abort scanning after a number of .I seconds has elapsed. .TP .BI \-d " identifier"=value Define an external variable. This option can be used multiple times. .TP .B \-r Scan files in directories recursively. .TP .B \-f Speeds up scanning by searching only for the first occurrence of each pattern. .TP .B \-w Disable warnings. .TP .B \-v Show version information. .SH EXAMPLES $ yara /foo/bar/rules1 /foo/bar/rules2 . .RS .PP Apply rules on .I /foo/bar/rules1 and .I /foo/bar/rules2 to all files on current directory. Subdirectories are not scanned. .RE .PP $ yara -t Packer -t Compiler /foo/bar/rules bazfile .RS .PP Apply rules on .I /foo/bar/rules to .I bazfile. Only reports rules tagged as .I Packer or .I Compiler. .RE .PP $ cat /foo/bar/rules1 | yara -r /foo .RS .PP Scan all files in the .I /foo directory and its subdirectories. Rules are read from standard input. .RE .PP $ yara -d mybool=true -d myint=5 -d mystring="my string" /foo/bar/rules bazfile .RS .PP Defines three external variables .I mybool .I myint and .I mystring. .RE .SH AUTHOR Victor M. Alvarez (victor.alvarez@virustotal.com) yara-2.0.0/yarac.c000066400000000000000000000112641225703323600137170ustar00rootroot00000000000000/* Copyright (c) 2007. Victor M. Alvarez [plusvic@gmail.com]. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #ifndef WIN32 #include #include #include #include #else #include #include "getopt.h" #endif #include #include #include #include #include #include "config.h" #ifndef MAX_PATH #define MAX_PATH 255 #endif int show_warnings = TRUE; void show_help() { printf("usage: yarac [OPTION]... [RULE_FILE]... OUTPUT_FILE\n"); printf("options:\n"); printf(" -d = define external variable.\n"); printf(" -w disable warnings.\n"); printf(" -v show version information.\n"); printf("\nReport bugs to: <%s>\n", PACKAGE_BUGREPORT); } int is_numeric( const char *str) { while(*str) { if(!isdigit(*str++)) return 0; } return 1; } int process_cmd_line( YR_COMPILER* compiler, int argc, char const* argv[]) { char* equal_sign; char* value; char c; opterr = 0; while ((c = getopt (argc, (char**) argv, "wvd:")) != -1) { switch (c) { case 'v': printf("%s\n", PACKAGE_STRING); return 0; case 'w': show_warnings = FALSE; break; case 'd': equal_sign = strchr(optarg, '='); if (equal_sign != NULL) { *equal_sign = '\0'; value = equal_sign + 1; if (is_numeric(value)) { yr_compiler_define_integer_variable( compiler, optarg, atol(value)); } else if (strcmp(value, "true") == 0 || strcmp(value, "false") == 0) { yr_compiler_define_boolean_variable( compiler, optarg, strcmp(value, "true") == 0); } else { yr_compiler_define_string_variable( compiler, optarg, value); } } break; case '?': if (isprint(optopt)) { fprintf(stderr, "Unknown option `-%c'.\n", optopt); } else { fprintf(stderr, "Unknown option character `\\x%x'.\n", optopt); } return 0; default: abort(); } } return 1; } void report_error( int error_level, const char* file_name, int line_number, const char* message) { if (error_level == YARA_ERROR_LEVEL_ERROR) { fprintf(stderr, "%s(%d): error: %s\n", file_name, line_number, message); } else { if (show_warnings) fprintf(stderr, "%s(%d): warning: %s\n", file_name, line_number, message); } } int main( int argc, char const* argv[]) { int i, result, errors; YR_COMPILER* compiler; YR_RULES* rules; FILE* rule_file; yr_initialize(); if (yr_compiler_create(&compiler) != ERROR_SUCCESS) { yr_finalize(); return EXIT_FAILURE; } if (!process_cmd_line(compiler, argc, argv)) { yr_compiler_destroy(compiler); yr_finalize(); return EXIT_FAILURE; } if (argc == 1 || optind == argc) { show_help(); yr_compiler_destroy(compiler); yr_finalize(); return EXIT_FAILURE; } compiler->error_report_function = report_error; for (i = optind; i < argc - 1; i++) { rule_file = fopen(argv[i], "r"); if (rule_file != NULL) { yr_compiler_push_file_name(compiler, argv[i]); errors = yr_compiler_add_file(compiler, rule_file, NULL); fclose(rule_file); if (errors) // errors during compilation { yr_compiler_destroy(compiler); yr_finalize(); return EXIT_FAILURE; } } else { fprintf(stderr, "could not open file: %s\n", argv[i]); } } result = yr_compiler_get_rules(compiler, &rules); if (result != ERROR_SUCCESS) { fprintf(stderr, "error: %d\n", result); return EXIT_FAILURE; } result = yr_rules_save(rules, argv[argc - 1]); if (result != ERROR_SUCCESS) { fprintf(stderr, "error: %d\n", result); return EXIT_FAILURE; } yr_rules_destroy(rules); yr_compiler_destroy(compiler); yr_finalize(); return EXIT_SUCCESS; }